Browse Source

initial commit

master
Chakib (spike) Benziane 7 years ago
commit
3da5045bbb
4 changed files with 154 additions and 0 deletions
  1. +26
    -0
      README.rst
  2. +57
    -0
      setup.py
  3. +1
    -0
      tmpbrowse/__init__.py
  4. +70
    -0
      tmpbrowse/tmpbrowse.py

+ 26
- 0
README.rst View File

@ -0,0 +1,26 @@
=====================================
tmpbrowse - Spawn test browser sessions
=====================================
This tool helps you spawn temporary browser sessions (only chrome for instance)
in a sandboxed user dir to securely test your web app without worrying about
clearing cache, extensions ...
Installation
============
Using pypi repository::
$> pip install tmpbrowse
Forking this repo::
$> python setup.py install
Usage
=====
::

+ 57
- 0
setup.py View File

@ -0,0 +1,57 @@
#!/usr/bin/env python
from setuptools import setup, find_packages
import tmpbrowse
import os
def read(*names):
values = dict()
extensions = ['.txt', '.rst']
for name in names:
value = ''
for extension in extensions:
filename = name + extension
if os.path.isfile(filename):
value = open(name + extension).read()
break
values[name] = value
return values
long_description = """
%(README)s
CHANGELOG
=========
%(CHANGES)s
""" % read('README', 'CHANGES')
setup(
name='tmpbrowse',
version=tmpbrowse.__version__,
description='Spawns a temporary browser session for testing with your app development ',
long_description=long_description,
classifiers=[
"Development Status :: 3 - Alpha",
"Environment :: Console",
"Intended Audience :: Developers",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Topic :: Software Development :: Testing",
],
keywords='tmpbrowse browser chrome session test web development',
author='Chakib Benziane',
author_email='chakib.benz@gmail.com',
maintainer='Chakib Benziane',
maintainer_email='chakib.benz@gmail.com',
url='https://github.com/sp4ke/tmpbrowse',
license='MIT',
packages=find_packages(),
entry_points={
'console_scripts': [
'tmpbrowse = tmpbrowse.tmpbrowse:cli_run',
]
},
)

+ 1
- 0
tmpbrowse/__init__.py View File

@ -0,0 +1 @@
__version__ = '0.0.1'

+ 70
- 0
tmpbrowse/tmpbrowse.py View File

@ -0,0 +1,70 @@
#!/usr/bin/env python
import argparse
import os
import subprocess
import shutil
CHROME_BIN = 'google-chrome'
CHROME_PARAMS = '--user-data-dir='
USER_DIRS = os.path.join(os.environ['HOME'], '.chrome_dirs')
class SpawnChrome(object):
def __init__(self, args):
self.my_args = args[0]
self.chrome_args = args[1]
if self.my_args.project_name:
self.project_name = self.my_args.project_name
self.project_path = os.path.join(USER_DIRS, self.project_name)
# check if USER_DIRS exists otherwise make it
if not os.path.exists(USER_DIRS):
os.path.os.mkdir(USER_DIRS)
def mk_project_dir(self):
if not os.path.exists(self.project_path):
os.path.os.mkdir(self.project_path)
def spawn_chrome(self):
# build the base chrome command
chrome_args = [CHROME_BIN] + [CHROME_PARAMS + self.project_path]
# add any additional params passed to chrome
chrome_args += self.chrome_args
print chrome_args
subprocess.call(chrome_args)
def ls_projects(self):
for p in os.listdir(USER_DIRS):
print('* %s' % p)
def rm_project(self, project):
shutil.rmtree(os.path.join(USER_DIRS, project))
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description='Spawn a sandboxed chrome instance per project')
parser.add_argument('-p', '--project-name',
help='Project name to spawn a chrome instance for ')
parser.add_argument('-l', help='List existing chrome project dirs',
action='store_true')
parser.add_argument('-d', '--remove-project',
help='Removes the corresponding project dir from chrome dirs',
nargs=1)
args = parser.parse_known_args()
if args[0].project_name:
spawn = SpawnChrome(args)
spawn.mk_project_dir()
spawn.spawn_chrome()
if args[0].l:
spawn = SpawnChrome(args)
spawn.ls_projects()
if args[0].remove_project:
spawn = SpawnChrome(args)
spawn.rm_project(args[0].remove_project[0])

Loading…
Cancel
Save