)]}'
{"tests-functional-py3.txt":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8c5c66e04ac4b35761331cddf723ac29652f16f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1a6eadb0_162c9149","updated":"2016-12-13 10:26:41.000000000","message":"Here\u0027s a thought - is there any reason to add a new file rather than simply adding these into tests-py3.txt? The format is the exact same and that file is called tests-py3 - not unittests-py3. Would avoid the need for changes elsewhere.","commit_id":"e1dc25167059552a8d9d0a5d1fe9168259a0b6c7"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"e0bba1e84a5cc3fbeca8a9dd41a19e5ec2110f48","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1a6eadb0_c9351747","in_reply_to":"1a6eadb0_162c9149","updated":"2016-12-13 12:36:32.000000000","message":"The final goal is that we don\u0027t maintain any blacklist files.\nThe concern is that don\u0027t mix unit tests and functional tests.\nFor unit tests we don\u0027t need to filter 496 test methods before running actual tests.","commit_id":"e1dc25167059552a8d9d0a5d1fe9168259a0b6c7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2680d974a8b7bd91b95254d5b775c6d87789d0b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1a6eadb0_0186cdb8","in_reply_to":"1a6eadb0_c9351747","updated":"2016-12-14 12:52:30.000000000","message":"OK, I hadn\u0027t thought of the effect of filtering all those extra tests. That\u0027s a good point.","commit_id":"e1dc25167059552a8d9d0a5d1fe9168259a0b6c7"}],"tools/pretty_tox3.sh":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8c5c66e04ac4b35761331cddf723ac29652f16f9","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"TESTRARGS\u003d$1"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"# functional tests"},{"line_number":6,"context_line":"if [ $OS_TEST_PATH \u003d \u0027./nova/tests/functional\u0027 ]; then"},{"line_number":7,"context_line":"    if [ -z \"$TESTRARGS\" ]; then"},{"line_number":8,"context_line":"        ostestr --blacklist_file tests-functional-py3.txt"},{"line_number":9,"context_line":"    else"},{"line_number":10,"context_line":"        ostestr -r \"$TESTRARGS\""},{"line_number":11,"context_line":"    fi"},{"line_number":12,"context_line":"# unit tests"},{"line_number":13,"context_line":"else"},{"line_number":14,"context_line":"    if [ -z \"$TESTRARGS\" ]; then"},{"line_number":15,"context_line":"        ostestr  --blacklist_file tests-py3.txt"},{"line_number":16,"context_line":"    else"},{"line_number":17,"context_line":"        ostestr -r \"$TESTRARGS\""},{"line_number":18,"context_line":"    fi"},{"line_number":19,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":2,"id":"1a6eadb0_164d7172","line":19,"range":{"start_line":5,"start_character":0,"end_line":19,"end_character":2},"updated":"2016-12-13 10:26:41.000000000","message":"If we don\u0027t merge the files, perhaps you could pull out just the blacklist_file generation:\n\n  if [ $OS_TEST_PATH \u003d \u0027./nova/tests/functional\u0027 ]; then\n      blacklist_file\u003dtests-functional-py3.txt\n  else\n      blacklist_file\u003dtests-py3.txt\n  fi\n\n  if [ -z \"$TESTRARGS\" ]; then\n      ostestr --blacklist_file $blacklist_file\n  else\n      ostestr -r \"$TESTRARGS\"\n  fi\n\nJust an idea","commit_id":"e1dc25167059552a8d9d0a5d1fe9168259a0b6c7"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"e0bba1e84a5cc3fbeca8a9dd41a19e5ec2110f48","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"TESTRARGS\u003d$1"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"# functional tests"},{"line_number":6,"context_line":"if [ $OS_TEST_PATH \u003d \u0027./nova/tests/functional\u0027 ]; then"},{"line_number":7,"context_line":"    if [ -z \"$TESTRARGS\" ]; then"},{"line_number":8,"context_line":"        ostestr --blacklist_file tests-functional-py3.txt"},{"line_number":9,"context_line":"    else"},{"line_number":10,"context_line":"        ostestr -r \"$TESTRARGS\""},{"line_number":11,"context_line":"    fi"},{"line_number":12,"context_line":"# unit tests"},{"line_number":13,"context_line":"else"},{"line_number":14,"context_line":"    if [ -z \"$TESTRARGS\" ]; then"},{"line_number":15,"context_line":"        ostestr  --blacklist_file tests-py3.txt"},{"line_number":16,"context_line":"    else"},{"line_number":17,"context_line":"        ostestr -r \"$TESTRARGS\""},{"line_number":18,"context_line":"    fi"},{"line_number":19,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":2,"id":"1a6eadb0_b9ad8e33","line":19,"range":{"start_line":5,"start_character":0,"end_line":19,"end_character":2},"in_reply_to":"1a6eadb0_164d7172","updated":"2016-12-13 12:36:32.000000000","message":"yes, this make logic more clear, will update.","commit_id":"e1dc25167059552a8d9d0a5d1fe9168259a0b6c7"}],"tox.ini":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"faa1a8fb9320f719d9a11afff3db2a6e0a9ccb37","unresolved":false,"context_lines":[{"line_number":47,"context_line":"  bash -c \u0027! find doc/ -type f -name *.json | xargs -t -n1 python -m json.tool 2\u003e\u00261 \u003e /dev/null | grep -B1 -v ^python\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"[testenv:functional]"},{"line_number":50,"context_line":"# TODO(melwitt): This can be removed when functional tests can be run"},{"line_number":51,"context_line":"# with python 3.x"},{"line_number":52,"context_line":"basepython \u003d python2.7"},{"line_number":53,"context_line":"usedevelop \u003d True"},{"line_number":54,"context_line":"setenv \u003d VIRTUAL_ENV\u003d{envdir}"}],"source_content_type":"text/x-properties","patch_set":1,"id":"1a6eadb0_a7491291","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":17},"updated":"2016-12-12 16:17:32.000000000","message":"I guess we should remove this...","commit_id":"f28e012e03b4333df61df4d45c3d7818bb23c023"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"59e974c5adb1ca0728e589e7cfe16fa4bde4db88","unresolved":false,"context_lines":[{"line_number":47,"context_line":"  bash -c \u0027! find doc/ -type f -name *.json | xargs -t -n1 python -m json.tool 2\u003e\u00261 \u003e /dev/null | grep -B1 -v ^python\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"[testenv:functional]"},{"line_number":50,"context_line":"# TODO(melwitt): This can be removed when functional tests can be run"},{"line_number":51,"context_line":"# with python 3.x"},{"line_number":52,"context_line":"basepython \u003d python2.7"},{"line_number":53,"context_line":"usedevelop \u003d True"},{"line_number":54,"context_line":"setenv \u003d VIRTUAL_ENV\u003d{envdir}"}],"source_content_type":"text/x-properties","patch_set":1,"id":"1a6eadb0_82d8841f","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":17},"in_reply_to":"1a6eadb0_a7491291","updated":"2016-12-13 08:30:44.000000000","message":"This is handled by https://review.openstack.org/385686","commit_id":"f28e012e03b4333df61df4d45c3d7818bb23c023"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"faa1a8fb9320f719d9a11afff3db2a6e0a9ccb37","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# TODO(gcb) Merge this into [testenv:functional] when functional tests can be run"},{"line_number":62,"context_line":"# with python 3.4"},{"line_number":63,"context_line":"[testenv:functional-py34]"},{"line_number":64,"context_line":"basepython \u003d python3.4"},{"line_number":65,"context_line":"usedevelop \u003d True"},{"line_number":66,"context_line":"setenv \u003d VIRTUAL_ENV\u003d{envdir}"},{"line_number":67,"context_line":"       OS_TEST_PATH\u003d./nova/tests/functional"},{"line_number":68,"context_line":"       LANGUAGE\u003den_US"},{"line_number":69,"context_line":"commands \u003d"},{"line_number":70,"context_line":"  find . -type f -name \"*.pyc\" -delete"},{"line_number":71,"context_line":"  bash tools/pretty_tox3.sh \u0027{posargs}\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"# TODO(gcb) Merge this into [testenv:functional] when functional tests can be run"},{"line_number":74,"context_line":"# with python 3.5"}],"source_content_type":"text/x-properties","patch_set":1,"id":"1a6eadb0_0749e68b","line":71,"range":{"start_line":63,"start_character":0,"end_line":71,"end_character":39},"updated":"2016-12-12 16:17:32.000000000","message":"We\u0027re going to stop testing py34:\n\nhttps://review.openstack.org/#/c/408416","commit_id":"f28e012e03b4333df61df4d45c3d7818bb23c023"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"59e974c5adb1ca0728e589e7cfe16fa4bde4db88","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# TODO(gcb) Merge this into [testenv:functional] when functional tests can be run"},{"line_number":62,"context_line":"# with python 3.4"},{"line_number":63,"context_line":"[testenv:functional-py34]"},{"line_number":64,"context_line":"basepython \u003d python3.4"},{"line_number":65,"context_line":"usedevelop \u003d True"},{"line_number":66,"context_line":"setenv \u003d VIRTUAL_ENV\u003d{envdir}"},{"line_number":67,"context_line":"       OS_TEST_PATH\u003d./nova/tests/functional"},{"line_number":68,"context_line":"       LANGUAGE\u003den_US"},{"line_number":69,"context_line":"commands \u003d"},{"line_number":70,"context_line":"  find . -type f -name \"*.pyc\" -delete"},{"line_number":71,"context_line":"  bash tools/pretty_tox3.sh \u0027{posargs}\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"# TODO(gcb) Merge this into [testenv:functional] when functional tests can be run"},{"line_number":74,"context_line":"# with python 3.5"}],"source_content_type":"text/x-properties","patch_set":1,"id":"1a6eadb0_02039474","line":71,"range":{"start_line":63,"start_character":0,"end_line":71,"end_character":39},"in_reply_to":"1a6eadb0_0749e68b","updated":"2016-12-13 08:30:44.000000000","message":"yeah, will update this","commit_id":"f28e012e03b4333df61df4d45c3d7818bb23c023"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8c5c66e04ac4b35761331cddf723ac29652f16f9","unresolved":false,"context_lines":[{"line_number":58,"context_line":"  find . -type f -name \"*.pyc\" -delete"},{"line_number":59,"context_line":"  bash tools/pretty_tox.sh \u0027{posargs}\u0027"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# TODO(gcb) Merge this into [testenv:functional] when functional tests are gating"},{"line_number":62,"context_line":"# with python 3.5"},{"line_number":63,"context_line":"[testenv:functional-py35]"},{"line_number":64,"context_line":"basepython \u003d python3.5"},{"line_number":65,"context_line":"usedevelop \u003d True"}],"source_content_type":"text/x-properties","patch_set":2,"id":"1a6eadb0_f6bb950c","line":62,"range":{"start_line":61,"start_character":0,"end_line":62,"end_character":17},"updated":"2016-12-13 10:26:41.000000000","message":"Is this still true? I thought we would need to run both py27 and py35 functional tests now?","commit_id":"e1dc25167059552a8d9d0a5d1fe9168259a0b6c7"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"e0bba1e84a5cc3fbeca8a9dd41a19e5ec2110f48","unresolved":false,"context_lines":[{"line_number":58,"context_line":"  find . -type f -name \"*.pyc\" -delete"},{"line_number":59,"context_line":"  bash tools/pretty_tox.sh \u0027{posargs}\u0027"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# TODO(gcb) Merge this into [testenv:functional] when functional tests are gating"},{"line_number":62,"context_line":"# with python 3.5"},{"line_number":63,"context_line":"[testenv:functional-py35]"},{"line_number":64,"context_line":"basepython \u003d python3.5"},{"line_number":65,"context_line":"usedevelop \u003d True"}],"source_content_type":"text/x-properties","patch_set":2,"id":"1a6eadb0_f990e6ee","line":62,"range":{"start_line":61,"start_character":0,"end_line":62,"end_character":17},"in_reply_to":"1a6eadb0_f6bb950c","updated":"2016-12-13 12:36:32.000000000","message":"The final goal is keeping one testevn for functional tests.\nWe aslo need remove line 52 to make functional tests work for Python 2.7 and Python 3.5.","commit_id":"e1dc25167059552a8d9d0a5d1fe9168259a0b6c7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2680d974a8b7bd91b95254d5b775c6d87789d0b9","unresolved":false,"context_lines":[{"line_number":58,"context_line":"  find . -type f -name \"*.pyc\" -delete"},{"line_number":59,"context_line":"  bash tools/pretty_tox.sh \u0027{posargs}\u0027"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# TODO(gcb) Merge this into [testenv:functional] when functional tests are gating"},{"line_number":62,"context_line":"# with python 3.5"},{"line_number":63,"context_line":"[testenv:functional-py35]"},{"line_number":64,"context_line":"basepython \u003d python3.5"},{"line_number":65,"context_line":"usedevelop \u003d True"}],"source_content_type":"text/x-properties","patch_set":2,"id":"1a6eadb0_2183c999","line":62,"range":{"start_line":61,"start_character":0,"end_line":62,"end_character":17},"in_reply_to":"1a6eadb0_f990e6ee","updated":"2016-12-14 12:52:30.000000000","message":"Good point, but I wonder if we should still be testing against both versions to ensure we don\u0027t regress in one or the other (like we do for unit tests)? I would think we do, personally","commit_id":"e1dc25167059552a8d9d0a5d1fe9168259a0b6c7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7f50d2f21fd5e33d21ad90d0e17d1fbe1eb63fa3","unresolved":false,"context_lines":[{"line_number":58,"context_line":"  find . -type f -name \"*.pyc\" -delete"},{"line_number":59,"context_line":"  bash tools/pretty_tox.sh \u0027{posargs}\u0027"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# TODO(gcb) Merge this into [testenv:functional] when functional tests are gating"},{"line_number":62,"context_line":"# with python 3.5"},{"line_number":63,"context_line":"[testenv:functional-py35]"},{"line_number":64,"context_line":"basepython \u003d python3.5"},{"line_number":65,"context_line":"usedevelop \u003d True"}],"source_content_type":"text/x-properties","patch_set":3,"id":"1a6eadb0_e12631cd","line":62,"range":{"start_line":61,"start_character":0,"end_line":62,"end_character":17},"updated":"2016-12-14 12:58:07.000000000","message":"See comment in PS2 - I think this isn\u0027t actually true","commit_id":"2738e25f7e640a57ac25e09a96d0ae8b118544ab"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"037bfbe26a6fef16ff8395abfdab56db5357a87d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"  find . -type f -name \"*.pyc\" -delete"},{"line_number":59,"context_line":"  bash tools/pretty_tox.sh \u0027{posargs}\u0027"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# TODO(gcb) Merge this into [testenv:functional] when functional tests are gating"},{"line_number":62,"context_line":"# with python 3.5"},{"line_number":63,"context_line":"[testenv:functional-py35]"},{"line_number":64,"context_line":"basepython \u003d python3.5"},{"line_number":65,"context_line":"usedevelop \u003d True"}],"source_content_type":"text/x-properties","patch_set":3,"id":"1a6eadb0_ba2457af","line":62,"range":{"start_line":61,"start_character":0,"end_line":62,"end_character":17},"in_reply_to":"1a6eadb0_e12631cd","updated":"2016-12-14 15:03:03.000000000","message":"sorry I missed that,  we actually run functional tests on python2.7 now , and plan to run python 3.5 functional tests in https://review.openstack.org/#/c/410105/.\n\nFor python 3.5 we need run tools/pretty_tox3.sh with blacklist.  then we run functional-tests both of py27 and py35\n\nWhen we removed all items from blacklists, we can just use tools/pretty_tox.sh and remove [testenv:functional-py35]","commit_id":"2738e25f7e640a57ac25e09a96d0ae8b118544ab"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7f50d2f21fd5e33d21ad90d0e17d1fbe1eb63fa3","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# TODO(gcb) Merge this into [testenv:functional] when functional tests are gating"},{"line_number":62,"context_line":"# with python 3.5"},{"line_number":63,"context_line":"[testenv:functional-py35]"},{"line_number":64,"context_line":"basepython \u003d python3.5"},{"line_number":65,"context_line":"usedevelop \u003d True"},{"line_number":66,"context_line":"setenv \u003d VIRTUAL_ENV\u003d{envdir}"}],"source_content_type":"text/x-properties","patch_set":3,"id":"1a6eadb0_dc72f8ac","line":63,"range":{"start_line":63,"start_character":9,"end_line":63,"end_character":24},"updated":"2016-12-14 12:58:07.000000000","message":"I know tox does some magic with \u0027pyXX\u0027 environment names, and I wonder if we should call this \u0027py35-functional\u0027 instead (and maybe rename \u0027functional\u0027 to \u0027py35-functional\u0027 instead? That would avoid the need to define the \u0027basepython\u0027. This only makes sense if the above comment is indeed true, however.","commit_id":"2738e25f7e640a57ac25e09a96d0ae8b118544ab"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0d06713944423508fdbe4de7ac09a84e0a974375","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# TODO(gcb) Merge this into [testenv:functional] when functional tests are gating"},{"line_number":62,"context_line":"# with python 3.5"},{"line_number":63,"context_line":"[testenv:functional-py35]"},{"line_number":64,"context_line":"basepython \u003d python3.5"},{"line_number":65,"context_line":"usedevelop \u003d True"},{"line_number":66,"context_line":"setenv \u003d VIRTUAL_ENV\u003d{envdir}"}],"source_content_type":"text/x-properties","patch_set":3,"id":"1a6eadb0_86b74685","line":63,"range":{"start_line":63,"start_character":9,"end_line":63,"end_character":24},"in_reply_to":"1a6eadb0_57bb1ee5","updated":"2016-12-22 18:09:29.000000000","message":"That sounds fair. Thanks for checking up","commit_id":"2738e25f7e640a57ac25e09a96d0ae8b118544ab"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"037bfbe26a6fef16ff8395abfdab56db5357a87d","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# TODO(gcb) Merge this into [testenv:functional] when functional tests are gating"},{"line_number":62,"context_line":"# with python 3.5"},{"line_number":63,"context_line":"[testenv:functional-py35]"},{"line_number":64,"context_line":"basepython \u003d python3.5"},{"line_number":65,"context_line":"usedevelop \u003d True"},{"line_number":66,"context_line":"setenv \u003d VIRTUAL_ENV\u003d{envdir}"}],"source_content_type":"text/x-properties","patch_set":3,"id":"1a6eadb0_57bb1ee5","line":63,"range":{"start_line":63,"start_character":9,"end_line":63,"end_character":24},"in_reply_to":"1a6eadb0_dc72f8ac","updated":"2016-12-14 15:03:03.000000000","message":"functional-py35 follows other projects\u0027 way like http://git.openstack.org/cgit/openstack/cinder/tree/tox.ini#n45.\nThere are more projects in same way http://codesearch.openstack.org/?q\u003dfunctional-\u0026i\u003dnope\u0026files\u003d\u0026repos\u003d","commit_id":"2738e25f7e640a57ac25e09a96d0ae8b118544ab"}]}
