)]}'
{"tests/test_auth_token_middleware.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f0a52f9a701512d43e27aaec05712c5ee1a473f8","unresolved":false,"context_lines":[{"line_number":580,"context_line":"    def test_invalid_revocation_list_raises_service_error(self):"},{"line_number":581,"context_line":"        globals()[\u0027SIGNED_REVOCATION_LIST\u0027] \u003d \"{}\""},{"line_number":582,"context_line":"        with self.assertRaises(auth_token.ServiceError):"},{"line_number":583,"context_line":"            self.middleware.fetch_revocation_list()"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    def test_fetch_revocation_list(self):"},{"line_number":586,"context_line":"        fetched_list \u003d jsonutils.loads(self.middleware.fetch_revocation_list())"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fytc%3D","side":"PARENT","line":583,"updated":"2013-01-04 21:39:18.000000000","message":"I assume testtools doesn\u0027t support this? :\u0027(","commit_id":"d37a3fb06cbb284d2bea330b456b774bfe2662f7"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"40cff1764ec47f0bfc96b9efc207f8802abef943","unresolved":false,"context_lines":[{"line_number":580,"context_line":"    def test_invalid_revocation_list_raises_service_error(self):"},{"line_number":581,"context_line":"        globals()[\u0027SIGNED_REVOCATION_LIST\u0027] \u003d \"{}\""},{"line_number":582,"context_line":"        with self.assertRaises(auth_token.ServiceError):"},{"line_number":583,"context_line":"            self.middleware.fetch_revocation_list()"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    def test_fetch_revocation_list(self):"},{"line_number":586,"context_line":"        fetched_list \u003d jsonutils.loads(self.middleware.fetch_revocation_list())"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Ft9Y%3D","side":"PARENT","line":583,"in_reply_to":"AAAAM3%2F%2FuD0%3D","updated":"2013-01-08 19:50:48.000000000","message":"cool; I was sad if it didn\u0027t support context managers. I don\u0027t care which we use here as these are pretty simple examples.","commit_id":"d37a3fb06cbb284d2bea330b456b774bfe2662f7"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"301233edeae8d3cc63c573d697daab5da5a15c76","unresolved":false,"context_lines":[{"line_number":580,"context_line":"    def test_invalid_revocation_list_raises_service_error(self):"},{"line_number":581,"context_line":"        globals()[\u0027SIGNED_REVOCATION_LIST\u0027] \u003d \"{}\""},{"line_number":582,"context_line":"        with self.assertRaises(auth_token.ServiceError):"},{"line_number":583,"context_line":"            self.middleware.fetch_revocation_list()"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    def test_fetch_revocation_list(self):"},{"line_number":586,"context_line":"        fetched_list \u003d jsonutils.loads(self.middleware.fetch_revocation_list())"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FuD0%3D","side":"PARENT","line":583,"in_reply_to":"AAAAM3%2F%2FyrA%3D","updated":"2013-01-08 19:24:47.000000000","message":"Oh, also testtools supports the context manager style if you want it:\nwith ExpectedException(auth_token.ServiceError):\n    self.middleware.fetch_revocation_list()","commit_id":"d37a3fb06cbb284d2bea330b456b774bfe2662f7"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"9f13819cef2b0a038bcc59743b05d845e5bffaf4","unresolved":false,"context_lines":[{"line_number":580,"context_line":"    def test_invalid_revocation_list_raises_service_error(self):"},{"line_number":581,"context_line":"        globals()[\u0027SIGNED_REVOCATION_LIST\u0027] \u003d \"{}\""},{"line_number":582,"context_line":"        with self.assertRaises(auth_token.ServiceError):"},{"line_number":583,"context_line":"            self.middleware.fetch_revocation_list()"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    def test_fetch_revocation_list(self):"},{"line_number":586,"context_line":"        fetched_list \u003d jsonutils.loads(self.middleware.fetch_revocation_list())"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FyrA%3D","side":"PARENT","line":583,"in_reply_to":"AAAAM3%2F%2Fytc%3D","updated":"2013-01-04 21:51:03.000000000","message":"https://testtools.readthedocs.org/en/latest/for-test-authors.html#improved-assertraises\n\nwhich would give\n\nself.assertRaises(auth_token.ServiceError,\n    self.middleware.fetch_revocation_list)\n\nOr\n\nhttps://testtools.readthedocs.org/en/latest/for-test-authors.html#the-raises-helper\n\nwhich would give\n\n\nself.assertThat(self.middleware.fetch_revocation_list,\n    raises(auth_token.ServiceError)) \n\nbut also let you assert things about the parameters given to the ServiceError, or its backtrace etc.","commit_id":"d37a3fb06cbb284d2bea330b456b774bfe2662f7"}],"tests/test_shell.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"301233edeae8d3cc63c573d697daab5da5a15c76","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        super(ShellTest, self).setUp()"},{"line_number":34,"context_line":"        for var in self.FAKE_ENV:"},{"line_number":35,"context_line":"            self.useFixture(fixtures.EnvironmentVariable(var,"},{"line_number":36,"context_line":"                            self.FAKE_ENV[var]))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        # Make a fake shell object, a helping wrapper to call it, and a quick"},{"line_number":39,"context_line":"        # way of asserting that certain API calls were made."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FuC4%3D","line":36,"updated":"2013-01-08 19:24:47.000000000","message":"Monty, this could be pithier I think:\n\nfor var, value in ShellTest.FAKE_ENV.items():\n    self.useFixture(fixtures.EnvironmentVariable(var, value))\n\nThough its clearly ok as-is.","commit_id":"55f2cdbe291542c7cb92f16d804957e1bd91be26"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f0a52f9a701512d43e27aaec05712c5ee1a473f8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        super(ShellTest, self).setUp()"},{"line_number":34,"context_line":"        for var in self.FAKE_ENV:"},{"line_number":35,"context_line":"            self.useFixture(fixtures.EnvironmentVariable(var,"},{"line_number":36,"context_line":"                            self.FAKE_ENV[var]))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        # Make a fake shell object, a helping wrapper to call it, and a quick"},{"line_number":39,"context_line":"        # way of asserting that certain API calls were made."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FytM%3D","line":36,"updated":"2013-01-04 21:39:18.000000000","message":"nice","commit_id":"55f2cdbe291542c7cb92f16d804957e1bd91be26"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"40cff1764ec47f0bfc96b9efc207f8802abef943","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        super(ShellTest, self).setUp()"},{"line_number":34,"context_line":"        for var in self.FAKE_ENV:"},{"line_number":35,"context_line":"            self.useFixture(fixtures.EnvironmentVariable(var,"},{"line_number":36,"context_line":"                            self.FAKE_ENV[var]))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        # Make a fake shell object, a helping wrapper to call it, and a quick"},{"line_number":39,"context_line":"        # way of asserting that certain API calls were made."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Ft9U%3D","line":36,"in_reply_to":"AAAAM3%2F%2FuC4%3D","updated":"2013-01-08 19:50:48.000000000","message":"agree on both points","commit_id":"55f2cdbe291542c7cb92f16d804957e1bd91be26"}],"tests/utils.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f0a52f9a701512d43e27aaec05712c5ee1a473f8","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        time.time \u003d self._original_time"},{"line_number":110,"context_line":"        self.mox.UnsetStubs()"},{"line_number":111,"context_line":"        self.mox.VerifyAll()"},{"line_number":112,"context_line":"        super(UnauthenticatedTestCase, self).tearDown()"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class TestResponse(requests.Response):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fysw%3D","line":112,"updated":"2013-01-04 21:39:18.000000000","message":"normally you call super\u0027s tearDown first, not last... is this change intentional? e.g.\n\n  setup A -\u003e setup B -\u003e destroy B -\u003e destroy A","commit_id":"55f2cdbe291542c7cb92f16d804957e1bd91be26"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"40cff1764ec47f0bfc96b9efc207f8802abef943","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        time.time \u003d self._original_time"},{"line_number":110,"context_line":"        self.mox.UnsetStubs()"},{"line_number":111,"context_line":"        self.mox.VerifyAll()"},{"line_number":112,"context_line":"        super(UnauthenticatedTestCase, self).tearDown()"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class TestResponse(requests.Response):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Ft94%3D","line":112,"in_reply_to":"AAAAM3%2F%2FykQ%3D","updated":"2013-01-08 19:50:48.000000000","message":"touche; +1 for you!","commit_id":"55f2cdbe291542c7cb92f16d804957e1bd91be26"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"2d5f2d912a0049cdd001b058b06ced0c060950d3","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        time.time \u003d self._original_time"},{"line_number":110,"context_line":"        self.mox.UnsetStubs()"},{"line_number":111,"context_line":"        self.mox.VerifyAll()"},{"line_number":112,"context_line":"        super(UnauthenticatedTestCase, self).tearDown()"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class TestResponse(requests.Response):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FykQ%3D","line":112,"in_reply_to":"AAAAM3%2F%2Fysw%3D","updated":"2013-01-04 22:13:00.000000000","message":"But:\nsetup A -\u003e setup B -\u003e destroy B -\u003e destroy A\nis a description of calling super\u0027s tearDown last - because super\u0027s setUp is called first. \nSo it\u0027s\n\nsuper.setUp() -\u003e setUp() -\u003e tearDown() -\u003e super.tearDown()","commit_id":"55f2cdbe291542c7cb92f16d804957e1bd91be26"}]}
