diff --git a/.gitignore b/.gitignore index f7f637c..410f969 100644 --- a/.gitignore +++ b/.gitignore @@ -108,6 +108,9 @@ ENV/ logs/*.log.* # QAlab -qalab/configs/settings.hub.json -qalab/configs/settings.node.json -qalab/drivers/selenium-server-standalone-3.5.3.jar +qalab/configs/*.hub.json +qalab/configs/*.node.json +qalab/drivers/selenium-server-standalone-*.jar +qalab/drivers/selendroid-standalone-*.jar +qalab/drivers/selendroid-grid-plugin-*.jar +qalab/apks/*.apk \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 1dc54da..a1b31b1 100755 --- a/.travis.yml +++ b/.travis.yml @@ -24,11 +24,14 @@ before_install: - python setup.py build - python setup.py install install: -- python qalab/qalab.py selenium -m hub -i -- python qalab/qalab.py selenium -m node -i +- python qalab/qalab.py -sd selenium -m hub -i +- python qalab/qalab.py -sd selenium -m node -i +- python qalab/qalab.py -sd selendroid -m hub -i +- python qalab/qalab.py -sd selendroid -m node -i +- python qalab/qalab.py -sd appium -m node -i before_script: -- python qalab/qalab.py selenium -m hub -s -p lin64 & -- python qalab/qalab.py selenium -m node -s -p lin64 & +- python qalab/qalab.py -sd selenium -m hub -s -p lin64 & +- python qalab/qalab.py -sd selenium -m node -s -p lin64 & script: - sleep 10 - nc -z -v -w5 localhost 11000 diff --git a/appveyor.yml b/appveyor.yml index bf31825..307bece 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -18,8 +18,11 @@ environment: install: - "%PYTHON%\\python.exe setup.py install" - - "%PYTHON%\\python.exe qalab\\qalab.py selenium -m hub -i" - - "%PYTHON%\\python.exe qalab\\qalab.py selenium -m node -i" + - "%PYTHON%\\python.exe qalab\\qalab.py -sd selenium -m hub -i" + - "%PYTHON%\\python.exe qalab\\qalab.py -sd selenium -m node -i" + - "%PYTHON%\\python.exe qalab\\qalab.py -sd selendroid -m hub -i" + - "%PYTHON%\\python.exe qalab\\qalab.py -sd selendroid -m node -i" + - "%PYTHON%\\python.exe qalab\\qalab.py -sd appium -m node -i" test_script: - echo "BUILD SUCCESS" diff --git a/modules/qacode b/modules/qacode index ffaa9df..e573257 160000 --- a/modules/qacode +++ b/modules/qacode @@ -1 +1 @@ -Subproject commit ffaa9df0a96ab8b3565a6c45c2d1e65998d714be +Subproject commit e573257c90e99620b28372f0ed2158175b868429 diff --git a/modules/qadmin b/modules/qadmin index 2133062..248644f 160000 --- a/modules/qadmin +++ b/modules/qadmin @@ -1 +1 @@ -Subproject commit 21330621b1a22f71dca7a840d89a9afe64a2b187 +Subproject commit 248644f638a061984f4f4dbf963ca8bbb586231b diff --git a/modules/qadoc b/modules/qadoc index b6ac45f..fdcc1fc 160000 --- a/modules/qadoc +++ b/modules/qadoc @@ -1 +1 @@ -Subproject commit b6ac45f486f087a7d3460d4d1b2307c6d7ec65d9 +Subproject commit fdcc1fca14b6b1a5aee088adf659c5ac338b72f8 diff --git a/qalab/apks/__init__.py b/qalab/apks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/qalab/configs/appium.node.example.json b/qalab/configs/appium.node.example.json new file mode 100644 index 0000000..045dc28 --- /dev/null +++ b/qalab/configs/appium.node.example.json @@ -0,0 +1,29 @@ +{ + "capabilities": [ + { + "platform": "ANDROID", + "version": "6.0", + "maxInstances": 1, + "noSign":true, + "automationName": "Appium", + "browserName": "", + "platformName": "Android", + "platformVersion": "6.0", + "deviceName": "qa-tablet-nexus10", + "orientation": "LANDSCAPE", + "app": "qalab/apks/selendroid-test-app-0.17.0.apk" + } + ], + "configuration": { + "cleanUpCycle": 2000, + "timeout": 30000, + "url": "http://localhost:4723/wd/hub", + "host": "localhost", + "port": 4723, + "maxSession": 1, + "register": true, + "registerCycle": 5000, + "hubPort": 11000, + "hubHost": "localhost" + } +} \ No newline at end of file diff --git a/qalab/configs/debug.keystore b/qalab/configs/debug.keystore new file mode 100644 index 0000000..5434f7e Binary files /dev/null and b/qalab/configs/debug.keystore differ diff --git a/qalab/configs/selendroid.hub.example.json b/qalab/configs/selendroid.hub.example.json new file mode 100644 index 0000000..4cd840c --- /dev/null +++ b/qalab/configs/selendroid.hub.example.json @@ -0,0 +1,13 @@ +{ + "host": "localhost", + "port": 12000, + "newSessionWaitTimeout": -1, + "servlets" : [], + "prioritizer": null, + "capabilityMatcher": "io.selendroid.grid.SelendroidCapabilityMatcher", + "throwOnCapabilityNotPresent": true, + "nodePolling": 5000, + "cleanUpCycle": 5000, + "browserTimeout": 0, + "jettyMaxThreads":-1 +} diff --git a/qalab/configs/selendroid.node.example.json b/qalab/configs/selendroid.node.example.json new file mode 100644 index 0000000..d4cfaa0 --- /dev/null +++ b/qalab/configs/selendroid.node.example.json @@ -0,0 +1,18 @@ +{ + "capabilities": [{ + "browserName": "selendroid", + "maxInstances": 1, + "aut": "io.selendroid.testapp:0.17.0" + }, { + "browserName": "android", + "maxInstances": 1 + }], + "configuration": { + "maxSession": 1, + "register": true, + "hubHost": "localhost", + "hubPort": 12001, + "remoteHost": "http://localhost:12000", + "proxy": "io.selendroid.grid.SelendroidSessionProxy" + } +} \ No newline at end of file diff --git a/qalab/configs/settings.hub.example.json b/qalab/configs/selenium.hub.example.json similarity index 100% rename from qalab/configs/settings.hub.example.json rename to qalab/configs/selenium.hub.example.json diff --git a/qalab/configs/settings.node.example.json b/qalab/configs/selenium.node.example.json similarity index 100% rename from qalab/configs/settings.node.example.json rename to qalab/configs/selenium.node.example.json diff --git a/qalab/configs/settings.appium.example.json b/qalab/configs/settings.appium.example.json deleted file mode 100644 index fbc085c..0000000 --- a/qalab/configs/settings.appium.example.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "capabilities": - [ - { - "applicationName": "vm-Nexus6", - "browserName": "vm-Nexus6", - "version":"6.0", - "maxInstances": 1, - "platform":"ANDROID" - } - ], - "configuration": - { - "cleanUpCycle":2000, - "timeout":30000, - "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", - "host": "192.168.0.50", - "port": 11002, - "maxSession": 1, - "register": true, - "registerCycle": 5000, - "hubPort": 11000, - "hubHost": "192.168.0.50" - } -} \ No newline at end of file diff --git a/qalab/qalab.py b/qalab/qalab.py index 1d2608c..6684c0e 100644 --- a/qalab/qalab.py +++ b/qalab/qalab.py @@ -12,21 +12,99 @@ import subprocess import wget +# SETTINGS start +PATH_CONFIG = 'qalab/configs' +PATH_DRIVERS_MODULE = 'modules/qadrivers/' +PATH_SERVER_DRIVERS = 'qalab/drivers' +PATH_APKS = 'qalab/apks' +WEBDRIVER_ENV_VARS = [ + "-Dwebdriver.chrome.driver=", + "-Dwebdriver.gecko.driver=", + "-Dphantomjs.binary.path=", + "-Dwebdriver.ie.driver=", + "-Dwebdriver.edge.driver=" +] +DRIVERS_NAMES = [ + "chromedriver_32.exe", + "chromedriver_64.exe", + "chromedriver_32", + "chromedriver_64", + "firefoxdriver_32.exe", + "firefoxdriver_64.exe", + "firefoxdriver_32", + "firefoxdriver_64", + "phantomjsdriver_32.exe", + "phantomjsdriver_64.exe", + "phantomjsdriver_32", + "phantomjsdriver_64", + "iexplorerdriver_32.exe", + "iexplorerdriver_64.exe", + "edgedriver_32.exe", + "edgedriver_64.exe" +] +MSG_UNKOWN_COMMAND = "Unknown command : {}" +# SETTINGS end + def main(args=None): """TODO: doc method""" - msg_unkown_command = "Unknown command : {}" + + if args is None: + args = sys.argv[1:] + # Generate parser + parser = parser_instance() + args = parser.parse_args() + # Generate logger + logger = logger_instance(args) + # START SCRIPT + if args.server_driver is None: + logger.error("can't start without server_driver name, option: -sd") + return + if args.server_driver == 'selenium': + command_selenium(args, logger) + elif args.server_driver == 'selendroid': + # FIX: errored + command_selendroid(args, logger) + elif args.server_driver == 'appium': + command_appium(args, logger) + else: + logger.error(str(MSG_UNKOWN_COMMAND.format(args))) + +def parser_instance(): + """TODO: doc method""" + parser = argparse.ArgumentParser( + description="Performs selenium drivers operations", + epilog="----- help us on , https://github.com/netzulo/qalab -------", + fromfile_prefix_chars='@',) + # Main args + parser.add_argument( + '-v', '--verbose', + action="count", help="verbose level... repeat up to three times.") + parser.add_argument( + '-sd', '--server_driver', + default=None, help="Select server driver, values are: [selenium,selendroid]") + # Optional args + parser.add_argument( + '-m', '--mode', + default=None, help="Select mode, values are: [hub, node]") + parser.add_argument( + '-i', '--install', + action="store_true", help="Download driver server jar") + parser.add_argument( + '-s', '--start', + action="store_true", help="Start driver server jar") + parser.add_argument( + '-p', '--platform', + default=None, help="Select mode, values are: [lin32,lin64,win32,win64]") + return parser + +def logger_instance(args): + """TODO: doc method""" msg_file_formatter = "{} [{}]({}:{}:{}): {}".format( - "%(asctime)s", - "%(levelname)s", - "%(name)s", - "%(funcName)s", - "%(lineno)d", - "%(message)s" + "%(asctime)s", "%(levelname)s", "%(name)s", + "%(funcName)s", "%(lineno)d", "%(message)s" ) msg_console_formatter = '[%(levelname)s](%(name)s): %(message)s' - if args is None: - args = sys.argv[1:] logger = logging.getLogger('qalab') logger.setLevel(logging.DEBUG) if not os.path.exists('../logs'): @@ -40,151 +118,221 @@ def main(args=None): console_handler.setLevel(logging.CRITICAL) console_handler.setFormatter(logging.Formatter(msg_console_formatter)) logger.addHandler(console_handler) - ## Generate parser - parser = argparse.ArgumentParser( - description="Performs selenium drivers operations", - epilog="----- help us on , https://github.com/netzulo/qalab -------", - fromfile_prefix_chars='@',) - ## Main args - parser.add_argument( - '-v', '--verbose', - action="count", help="verbose level... repeat up to three times.") - ## Args with subs - commands = parser.add_subparsers( - dest="selenium", help="Actions for selenium instance") - command_install = commands.add_parser( - "selenium", help="Actions for selenium HUB or NODE") - command_install.add_argument( - '-m', '--mode', - default=None, help="Select mode, values are: [hub, node]") - command_install.add_argument( - '-i', '--install', - action="store_true", help="Download selenium jar") - command_install.add_argument( - '-s', '--start', - action="store_true", help="Start Selenium jar") - command_install.add_argument( - '-p', '--platform', - default=None, help="Select mode, values are: [lin32,lin64,win32,win64]") - args = parser.parse_args() set_log_level_from_verbose(console_handler, args, logger) - # START SCRIPT - if args.selenium == 'selenium': - handle_command_selenium(args, logger) + return logger + + +def command_appium(args, logger): + """Command with appium standalone node client""" + if args.mode not in ['hub', 'node']: + raise Exception('Select valid mode, values are: [hub, node]') + config_src = "{}/appium.{}.example.json".format(PATH_CONFIG, args.mode) + config_dst = "{}/appium.{}.json".format(PATH_CONFIG, args.mode) + if args.install: + copy_config(logger, config_src, config_dst) + elif args.start: + command_start_appium(args, logger) else: - logger.error(str(msg_unkown_command.format(args))) - -def handle_command_selenium(args, logger): - """Command Selenium""" - selenium_url_base = "https://selenium-release.storage.googleapis.com" - selenium_url_version = "3.5" - selenium_url_file = "3.5.3" - selenium_jar = "selenium-server-standalone-{}.jar".format(selenium_url_file) - selenium_url = "{}/{}/{}".format( - selenium_url_base, selenium_url_version, selenium_jar) + logger.error("ACTION not selected: --install , --start") + +def command_start_appium(args, logger): + """TODO: doc method""" + logger.info("Command start : ...") + cmd_args = ["appium"] + if args.mode == 'hub': + raise NotImplementedError('Mode hub for appium not developed yet') + elif args.mode == 'node': + cmd_default_args = [ + '--nodeconfig', "{}/{}".format(PATH_CONFIG, 'appium.node.json') + ] + else: + raise Exception('Select valid mode, values are: [hub, node]') + # start driver_server with arguments + cmd_args.extend(cmd_default_args) + logger.debug("command info : {}".format(cmd_args)) + subprocess.call(cmd_args) + logger.info("Command start : DONE") + + +def command_selendroid(args, logger): + """Command with selendroid standalone jar file""" + # Selendroid , TODO: just for mode node + selendroid_version = '0.17.0' + selendroid_jar = 'selendroid-standalone-{}-with-dependencies.jar'.format(selendroid_version) + selendroid_url = '{}/{}/{}'.format( + 'https://github.com/selendroid/selendroid/releases/download', + selendroid_version, selendroid_jar) + # Selendroid plugin, TODO: just for mode node + plugin_jar = 'selendroid-grid-plugin-{}.jar'.format(selendroid_version) + plugin_url = '{}/{}/{}'.format( + 'http://search.maven.org/remotecontent?filepath=io/selendroid/selendroid-grid-plugin', + selendroid_version, plugin_jar) + # Selenium, TODO: just for mode hub + selenium_version = "3.5.3" + selenium_jar = "selenium-server-standalone-{}.jar".format(selenium_version) + selenium_url = "https://selenium-release.storage.googleapis.com/3.5/{}".format(selenium_jar) + # installation starts... if args.mode not in ['hub', 'node']: raise Exception('Select valid mode, values are: [hub, node]') - config_src = "qalab/configs/settings.{}.example.json".format(args.mode) - config_dst = "qalab/configs/settings.{}.json".format(args.mode) - platforms = ["win32", "win64", "lin32", "lin64"] - drivers_path = "modules/qadrivers/" - drivers_vars = [ - "-Dwebdriver.chrome.driver=", - "-Dwebdriver.gecko.driver=", - "-Dphantomjs.binary.path=", - "-Dwebdriver.ie.driver=", - "-Dwebdriver.edge.driver=" - ] - drivers_names = [ - "chromedriver_32.exe", "chromedriver_64.exe", - "chromedriver_32", "chromedriver_64", - "firefoxdriver_32.exe", "firefoxdriver_64.exe", - "firefoxdriver_32", "firefoxdriver_64", - "phantomjsdriver_32.exe", "phantomjsdriver_64.exe", - "phantomjsdriver_32", "phantomjsdriver_64", - "iexplorerdriver_32.exe", "iexplorerdriver_64.exe", - "edgedriver_32.exe", "edgedriver_64.exe" - ] + config_src = "{}/selendroid.{}.example.json".format(PATH_CONFIG, args.mode) + config_dst = "{}/selendroid.{}.json".format(PATH_CONFIG, args.mode) + # TODO: generate apks names with absolute paths + if args.install: + if args.mode == 'node': + command_install( + args, logger, selendroid_url, selendroid_jar, + config_src, config_dst) + command_install( + args, logger, plugin_url, plugin_jar, + config_src, config_dst) + elif args.mode == 'hub': + command_install( + args, logger, selenium_url, selenium_jar, + config_src, config_dst) + elif args.start: + command_start_selendroid( + args, logger, selenium_jar, selendroid_jar, + plugin_jar, config_dst) + else: + logger.error("ACTION not selected: --install , --start") + +def command_selenium(args, logger): + """Command with selenium standalone jar file""" + version = "3.5" + version_build = "3.5.3" + jar_name = "selenium-server-standalone-{}.jar".format(version_build) + url = "https://selenium-release.storage.googleapis.com/{}/{}".format( + version, jar_name) + # required --mode param + if args.mode not in ['hub', 'node']: + raise Exception('Select valid mode, values are: [hub, node]') + config_src = "{}/selenium.{}.example.json".format(PATH_CONFIG, args.mode) + config_dst = "{}/selenium.{}.json".format(PATH_CONFIG, args.mode) + # generate drivers names with absolute paths drivers_abspaths = [] - for driver_name in drivers_names: + for driver_name in DRIVERS_NAMES: + webdriver_var_name = None if driver_name.startswith("chrome"): - drivers_abspaths.append( - get_driver_abspath( - drivers_vars[0], drivers_path, driver_name)) + webdriver_var_name = WEBDRIVER_ENV_VARS[0] if driver_name.startswith("firefox"): - drivers_abspaths.append( - get_driver_abspath( - drivers_vars[1], drivers_path, driver_name)) + webdriver_var_name = WEBDRIVER_ENV_VARS[1] if driver_name.startswith("phantomjs"): - drivers_abspaths.append( - get_driver_abspath( - drivers_vars[2], drivers_path, driver_name)) + webdriver_var_name = WEBDRIVER_ENV_VARS[2] if driver_name.startswith("iexplorer"): - drivers_abspaths.append( - get_driver_abspath( - drivers_vars[3], drivers_path, driver_name)) + webdriver_var_name = WEBDRIVER_ENV_VARS[3] if driver_name.startswith("edge"): - drivers_abspaths.append( - get_driver_abspath( - drivers_vars[4], drivers_path, driver_name)) - if args.mode is None: - logger.error("Can't start without select available mode: [hub, node]") - return + webdriver_var_name = WEBDRIVER_ENV_VARS[4] + # Get absolute path for driver_name + drivers_abspaths.append(get_driver_abspath( + webdriver_var_name, PATH_DRIVERS_MODULE, driver_name)) + + if args.install: + command_install( + args, logger, url, jar_name, config_src, config_dst) + elif args.start: + handle_command_start_selenium( + args, logger, jar_name, config_dst, drivers_abspaths) else: - if args.install: - msgs_install = [ - "Installation : {}, copying configuration file from example", - "Selenium JAR ready at: {}", - "Downloading selenium from : {}", - "Installation : drivers ready at path, modules/qadrivers", - "Installation : COMPLETED" - ] - jar_path = "{}/{}".format("qalab/drivers", selenium_jar) - if os.path.exists(jar_path): - logger.info(msgs_install[0].format(jar_path)) - else: - logger.info(msgs_install[1].format(selenium_url)) - wget.download(selenium_url, out="qalab/drivers") - logger.info(msgs_install[2].format(args.mode)) - shutil.copy2(config_src, config_dst) - logger.info(msgs_install[3]) - logger.info(msgs_install[4]) - elif args.start: - msgs_start = [ - "Can't start without select available platform: [win32,win64,lin32,lin64]" - ] - cmd_args = ["java"] - cmd_drivers = [] - cmd_default_args = [ - "-jar", "qalab/drivers/{}".format(selenium_jar), - "-role", args.mode, - "-{}Config".format(args.mode), config_dst, - "-log", "logs/selenium.{}.log".format(args.mode) - ] - if ( - args.mode == 'node' and - ( - args.platform is None or - args.platform not in platforms - ) - ): - logger.error(msgs_start[0]) - return - elif args.platform == "win32": - cmd_drivers.extend(name_filter_win32(drivers_abspaths)) - elif args.platform == "win64": - cmd_drivers.extend(name_filter_win64(drivers_abspaths)) - elif args.platform == "lin32": - cmd_drivers.extend(name_filter_lin32(drivers_abspaths)) - elif args.platform == "lin64": - cmd_drivers.extend(name_filter_lin64(drivers_abspaths)) - if args.mode == "node": - cmd_args.extend(cmd_drivers) - cmd_args.extend(cmd_default_args) - logger.info("Executing command : {}".format(cmd_args)) - return subprocess.call(cmd_args) - else: - logger.error("ACTION not selected: --install , --start") + logger.error("ACTION not selected: --install , --start") + +def command_start_selendroid(args, logger, selenium_jar, selendroid_jar, + plugin_jar, config_dst): + """TODO: doc method""" + cmd_args = ["java"] + if args.mode == 'hub': + cmd_default_args = [ + "-Dfile.encoding=UTF-8", + "-cp", + "\"{}:{}\" org.openqa.grid.selenium.GridLauncher".format( + "{}/{}".format(PATH_SERVER_DRIVERS, plugin_jar), + "{}/{}".format(PATH_SERVER_DRIVERS, selenium_jar) + ), + "-jar", "{}/{}".format(PATH_SERVER_DRIVERS, selendroid_jar), + "-role", args.mode, + "-{}Config".format(args.mode), config_dst, + "-log", "logs/selendroid.{}.log".format(args.mode) + ] + elif args.mode == 'node': + cmd_default_args = [ + "-jar", "{}/{}".format(PATH_SERVER_DRIVERS, selendroid_jar), + "-port", "12001", + "-selendroidServerPort", "12000", + "-folder", os.path.abspath(PATH_APKS), + "-logLevel", "DEBUG", + "-proxy", "io.selendroid.grid.SelendroidSessionProxy", + ] + else: + raise Exception('Select valid mode, values are: [hub, node]') + # start driver_server with arguments + cmd_args.extend(cmd_default_args) + logger.info("Executing command : {}".format(cmd_args)) + return subprocess.call(cmd_args) + +def command_install(args, logger, url, jar_name, config_src, config_dst): + """TODO: doc method""" + logger.info('Command install: ...') + jar_path = "{}/{}".format(PATH_SERVER_DRIVERS, jar_name) + if os.path.exists(jar_path): + logger.info('File exist') + logger.debug(' at path={}'.format(jar_path)) + else: + download_file(logger, url, jar_path) + copy_config(logger, config_src, config_dst) + logger.info('Command install: DONE') + +def download_file(logger, url, out_path): + """TODO: doc method""" + logger.info('Downloading file: ...') + logger.debug(' url={}'.format(url)) + logger.debug(' out_path={}'.format(out_path)) + wget.download(url, out=out_path) + logger.info('Downloading file: DONE') + +def copy_config(logger, config_src, config_dst): + """TODO: doc method""" + logger.info('Copy config: ...') + logger.debug(' from={}'.format(config_src)) + logger.debug(' to={}'.format(config_dst)) + shutil.copy2(config_src, config_dst) + logger.info('Copy config: DONE') + +def handle_command_start_selenium(args, logger, selenium_jar, + config_dst, drivers_abspaths): + """TODO: doc method""" + platforms = ["win32", "win64", "lin32", "lin64"] + msgs_start = [ + "Can't start without select available platform: [win32,win64,lin32,lin64]" + ] + cmd_args = ["java"] + cmd_drivers = [] + cmd_default_args = [ + "-jar", "{}/{}".format(PATH_SERVER_DRIVERS, selenium_jar), + "-role", args.mode, + "-{}Config".format(args.mode), config_dst, + "-log", "logs/selenium.{}.log".format(args.mode) + ] + if ( + args.mode == 'node' and + ( + args.platform is None or + args.platform not in platforms + ) + ): + logger.error(msgs_start[0]) + return + elif args.platform == "win32": + cmd_drivers.extend(name_filter_win32(drivers_abspaths)) + elif args.platform == "win64": + cmd_drivers.extend(name_filter_win64(drivers_abspaths)) + elif args.platform == "lin32": + cmd_drivers.extend(name_filter_lin32(drivers_abspaths)) + elif args.platform == "lin64": + cmd_drivers.extend(name_filter_lin64(drivers_abspaths)) + if args.mode == "node": + cmd_args.extend(cmd_drivers) + cmd_args.extend(cmd_default_args) + logger.info("Executing command : {}".format(cmd_args)) + return subprocess.call(cmd_args) def name_filter_lin64(drivers_abspaths): """Return array ofparsed absolute paths name for platform LINUX 64""" @@ -244,6 +392,5 @@ def set_log_level_from_verbose(console_handler, args, logger): else: logger.critical("LOGGER level doesn't exist") - if __name__ == '__main__': main() diff --git a/setup.py b/setup.py index c61a1a0..7fd823d 100644 --- a/setup.py +++ b/setup.py @@ -19,14 +19,14 @@ def readme(): setup(name='qalaboratory', - version='0.0.7', + version='0.0.8', packages=find_packages(exclude=['tests']), description='QALAB, proyect manager for QA open source proyects', long_description=readme(), author='Netzulo Open Source', author_email='netzuleando@gmail.com', url='https://github.com/netzulo/qalab', - download_url='https://github.com/netzulo/qalab/tarball/v0.0.7', + download_url='https://github.com/netzulo/qalab/tarball/v0.0.8', install_requires=[ 'appdirs', 'packaging==16.8', diff --git a/sonar-project.properties b/sonar-project.properties index 711fdda..ab6480f 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -2,7 +2,7 @@ sonar.projectKey=qalab sonar.projectName=qalab sonar.projectDescription=Main Proyect for QA -sonar.projectVersion=0.7 +sonar.projectVersion=0.8 # Language sonar.language=py # Comma-separated paths to directories with sources (required)