)]}'
{"openstack_dashboard/test/integration_tests/decorators.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0354fd68943e1fce2b2ad335bc58b60f750b6c81","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        return obj"},{"line_number":139,"context_line":"    return actual_decoration"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"def skip_if(actual_value, required_value, message\u003dNone):"},{"line_number":143,"context_line":"    \"\"\"Decorator for skipping tests satisfying condition"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_9efdf33c","line":141,"updated":"2019-02-23 19:29:13.000000000","message":"Why do you need a new decorator?\npython unittest already provies unittest.skipIf decorator [1].\nI see no value to introduce a new horizon-specific decorator.\nCould you clarify the reason?\n\n[1] https://docs.python.org/3.5/library/unittest.html#skipping-tests-and-expected-failures","commit_id":"ac0348f9a54e5d2c18f1fbff94e88d02eb9f6cf6"}],"openstack_dashboard/test/integration_tests/regions/menus.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ccb50fb457c3f61743c0fa9ddb0d68db34449428","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if not is_already_within_required_item:"},{"line_number":141,"context_line":"            item \u003d self._get_item(text, loc_craft_func, src_elem)"},{"line_number":142,"context_line":"            item.click()"},{"line_number":143,"context_line":"            time.sleep(1)"},{"line_number":144,"context_line":"            if get_selected_func is not None:"},{"line_number":145,"context_line":"                self._wait_until_transition_ends("},{"line_number":146,"context_line":"                    self._get_menu_list_next_to_menu_title(item),"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_aad2e9cd","line":143,"updated":"2018-11-06 16:46:14.000000000","message":"If you need sleep(1) from some reason, it would be nice to have a note.","commit_id":"6adf4ae5f08e7a2888d83a90b32b44514ad6d338"},{"author":{"_account_id":28293,"name":"panneer selvam mani sekaran","email":"panneer.smn@outlook.com","username":"panneer.smn"},"change_message_id":"c0bff8db83bee0abe51841c39c6cad454bf039d6","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if not is_already_within_required_item:"},{"line_number":141,"context_line":"            item \u003d self._get_item(text, loc_craft_func, src_elem)"},{"line_number":142,"context_line":"            item.click()"},{"line_number":143,"context_line":"            time.sleep(1)"},{"line_number":144,"context_line":"            if get_selected_func is not None:"},{"line_number":145,"context_line":"                self._wait_until_transition_ends("},{"line_number":146,"context_line":"                    self._get_menu_list_next_to_menu_title(item),"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_7593925d","line":143,"in_reply_to":"3f79a3b5_aad2e9cd","updated":"2019-02-23 08:30:25.000000000","message":"Done","commit_id":"6adf4ae5f08e7a2888d83a90b32b44514ad6d338"}],"openstack_dashboard/test/integration_tests/tests/test_credentials.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0354fd68943e1fce2b2ad335bc58b60f750b6c81","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"@decorators.skip_if(environ.get(\u0027CHROME_HEADLESS\u0027), \u00271\u0027,"},{"line_number":24,"context_line":"                    message\u003d\"Chrome browser does not support this test\")"},{"line_number":25,"context_line":"class TestDownloadRCFile(helpers.AdminTestCase):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    _directory \u003d firefox_binary.WebDriver.TEMPDIR"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_3efc073d","line":24,"updated":"2019-02-23 19:29:13.000000000","message":"Consider using unittest.skipIf.\n\n @unittest.skipIf(\n     environ.get(\u0027CHROME_HEADLESS\u0027),\n     \u0027Chrome browser does not support ....\u0027)\n\nCHROME_HEADLESS is a boolean and takes True/False (according to openstack/horizon / openstack_dashboard/test/integration_tests/helpers.py), but 1 is expected here. It is not consistent. Consider using True/False. My above example takes care of it.","commit_id":"ac0348f9a54e5d2c18f1fbff94e88d02eb9f6cf6"}],"tox.ini":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ccb50fb457c3f61743c0fa9ddb0d68db34449428","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  PYTHONHASHSEED\u003d0"},{"line_number":111,"context_line":"  INTEGRATION_TESTS\u003d1"},{"line_number":112,"context_line":"  CHROME_HEADLESS\u003d1"},{"line_number":113,"context_line":"basepython \u003d python2.7"},{"line_number":114,"context_line":"commands \u003d {envpython} {toxinidir}/manage.py test openstack_dashboard --settings\u003dopenstack_dashboard.test.settings --verbosity 2 --tag integration {posargs}"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"[testenv:npm]"}],"source_content_type":"text/x-properties","patch_set":2,"id":"3f79a3b5_eacc6134","line":113,"updated":"2018-11-06 16:46:14.000000000","message":"Is there any reason we need python 2.7 instead of python3?","commit_id":"6adf4ae5f08e7a2888d83a90b32b44514ad6d338"},{"author":{"_account_id":28293,"name":"panneer selvam mani sekaran","email":"panneer.smn@outlook.com","username":"panneer.smn"},"change_message_id":"c0bff8db83bee0abe51841c39c6cad454bf039d6","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  PYTHONHASHSEED\u003d0"},{"line_number":111,"context_line":"  INTEGRATION_TESTS\u003d1"},{"line_number":112,"context_line":"  CHROME_HEADLESS\u003d1"},{"line_number":113,"context_line":"basepython \u003d python2.7"},{"line_number":114,"context_line":"commands \u003d {envpython} {toxinidir}/manage.py test openstack_dashboard --settings\u003dopenstack_dashboard.test.settings --verbosity 2 --tag integration {posargs}"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"[testenv:npm]"}],"source_content_type":"text/x-properties","patch_set":2,"id":"9fdfeff1_958e3630","line":113,"in_reply_to":"3f79a3b5_eacc6134","updated":"2019-02-23 08:30:25.000000000","message":"same as selenium integration test. Only difference to selenium integration test is, this will run on chrome browser. Hence python will be same integration","commit_id":"6adf4ae5f08e7a2888d83a90b32b44514ad6d338"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0354fd68943e1fce2b2ad335bc58b60f750b6c81","unresolved":false,"context_lines":[{"line_number":118,"context_line":"basepython \u003d python2.7"},{"line_number":119,"context_line":"commands \u003d {envpython} {toxinidir}/manage.py test openstack_dashboard --settings\u003dopenstack_dashboard.test.settings --verbosity 2 --tag integration {posargs}"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"[testenv:py27-chrome-headless]"},{"line_number":122,"context_line":"# Run integration tests only on chrome"},{"line_number":123,"context_line":"passenv \u003d AVCONV_INSTALLED"},{"line_number":124,"context_line":"setenv \u003d"}],"source_content_type":"text/x-properties","patch_set":4,"id":"9fdfeff1_be9d570b","line":121,"range":{"start_line":121,"start_character":9,"end_line":121,"end_character":29},"updated":"2019-02-23 19:29:13.000000000","message":"The test should be a name which tells the integration tests are run. py27integration-chrome-headless?","commit_id":"ac0348f9a54e5d2c18f1fbff94e88d02eb9f6cf6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0354fd68943e1fce2b2ad335bc58b60f750b6c81","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"[testenv:py27-chrome-headless]"},{"line_number":122,"context_line":"# Run integration tests only on chrome"},{"line_number":123,"context_line":"passenv \u003d AVCONV_INSTALLED"},{"line_number":124,"context_line":"setenv \u003d"},{"line_number":125,"context_line":"  PYTHONHASHSEED\u003d0"},{"line_number":126,"context_line":"  INTEGRATION_TESTS\u003d1"}],"source_content_type":"text/x-properties","patch_set":4,"id":"9fdfeff1_dea05b45","line":123,"updated":"2019-02-23 19:29:13.000000000","message":"Use:\n\n  passenv \u003d {[testenv:py27integration]passenv}","commit_id":"ac0348f9a54e5d2c18f1fbff94e88d02eb9f6cf6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0354fd68943e1fce2b2ad335bc58b60f750b6c81","unresolved":false,"context_lines":[{"line_number":124,"context_line":"setenv \u003d"},{"line_number":125,"context_line":"  PYTHONHASHSEED\u003d0"},{"line_number":126,"context_line":"  INTEGRATION_TESTS\u003d1"},{"line_number":127,"context_line":"  CHROME_HEADLESS\u003d1"},{"line_number":128,"context_line":"basepython \u003d python2.7"},{"line_number":129,"context_line":"commands \u003d {envpython} {toxinidir}/manage.py test openstack_dashboard --settings\u003dopenstack_dashboard.test.settings --verbosity 2 --tag integration {posargs}"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-properties","patch_set":4,"id":"9fdfeff1_7e87efb7","line":127,"updated":"2019-02-23 19:29:13.000000000","message":"Is SELENIUM_HEADLESS unnecessary?\n\nAlso consider:\n\n  setenv \u003d\n     {[testenv:py27integration]setenv}\n     CHROME_HEADLESS\u003d1","commit_id":"ac0348f9a54e5d2c18f1fbff94e88d02eb9f6cf6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0354fd68943e1fce2b2ad335bc58b60f750b6c81","unresolved":false,"context_lines":[{"line_number":126,"context_line":"  INTEGRATION_TESTS\u003d1"},{"line_number":127,"context_line":"  CHROME_HEADLESS\u003d1"},{"line_number":128,"context_line":"basepython \u003d python2.7"},{"line_number":129,"context_line":"commands \u003d {envpython} {toxinidir}/manage.py test openstack_dashboard --settings\u003dopenstack_dashboard.test.settings --verbosity 2 --tag integration {posargs}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"[testenv:npm]"},{"line_number":132,"context_line":"basepython \u003d python3"}],"source_content_type":"text/x-properties","patch_set":4,"id":"9fdfeff1_9e82d3a4","line":129,"updated":"2019-02-23 19:29:13.000000000","message":"Consider:\n\n  commands \u003d {[testenv:py27integration]commands}","commit_id":"ac0348f9a54e5d2c18f1fbff94e88d02eb9f6cf6"}]}
