)]}'
{"tests/test_shells.py":[{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"14cf1a1056554ac1ab600ec77f3d4780dc205f25","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            out \u003d sys.stdout.getvalue()"},{"line_number":64,"context_line":"            sys.stdout.close()"},{"line_number":65,"context_line":"            sys.stdout \u003d orig"},{"line_number":66,"context_line":"        return out"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def tearDown(self):"},{"line_number":69,"context_line":"        super(ShellTest, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAN3%2F%2FtNw%3D","line":66,"updated":"2013-03-15 20:18:46.000000000","message":"I wonder if this functionality should be abstracted out.  I can see other cases where collecting stdout for expected verification could be useful.  For example testing the actual printed version string.","commit_id":"6e2e91a3bc3431e2504e2cfb015c7976e72cf5bd"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"ee9d67e30429d541c3cb0ecac08c6363cbf6d57f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2013 Yahoo! Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOX%2F%2F89I%3D","line":1,"updated":"2013-04-04 18:31:34.000000000","message":"Needs to include an OpenStack Foundation LLC copyright.","commit_id":"deb78e35ee87e03115c4fb2308e14f07430f1207"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"c88e39c71234d413c49a9323c93199060b4aac2c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 OpenStack LLC."},{"line_number":2,"context_line":"# Copyright (C) 2013 Yahoo! Inc."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FpZA%3D","line":1,"updated":"2013-04-30 18:11:24.000000000","message":"This should be exactly:\n# Copyright 2013 OpenStack Foundation","commit_id":"668ec1d83f4904ae509007e1fa5bd1994d953c71"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"c88e39c71234d413c49a9323c93199060b4aac2c","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def test_strip_version(self):"},{"line_number":74,"context_line":"        test_shell \u003d openstack_shell.OpenStackImagesShell()"},{"line_number":75,"context_line":"        actual \u003d test_shell._strip_version(\u0027http://examle.com/\u0027)"},{"line_number":76,"context_line":"        self.assertEqual(\u0027http://examle.com\u0027, actual)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_strip_version_v1(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FpYY%3D","line":75,"updated":"2013-04-30 18:11:24.000000000","message":"Testing of private functions (those with a leading underscore) is usually frowned upon. This is for a couple of reasons. One being that if someone were to refactor the module while maintaining the same public interface into the module then there should not need to be any need to change the tests, which should ensure the interface has not changed.\n\nThe best way to handle test coverage of private functions is to exercise them by calling public functions that use them. This can be tricky though when adding tests after the fact.\n\nMy rambling probably doesn\u0027t make any sense. See http://stackoverflow.com/questions/8052814/in-python-how-do-i-write-unit-tests-that-can-access-private-attributes-without and http://c2.com/cgi/wiki?InappropriateIntimacy\n\nIn this specific case, finding some way to make sure that the \"main\" function creates a client with the correct endpoint with varying \"os_image_url\"s should test the same functionality.","commit_id":"668ec1d83f4904ae509007e1fa5bd1994d953c71"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"c88e39c71234d413c49a9323c93199060b4aac2c","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_strip_version_v1(self):"},{"line_number":79,"context_line":"        test_shell \u003d openstack_shell.OpenStackImagesShell()"},{"line_number":80,"context_line":"        actual \u003d test_shell._strip_version(\u0027http://examle.com/v1\u0027)"},{"line_number":81,"context_line":"        self.assertEqual(\u0027http://examle.com\u0027, actual)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def test_get_base_parser(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FpXs%3D","line":80,"updated":"2013-04-30 18:11:24.000000000","message":"should this be example.com? It\u0027s also misspelled in a few other places.","commit_id":"668ec1d83f4904ae509007e1fa5bd1994d953c71"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"c88e39c71234d413c49a9323c93199060b4aac2c","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        cl \u003d MyClient()"},{"line_number":107,"context_line":"        test_shell \u003d openstack_shell.OpenStackImagesShell()"},{"line_number":108,"context_line":"        actual \u003d test_shell._get_endpoint(client\u003dcl)"},{"line_number":109,"context_line":"        self.assertEqual(\u0027http://127.0.0.1:5000\u0027, actual)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FpXo%3D","line":108,"updated":"2013-04-30 18:11:24.000000000","message":"This tests is also testing a private function.","commit_id":"668ec1d83f4904ae509007e1fa5bd1994d953c71"}],"tests/utils.py":[{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"14cf1a1056554ac1ab600ec77f3d4780dc205f25","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import copy"},{"line_number":17,"context_line":"import StringIO"},{"line_number":18,"context_line":"import testtools"},{"line_number":19,"context_line":"import requests"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from glanceclient.common import http"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAN3%2F%2FtP4%3D","line":19,"updated":"2013-03-15 20:18:46.000000000","message":"According to HACKING.rst the imports should be in alphabetical.","commit_id":"6e2e91a3bc3431e2504e2cfb015c7976e72cf5bd"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"c88e39c71234d413c49a9323c93199060b4aac2c","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class TestResponse(requests.Response):"},{"line_number":77,"context_line":"    \"\"\" Class used to wrap requests.Response and provide some"},{"line_number":78,"context_line":"        convenience to initialize with a dict \"\"\""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def __init__(self, data):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FpXk%3D","line":77,"updated":"2013-04-30 18:11:24.000000000","message":"Can you reformat this docstring as per HACKING.rst?","commit_id":"668ec1d83f4904ae509007e1fa5bd1994d953c71"}],"tests/v1/test_legacy_shell.py":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"ee9d67e30429d541c3cb0ecac08c6363cbf6d57f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2013 Yahoo! Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOX%2F%2F884%3D","line":1,"updated":"2013-04-04 18:31:34.000000000","message":"Ditto","commit_id":"deb78e35ee87e03115c4fb2308e14f07430f1207"}],"tests/v1/test_shell.py":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"ee9d67e30429d541c3cb0ecac08c6363cbf6d57f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2013 Yahoo! Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOX%2F%2F880%3D","line":1,"updated":"2013-04-04 18:31:34.000000000","message":"Ditto","commit_id":"deb78e35ee87e03115c4fb2308e14f07430f1207"}],"tests/v2/test_shell_v2.py":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"ee9d67e30429d541c3cb0ecac08c6363cbf6d57f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2013 Yahoo! Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOX%2F%2F88w%3D","line":1,"updated":"2013-04-04 18:31:34.000000000","message":"Here too","commit_id":"deb78e35ee87e03115c4fb2308e14f07430f1207"}]}
