)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d3e2df645acbee9d27208fc30455152049fa4e19","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Move functional tests to keystone/tests/functional"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit moves Keystone\u0027s functional tests to it\u0027s own directory and"},{"line_number":10,"context_line":"adds a tox environment for running only functional tests. Keystone"},{"line_number":11,"context_line":"functional tests can now be run with:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  $ tox -e functional"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a961159_27aae170","line":10,"updated":"2014-12-08 00:19:26.000000000","message":"why?","commit_id":"59d63a155ccc58fa6d330862c22379942b334a26"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"910a040383de6e4ee96abd57812247e2b62c1c1b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Move functional tests to keystone/tests/functional"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit moves Keystone\u0027s functional tests to it\u0027s own directory and"},{"line_number":10,"context_line":"adds a tox environment for running only functional tests. Keystone"},{"line_number":11,"context_line":"functional tests can now be run with:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  $ tox -e functional"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a961159_34be7b00","line":10,"in_reply_to":"3a961159_27aae170","updated":"2014-12-08 14:24:08.000000000","message":"There was a lot of discussion at the summit about restructuring the tests for various projects, including Keystone. @dstanek has started this process by moving the unit tests to keystone/tests/unit/. By doing this for Keystone functional tests, we can start to structure our tests for different functional situations (like running the functional tests for federation, which could live in something like dsvm-functional, etc). Nova did a good job of describing this process at the summit in their functional testing session. \n\nhttps://etherpad.openstack.org/p/kilo-nova-functional-testing\n\nI was just talking to @dstanek about this and I think we are going to work on pushing up a spec to detail this a little more so that it\u0027s more clear to the reviews what the end result of the testing refactor is.\n\nI can update this with a link to the spec review once we have something pushed up.","commit_id":"59d63a155ccc58fa6d330862c22379942b334a26"}],"doc/source/developing.rst":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"25b02059518622963d5fbae039cdd55746c724ec","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    $ tox -e functional"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"Functional tests are isolated in their own environment so that it is easier"},{"line_number":261,"context_line":"for developers to run only the tests that assert API behavior and do some"},{"line_number":262,"context_line":"useful assertion with a response."},{"line_number":263,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a890539_4151470d","line":260,"updated":"2014-11-12 22:11:01.000000000","message":"What\u0027s really nice about this is since the functional tests will be separate from the unit tests I think it will be easier for new developers to focus on those and get a better feel for what Keystone does without being barraged by all the unit tests!","commit_id":"1de24a812b58bad003c702206ada30e3ab1d6802"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"25b02059518622963d5fbae039cdd55746c724ec","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"Not all of the tests in the tests directory are strictly unit tests. Keystone"},{"line_number":306,"context_line":"intentionally includes tests that run the service locally and drives the entire"},{"line_number":307,"context_line":"configuration to achieve basic functional testing. These functional tests live"},{"line_number":308,"context_line":"in ``keystone/tests/functional/``. New functional tests should be added to the"},{"line_number":309,"context_line":"functional test directory. If a test describes the behavior of a single method"},{"line_number":310,"context_line":"or function is should not be added as a functional test. If a test describes"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a890539_c10e1732","line":307,"updated":"2014-11-12 22:11:01.000000000","message":"Great description!!! I was worried you wouldn\u0027t define what we meant by functional but you did!","commit_id":"1de24a812b58bad003c702206ada30e3ab1d6802"}],"keystone/tests/functional/test_v3_federation.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"f0e60e1704bc53c8306cf9b8563f9a6de199b326","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5a890539_11a51053","side":"PARENT","line":26,"updated":"2014-11-10 22:25:10.000000000","message":"revert empty line.","commit_id":"2b7fdb1ab5de54c2a610a0ee9fc635ddb81e7b38"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"82e8b40192cf12c188c49e3292d1404ea55d8372","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5a890539_b437caaf","side":"PARENT","line":26,"in_reply_to":"5a890539_11a51053","updated":"2014-11-10 23:03:41.000000000","message":"Done, had some weird formatting issues in the refactor.","commit_id":"2b7fdb1ab5de54c2a610a0ee9fc635ddb81e7b38"}],"tox.ini":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"3a8c1033f5d069ec26d7e4fbbf66799e14876b32","unresolved":false,"context_lines":[{"line_number":19,"context_line":"deps \u003d -r{toxinidir}/requirements.txt"},{"line_number":20,"context_line":"       -r{toxinidir}/test-requirements.txt"},{"line_number":21,"context_line":"       nose"},{"line_number":22,"context_line":"commands \u003d nosetests keystone/tests/functional/"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[testenv:py33]"},{"line_number":25,"context_line":"deps \u003d -r{toxinidir}/requirements-py3.txt"}],"source_content_type":"text/x-properties","patch_set":2,"id":"5a890539_343f5a27","line":22,"updated":"2014-11-10 23:09:21.000000000","message":"Can this be done with testr? please don\u0027t use nose as the \"default\" unless it\u0027s really required.\n\nWe can/should be able to support alternatives but the default should be testr.  \n\nPy33 is a special case.","commit_id":"f052c4f79f39c1ddddc76da995b749f87425e226"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"306ced36c22b39c732d5a6c0e3db8dd17b91f9cc","unresolved":false,"context_lines":[{"line_number":19,"context_line":"deps \u003d -r{toxinidir}/requirements.txt"},{"line_number":20,"context_line":"       -r{toxinidir}/test-requirements.txt"},{"line_number":21,"context_line":"       nose"},{"line_number":22,"context_line":"commands \u003d nosetests keystone/tests/functional/"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[testenv:py33]"},{"line_number":25,"context_line":"deps \u003d -r{toxinidir}/requirements-py3.txt"}],"source_content_type":"text/x-properties","patch_set":2,"id":"5a890539_742f22a2","line":22,"in_reply_to":"5a890539_343f5a27","updated":"2014-11-10 23:23:01.000000000","message":"Done","commit_id":"f052c4f79f39c1ddddc76da995b749f87425e226"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"25b02059518622963d5fbae039cdd55746c724ec","unresolved":false,"context_lines":[{"line_number":44,"context_line":"      keystone/tests/test_url_middleware.py \\"},{"line_number":45,"context_line":"      keystone/tests/test_utils.py \\"},{"line_number":46,"context_line":"      keystone/tests/test_validation.py \\"},{"line_number":47,"context_line":"      keystone/tests/test_v3_controller.py \\"},{"line_number":48,"context_line":"      keystone/tests/test_wsgi.py \\"},{"line_number":49,"context_line":"      keystone/tests/unit"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-properties","patch_set":6,"id":"5a890539_c16d379b","line":47,"updated":"2014-11-12 22:11:01.000000000","message":"This one is now wrong. It should now be:\ntests/functional/test_wsgi.py because you moved it.  I suspect you may have others that you missed as well","commit_id":"1de24a812b58bad003c702206ada30e3ab1d6802"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0004f2903d9239995814c1450d82866fed00170d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"      keystone/tests/test_url_middleware.py \\"},{"line_number":45,"context_line":"      keystone/tests/test_utils.py \\"},{"line_number":46,"context_line":"      keystone/tests/test_validation.py \\"},{"line_number":47,"context_line":"      keystone/tests/test_v3_controller.py \\"},{"line_number":48,"context_line":"      keystone/tests/test_wsgi.py \\"},{"line_number":49,"context_line":"      keystone/tests/unit"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-properties","patch_set":6,"id":"5a890539_a1266b14","line":47,"in_reply_to":"5a890539_c16d379b","updated":"2014-11-12 22:27:08.000000000","message":"Done, nice catch!","commit_id":"1de24a812b58bad003c702206ada30e3ab1d6802"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"25b02059518622963d5fbae039cdd55746c724ec","unresolved":false,"context_lines":[{"line_number":72,"context_line":"      keystone/tests/test_utils.py \\"},{"line_number":73,"context_line":"      keystone/tests/test_validation.py \\"},{"line_number":74,"context_line":"      keystone/tests/test_v3_controller.py \\"},{"line_number":75,"context_line":"      keystone/tests/test_wsgi.py \\"},{"line_number":76,"context_line":"      keystone/tests/unit"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"[testenv:pep8]"}],"source_content_type":"text/x-properties","patch_set":6,"id":"5a890539_e16cf39e","line":75,"updated":"2014-11-12 22:11:01.000000000","message":"This one is now wrong. It should now be:\ntests/functional/test_wsgi.py because you moved it.  I suspect you may have others that you missed as well","commit_id":"1de24a812b58bad003c702206ada30e3ab1d6802"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0004f2903d9239995814c1450d82866fed00170d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"      keystone/tests/test_utils.py \\"},{"line_number":73,"context_line":"      keystone/tests/test_validation.py \\"},{"line_number":74,"context_line":"      keystone/tests/test_v3_controller.py \\"},{"line_number":75,"context_line":"      keystone/tests/test_wsgi.py \\"},{"line_number":76,"context_line":"      keystone/tests/unit"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"[testenv:pep8]"}],"source_content_type":"text/x-properties","patch_set":6,"id":"5a890539_c121b7fd","line":75,"in_reply_to":"5a890539_e16cf39e","updated":"2014-11-12 22:27:08.000000000","message":"Done","commit_id":"1de24a812b58bad003c702206ada30e3ab1d6802"}]}
