)]}'
{"test/functional/test_versioned_writes.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"284c9478cafae792a625a4f0fdf75220a0530d3b","unresolved":false,"context_lines":[{"line_number":796,"context_line":"        self._assert_is_object(file_item, \u0027a\u0027)"},{"line_number":797,"context_line":""},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"class TestSymlinkWithVersioning(unittest2.TestCase):"},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"    def setUp(self):"},{"line_number":802,"context_line":"        if \u0027symlink\u0027 not in cluster_info:"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_2ad055c9","line":799,"range":{"start_line":799,"start_character":0,"end_line":799,"end_character":52},"updated":"2017-12-15 12:27:51.000000000","message":"the tests could be added to TestObjectVersioning and then benefit from being run by all the subclasses e.g. getting coverage of history mode too","commit_id":"1835aa62630beae839e67cccd302d969cfdd0208"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"284c9478cafae792a625a4f0fdf75220a0530d3b","unresolved":false,"context_lines":[{"line_number":812,"context_line":"        self.container \u003d self.account.container(Utils.create_name())"},{"line_number":813,"context_line":"        if not self.container.create("},{"line_number":814,"context_line":"                hdrs\u003d{\u0027X-Versions-Location\u0027: self.versions_container.name}):"},{"line_number":815,"context_line":"            raise ResponseError(self.conn.response)"},{"line_number":816,"context_line":"        if \u0027versions\u0027 not in self.container.info():"},{"line_number":817,"context_line":"            raise SkipTest(\"Object versioning not enabled\")"},{"line_number":818,"context_line":"        if not self.versions_container.create():"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_aae305a4","line":815,"range":{"start_line":815,"start_character":12,"end_line":815,"end_character":51},"updated":"2017-12-15 12:27:51.000000000","message":"412 should be expected if allow_versioned_writes \u003d false, in which case skip the test - this is handled by the TestObjectVersioning setup","commit_id":"1835aa62630beae839e67cccd302d969cfdd0208"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2f7297fa7cd6ea56b6be761875313d7a63ebe316","unresolved":false,"context_lines":[{"line_number":847,"context_line":"        versioned_obj.copy(self.container.name, self.symlink.name,"},{"line_number":848,"context_line":"                           parms\u003d{\u0027symlink\u0027: \u0027get\u0027})"},{"line_number":849,"context_line":"        self.assertEqual(\u0027target object data\u0027, self.symlink.read())"},{"line_number":850,"context_line":"        self.assertEqual(self.target.info(), self.symlink.info())"},{"line_number":851,"context_line":"        self.assertEqual(\u0027application/symlink\u0027,"},{"line_number":852,"context_line":"                         self.symlink.info(parms\u003d{"},{"line_number":853,"context_line":"                             \u0027symlink\u0027: \u0027get\u0027})[\u0027content_type\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_68e673eb","line":850,"range":{"start_line":850,"start_character":45,"end_line":850,"end_character":64},"updated":"2017-12-14 23:17:52.000000000","message":"Hmm. So this doesn\u0027t include the Content-Location header, I take it?","commit_id":"1835aa62630beae839e67cccd302d969cfdd0208"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"da8c6b468cc9b9997fda28063787d6e29f05ae74","unresolved":false,"context_lines":[{"line_number":847,"context_line":"        versioned_obj.copy(self.container.name, self.symlink.name,"},{"line_number":848,"context_line":"                           parms\u003d{\u0027symlink\u0027: \u0027get\u0027})"},{"line_number":849,"context_line":"        self.assertEqual(\u0027target object data\u0027, self.symlink.read())"},{"line_number":850,"context_line":"        self.assertEqual(self.target.info(), self.symlink.info())"},{"line_number":851,"context_line":"        self.assertEqual(\u0027application/symlink\u0027,"},{"line_number":852,"context_line":"                         self.symlink.info(parms\u003d{"},{"line_number":853,"context_line":"                             \u0027symlink\u0027: \u0027get\u0027})[\u0027content_type\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_58ca5c6e","line":850,"range":{"start_line":850,"start_character":45,"end_line":850,"end_character":64},"in_reply_to":"df87a7cf_68e673eb","updated":"2017-12-15 06:07:52.000000000","message":"That is because swift_test_client.File doesn\u0027t care of Content-Location for now.\n\nWe will need a change sort of https://gist.github.com/bloodeagle40234/aa2b9a07fb692896263b0b354cd297e2\n\nIt\u0027s not complete work though. The change to add content-location to optional headers list affect other assertions in this test class rather than the fix included in the link above.","commit_id":"1835aa62630beae839e67cccd302d969cfdd0208"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2f7297fa7cd6ea56b6be761875313d7a63ebe316","unresolved":false,"context_lines":[{"line_number":853,"context_line":"                             \u0027symlink\u0027: \u0027get\u0027})[\u0027content_type\u0027])"},{"line_number":854,"context_line":"        # and versioned writes restore"},{"line_number":855,"context_line":"        self.symlink.delete()"},{"line_number":856,"context_line":"        self.assertEqual(1, self.versions_container.info()[\u0027object_count\u0027])"},{"line_number":857,"context_line":"        self.assertEqual(\u0027this is not a symlink\u0027, self.symlink.read())"},{"line_number":858,"context_line":"        self.symlink.delete()"},{"line_number":859,"context_line":"        self.assertEqual(0, self.versions_container.info()[\u0027object_count\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_08d567e5","line":856,"updated":"2017-12-14 23:17:52.000000000","message":"The more I mess with proxyfs and bimodal testing, the less I like that we ever try to trust this header...","commit_id":"1835aa62630beae839e67cccd302d969cfdd0208"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"ce307cd88c586f1e69e22f9c11abbe2b1f05f839","unresolved":false,"context_lines":[{"line_number":591,"context_line":"        symlink \u003d self.env.container.file(\u0027symlink\u0027)"},{"line_number":592,"context_line":"        symlink.write(\u0027\u0027, hdrs\u003d{"},{"line_number":593,"context_line":"            \u0027Content-Type\u0027: \u0027application/symlink\u0027,"},{"line_number":594,"context_line":"            \u0027x-symlink-target\u0027: \u0027%s/%s\u0027 % ("},{"line_number":595,"context_line":"                self.env.container.name, target.name)})"},{"line_number":596,"context_line":"        return symlink, target"},{"line_number":597,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_a5278f64","line":594,"range":{"start_line":594,"start_character":13,"end_line":594,"end_character":29},"updated":"2017-12-18 04:54:32.000000000","message":"nit: IMO, \"X-Symlink-Target\" is better, because almost all of header names in test_versioned_writes.py are title style.","commit_id":"3266b3f6e1a7a1c9f131d3dae2ddc2116d7e36af"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"6ee9b9f0fb10fc43242482dc5c4dba6bdd6026af","unresolved":false,"context_lines":[{"line_number":591,"context_line":"        symlink \u003d self.env.container.file(\u0027symlink\u0027)"},{"line_number":592,"context_line":"        symlink.write(\u0027\u0027, hdrs\u003d{"},{"line_number":593,"context_line":"            \u0027Content-Type\u0027: \u0027application/symlink\u0027,"},{"line_number":594,"context_line":"            \u0027x-symlink-target\u0027: \u0027%s/%s\u0027 % ("},{"line_number":595,"context_line":"                self.env.container.name, target.name)})"},{"line_number":596,"context_line":"        return symlink, target"},{"line_number":597,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_b61e556e","line":594,"range":{"start_line":594,"start_character":13,"end_line":594,"end_character":29},"in_reply_to":"df87a7cf_a5278f64","updated":"2017-12-20 21:45:30.000000000","message":"Done","commit_id":"3266b3f6e1a7a1c9f131d3dae2ddc2116d7e36af"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"ce307cd88c586f1e69e22f9c11abbe2b1f05f839","unresolved":false,"context_lines":[{"line_number":609,"context_line":"        versioned_obj \u003d self.env.versions_container.file("},{"line_number":610,"context_line":"            versioned_obj_info[\u0027name\u0027])"},{"line_number":611,"context_line":"        # the symlink is still a symlink"},{"line_number":612,"context_line":"        self.assertEqual(\u0027target object data\u0027, versioned_obj.read())"},{"line_number":613,"context_line":"        self.assertEqual(target.info(), versioned_obj.info())"},{"line_number":614,"context_line":"        self.assertEqual(\u0027application/symlink\u0027,"},{"line_number":615,"context_line":"                         versioned_obj.info(parms\u003d{"},{"line_number":616,"context_line":"                             \u0027symlink\u0027: \u0027get\u0027})[\u0027content_type\u0027])"},{"line_number":617,"context_line":"        # test manual restore (this creates a new backup of the overwrite)"},{"line_number":618,"context_line":"        versioned_obj.copy(self.env.container.name, symlink.name,"},{"line_number":619,"context_line":"                           parms\u003d{\u0027symlink\u0027: \u0027get\u0027})"}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_0f177aa5","line":616,"range":{"start_line":612,"start_character":0,"end_line":616,"end_character":64},"updated":"2017-12-18 04:54:32.000000000","message":"How about making a function for these assertions?\nThese assertions appears in this change four times.","commit_id":"3266b3f6e1a7a1c9f131d3dae2ddc2116d7e36af"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"679d329e5b9cabdccc83f9ec2158653c1615ff61","unresolved":false,"context_lines":[{"line_number":609,"context_line":"        versioned_obj \u003d self.env.versions_container.file("},{"line_number":610,"context_line":"            versioned_obj_info[\u0027name\u0027])"},{"line_number":611,"context_line":"        # the symlink is still a symlink"},{"line_number":612,"context_line":"        self.assertEqual(\u0027target object data\u0027, versioned_obj.read())"},{"line_number":613,"context_line":"        self.assertEqual(target.info(), versioned_obj.info())"},{"line_number":614,"context_line":"        self.assertEqual(\u0027application/symlink\u0027,"},{"line_number":615,"context_line":"                         versioned_obj.info(parms\u003d{"},{"line_number":616,"context_line":"                             \u0027symlink\u0027: \u0027get\u0027})[\u0027content_type\u0027])"},{"line_number":617,"context_line":"        # test manual restore (this creates a new backup of the overwrite)"},{"line_number":618,"context_line":"        versioned_obj.copy(self.env.container.name, symlink.name,"},{"line_number":619,"context_line":"                           parms\u003d{\u0027symlink\u0027: \u0027get\u0027})"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_d1be83fe","line":616,"range":{"start_line":612,"start_character":0,"end_line":616,"end_character":64},"in_reply_to":"df87a7cf_0f177aa5","updated":"2017-12-20 21:59:25.000000000","message":"Done","commit_id":"3266b3f6e1a7a1c9f131d3dae2ddc2116d7e36af"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"ce307cd88c586f1e69e22f9c11abbe2b1f05f839","unresolved":false,"context_lines":[{"line_number":649,"context_line":"            version_container_files[0])"},{"line_number":650,"context_line":"        symlink.write(parms\u003d{\u0027symlink\u0027: \u0027get\u0027}, cfg\u003d{"},{"line_number":651,"context_line":"            \u0027no_content_type\u0027: True}, hdrs\u003d{"},{"line_number":652,"context_line":"                \u0027x-copy-from\u0027: \u0027%s/%s\u0027 % ("},{"line_number":653,"context_line":"                    self.env.versions_container, versioned_obj.name)})"},{"line_number":654,"context_line":"        self.assertEqual(\u0027target object data\u0027, symlink.read())"},{"line_number":655,"context_line":"        self.assertEqual(target.info(), symlink.info())"}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_a5aa2f82","line":652,"range":{"start_line":652,"start_character":15,"end_line":652,"end_character":29},"updated":"2017-12-18 04:54:32.000000000","message":"nit: IMO, \"X-Copy-From\" is better. Same as above.","commit_id":"3266b3f6e1a7a1c9f131d3dae2ddc2116d7e36af"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"679d329e5b9cabdccc83f9ec2158653c1615ff61","unresolved":false,"context_lines":[{"line_number":649,"context_line":"            version_container_files[0])"},{"line_number":650,"context_line":"        symlink.write(parms\u003d{\u0027symlink\u0027: \u0027get\u0027}, cfg\u003d{"},{"line_number":651,"context_line":"            \u0027no_content_type\u0027: True}, hdrs\u003d{"},{"line_number":652,"context_line":"                \u0027x-copy-from\u0027: \u0027%s/%s\u0027 % ("},{"line_number":653,"context_line":"                    self.env.versions_container, versioned_obj.name)})"},{"line_number":654,"context_line":"        self.assertEqual(\u0027target object data\u0027, symlink.read())"},{"line_number":655,"context_line":"        self.assertEqual(target.info(), symlink.info())"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_f1bb870b","line":652,"range":{"start_line":652,"start_character":15,"end_line":652,"end_character":29},"in_reply_to":"df87a7cf_a5aa2f82","updated":"2017-12-20 21:59:25.000000000","message":"Done","commit_id":"3266b3f6e1a7a1c9f131d3dae2ddc2116d7e36af"}]}
