)]}'
{"tempest/test.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"b34e80e756a446df0720d79717036d075ae653d4","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        try:"},{"line_number":162,"context_line":"            import unittest"},{"line_number":163,"context_line":"            import unittest2"},{"line_number":164,"context_line":"            if sys.version_info[0] \u003e\u003d 3 and sys.version_info[1] \u003e\u003d 5:"},{"line_number":165,"context_line":"                exc \u003d unittest2.case.SkipTest"},{"line_number":166,"context_line":"                exc_to_raise \u003d unittest.case.SkipTest"},{"line_number":167,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5faad753_f8cb0250","line":164,"updated":"2019-09-11 02:45:25.000000000","message":"nit: can we make it like this?\n \n if sys.version_info \u003e\u003d (3, 5):","commit_id":"6d3070afd0639827caddf0f481a33e45c5b274b4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5601d368aa9ad53861a747ad41734186ff4adace","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        try:"},{"line_number":162,"context_line":"            import unittest"},{"line_number":163,"context_line":"            import unittest2"},{"line_number":164,"context_line":"            if sys.version_info[0] \u003e\u003d 3 and sys.version_info[1] \u003e\u003d 5:"},{"line_number":165,"context_line":"                exc \u003d unittest2.case.SkipTest"},{"line_number":166,"context_line":"                exc_to_raise \u003d unittest.case.SkipTest"},{"line_number":167,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5faad753_185b7e54","line":164,"range":{"start_line":164,"start_character":0,"end_line":164,"end_character":69},"updated":"2019-09-11 03:13:29.000000000","message":"this case if not enough. this will fail for stestr\u003c2.5.0 where testtools.run is used not new test runner so unittest.case.SkipTest raised in this case treated as error. \n\nshould I check stestr version also here ?\n\nif sys.version_info \u003e\u003d (3,5) and stestr_version \u003e 2.4.0:","commit_id":"6d3070afd0639827caddf0f481a33e45c5b274b4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5601d368aa9ad53861a747ad41734186ff4adace","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        try:"},{"line_number":162,"context_line":"            import unittest"},{"line_number":163,"context_line":"            import unittest2"},{"line_number":164,"context_line":"            if sys.version_info[0] \u003e\u003d 3 and sys.version_info[1] \u003e\u003d 5:"},{"line_number":165,"context_line":"                exc \u003d unittest2.case.SkipTest"},{"line_number":166,"context_line":"                exc_to_raise \u003d unittest.case.SkipTest"},{"line_number":167,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5faad753_7863921b","line":164,"in_reply_to":"5faad753_f8cb0250","updated":"2019-09-11 03:13:29.000000000","message":"Done","commit_id":"6d3070afd0639827caddf0f481a33e45c5b274b4"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"b34e80e756a446df0720d79717036d075ae653d4","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            import unittest"},{"line_number":163,"context_line":"            import unittest2"},{"line_number":164,"context_line":"            if sys.version_info[0] \u003e\u003d 3 and sys.version_info[1] \u003e\u003d 5:"},{"line_number":165,"context_line":"                exc \u003d unittest2.case.SkipTest"},{"line_number":166,"context_line":"                exc_to_raise \u003d unittest.case.SkipTest"},{"line_number":167,"context_line":"            else:"},{"line_number":168,"context_line":"                exc \u003d unittest.case.SkipTest"}],"source_content_type":"text/x-python","patch_set":1,"id":"5faad753_18c7fe47","line":165,"updated":"2019-09-11 02:45:25.000000000","message":"Should we use unittest here not unittest2?","commit_id":"6d3070afd0639827caddf0f481a33e45c5b274b4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5601d368aa9ad53861a747ad41734186ff4adace","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            import unittest"},{"line_number":163,"context_line":"            import unittest2"},{"line_number":164,"context_line":"            if sys.version_info[0] \u003e\u003d 3 and sys.version_info[1] \u003e\u003d 5:"},{"line_number":165,"context_line":"                exc \u003d unittest2.case.SkipTest"},{"line_number":166,"context_line":"                exc_to_raise \u003d unittest.case.SkipTest"},{"line_number":167,"context_line":"            else:"},{"line_number":168,"context_line":"                exc \u003d unittest.case.SkipTest"}],"source_content_type":"text/x-python","patch_set":1,"id":"5faad753_18729ee4","line":165,"in_reply_to":"5faad753_18c7fe47","updated":"2019-09-11 03:13:29.000000000","message":"in stestr \u003e2.5.0 new test runner is used for \u003epy3.5 so unittest2.case.SkipTest is raaised by self.skip_exception() which is not recognised by stdlib unitest.","commit_id":"6d3070afd0639827caddf0f481a33e45c5b274b4"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"b34e80e756a446df0720d79717036d075ae653d4","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                exc_to_raise \u003d unittest2.case.SkipTest"},{"line_number":170,"context_line":"            cls.skip_checks()"},{"line_number":171,"context_line":"        except exc as e:"},{"line_number":172,"context_line":"            raise exc_to_raise(e.args[0])"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        if not cls.__skip_checks_called:"},{"line_number":175,"context_line":"            raise RuntimeError(\"skip_checks for %s did not call the super\u0027s \""}],"source_content_type":"text/x-python","patch_set":1,"id":"5faad753_b8c58a3e","line":172,"updated":"2019-09-11 02:45:25.000000000","message":"Why only args[0] not args?","commit_id":"6d3070afd0639827caddf0f481a33e45c5b274b4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5601d368aa9ad53861a747ad41734186ff4adace","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                exc_to_raise \u003d unittest2.case.SkipTest"},{"line_number":170,"context_line":"            cls.skip_checks()"},{"line_number":171,"context_line":"        except exc as e:"},{"line_number":172,"context_line":"            raise exc_to_raise(e.args[0])"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        if not cls.__skip_checks_called:"},{"line_number":175,"context_line":"            raise RuntimeError(\"skip_checks for %s did not call the super\u0027s \""}],"source_content_type":"text/x-python","patch_set":1,"id":"5faad753_b8802a8d","line":172,"in_reply_to":"5faad753_b8c58a3e","updated":"2019-09-11 03:13:29.000000000","message":"I am extracting only msg but yes we can pass all args.","commit_id":"6d3070afd0639827caddf0f481a33e45c5b274b4"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"b258875a8493ff428aac69ff13555a305dfe415d","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            new_stestr \u003d (stestr_version \u003e\u003d stestr_min)"},{"line_number":167,"context_line":"            import unittest"},{"line_number":168,"context_line":"            import unittest2"},{"line_number":169,"context_line":"            if sys.version_info \u003e\u003d (3,5) and new_stestr:"},{"line_number":170,"context_line":"                exc \u003d unittest2.case.SkipTest"},{"line_number":171,"context_line":"                exc_to_raise \u003d unittest.case.SkipTest"},{"line_number":172,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_4e036c74","line":169,"range":{"start_line":169,"start_character":38,"end_line":169,"end_character":39},"updated":"2019-09-11 06:40:40.000000000","message":"pep8\n\n2019-09-11 04:45:45.825898 | ubuntu-bionic | -            if sys.version_info \u003e\u003d (3,5) and new_stestr:\n2019-09-11 04:45:45.826004 | ubuntu-bionic | +            if sys.version_info \u003e\u003d (3, 5) and new_stestr:","commit_id":"0d428ccac40149c5d19f8cb20ab645affe461690"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"158c6b00f7c291a4faf36d256e8c7e5b33e836f8","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            new_stestr \u003d (stestr_version \u003e\u003d stestr_min)"},{"line_number":167,"context_line":"            import unittest"},{"line_number":168,"context_line":"            import unittest2"},{"line_number":169,"context_line":"            if sys.version_info \u003e\u003d (3,5) and new_stestr:"},{"line_number":170,"context_line":"                exc \u003d unittest2.case.SkipTest"},{"line_number":171,"context_line":"                exc_to_raise \u003d unittest.case.SkipTest"},{"line_number":172,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_da79552f","line":169,"range":{"start_line":169,"start_character":38,"end_line":169,"end_character":39},"in_reply_to":"5faad753_4e036c74","updated":"2019-09-11 11:25:23.000000000","message":"Done","commit_id":"0d428ccac40149c5d19f8cb20ab645affe461690"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"d4baec635c839f47e067f3b9a5b974fdd23cdb8d","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                exc \u003d unittest.case.SkipTest"},{"line_number":174,"context_line":"                exc_to_raise \u003d unittest2.case.SkipTest"},{"line_number":175,"context_line":"            cls.skip_checks()"},{"line_number":176,"context_line":"        except exc as e:"},{"line_number":177,"context_line":"            raise exc_to_raise(e.args)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        if not cls.__skip_checks_called:"},{"line_number":180,"context_line":"            raise RuntimeError(\"skip_checks for %s did not call the super\u0027s \""}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_5ae560a7","line":177,"range":{"start_line":176,"start_character":8,"end_line":177,"end_character":38},"updated":"2019-09-11 13:24:09.000000000","message":"What if an exception is raised above this on L163 or so? Then that means this will be None. I think I see what this is doing. Perhaps:\n\n        try:\n            stestr_version \u003d pkg_resources.parse_version(\n                pkg_resources.get_distribution(\"stestr\").version)\n            stestr_min \u003d pkg_resources.parse_version(\u00272.5.0\u0027)\n            new_stestr \u003d (stestr_version \u003e\u003d stestr_min)\n            import unittest\n            import unittest2\n            if sys.version_info \u003e\u003d (3, 5) and new_stestr:\n                exc \u003d unittest2.case.SkipTest\n                exc_to_raise \u003d unittest.case.SkipTest\n            else:\n                exc \u003d unittest.case.SkipTest\n                exc_to_raise \u003d unittest2.case.SkipTest\n            cls.skip_checks()\n        except cls.skipException:\n            raise exc_to_raise(e.args)\n        except exc as e:\n            LOG.error(e)\n            raise e\n\nAssuming the last part is even needed.","commit_id":"d0f0323fe885cdc0937daa727624f8da2b93b6a9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"73ab89280dfedcf42bca7597dc99aa0ae59841b4","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                exc \u003d unittest.case.SkipTest"},{"line_number":174,"context_line":"                exc_to_raise \u003d unittest2.case.SkipTest"},{"line_number":175,"context_line":"            cls.skip_checks()"},{"line_number":176,"context_line":"        except exc as e:"},{"line_number":177,"context_line":"            raise exc_to_raise(e.args)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        if not cls.__skip_checks_called:"},{"line_number":180,"context_line":"            raise RuntimeError(\"skip_checks for %s did not call the super\u0027s \""}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_d0b291e6","line":177,"range":{"start_line":176,"start_character":8,"end_line":177,"end_character":38},"in_reply_to":"5faad753_5ae560a7","updated":"2019-09-11 14:18:34.000000000","message":"you mean to handle the general Exception ?\n\nbecause an exception raised from self.skip_checks() can be unittest.case.SkipTest or unittest2.case.SkipTest (based on L169 condition) so cathcing self.skipException would not work. \n\n\u0027if\u0027 case: unittest2.case.SkipTest is treated as an error not skip so convert that to unittest.case.SkipTest. capturing unittest.case.SkipTest also would not work as it will break the skip test flow.\n\n\u0027else\u0027 case: unittest.case.SkipTest is treated as error and convert that to unittest2.case.SkipTest. capturing unittest2.case.SkipTest also would not work as it will break the skip test flow.","commit_id":"d0f0323fe885cdc0937daa727624f8da2b93b6a9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5e2b606054a2aa262564501a1c5b3936f0c973d4","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                exc \u003d unittest.case.SkipTest"},{"line_number":174,"context_line":"                exc_to_raise \u003d unittest2.case.SkipTest"},{"line_number":175,"context_line":"            cls.skip_checks()"},{"line_number":176,"context_line":"        except exc as e:"},{"line_number":177,"context_line":"            raise exc_to_raise(e.args)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        if not cls.__skip_checks_called:"},{"line_number":180,"context_line":"            raise RuntimeError(\"skip_checks for %s did not call the super\u0027s \""}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_70d63df4","line":177,"range":{"start_line":176,"start_character":8,"end_line":177,"end_character":38},"in_reply_to":"5faad753_d0b291e6","updated":"2019-09-11 14:20:00.000000000","message":"we can handle the case you mentioned by catching the Exception and just try self.skip_checks() ?","commit_id":"d0f0323fe885cdc0937daa727624f8da2b93b6a9"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6c7a392d588179a333e695834421e31d2ecb1623","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        # the customize test runner(which use stdlib unittest) for \u003e\u003dpy3.5"},{"line_number":156,"context_line":"        # else testtools.run.- https://github.com/mtreinish/stestr/pull/265"},{"line_number":157,"context_line":"        # These two test runner are not compatible due to skip exception"},{"line_number":158,"context_line":"        # handling(due to unittest2). testtools.run treat unittestt.SkipTest"},{"line_number":159,"context_line":"        # as error and stdlib unittest treat unittest2.case.SkipTest raised"},{"line_number":160,"context_line":"        # by testtools.TestCase.skipException."},{"line_number":161,"context_line":"        # The below workaround can be removed once testtools fix issue# 272."},{"line_number":162,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5faad753_3fb96d2d","line":159,"range":{"start_line":158,"start_character":58,"end_line":159,"end_character":68},"updated":"2019-09-11 17:19:47.000000000","message":"FWIW, Swift defined a new SkipTest exception that inherited from *both*, I think to work around a similar issue: https://github.com/openstack/swift/blob/2.22.0/test/unit/__init__.py#L61-L66\n\nMaybe that\u0027d work here, too? Has the advantage of not needing to do any version-sniffing of stestr or python...","commit_id":"3e61b1f6deedb2a20d746b26494111d4243e6b0e"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"443fb1b438e0cb214dbbc5983937b5d1627fc7aa","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        # by testtools.TestCase.skipException."},{"line_number":165,"context_line":"        # The below workaround can be removed once testtools fix issue# 272."},{"line_number":166,"context_line":"        exc \u003d DummyException"},{"line_number":167,"context_line":"        exc_to_raise \u003d DummyException"},{"line_number":168,"context_line":"        try:"},{"line_number":169,"context_line":"            try:"},{"line_number":170,"context_line":"                stestr_version \u003d pkg_resources.parse_version("}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_5dfbed45","line":167,"updated":"2019-09-13 07:11:14.000000000","message":"I\u0027m not sure when these exceptions are used below. Why do we need DummyException? I think exc and exc_to_raise will be unittest*.case.SkipTest soon in any case.\n\nProbably, I miss something, though.","commit_id":"c2e59041d603e24f9a65543916a9166cb021f745"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ccebdedcd5dd37646142e5e95af24947e0728ca7","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        # by testtools.TestCase.skipException."},{"line_number":165,"context_line":"        # The below workaround can be removed once testtools fix issue# 272."},{"line_number":166,"context_line":"        exc \u003d DummyException"},{"line_number":167,"context_line":"        exc_to_raise \u003d DummyException"},{"line_number":168,"context_line":"        try:"},{"line_number":169,"context_line":"            try:"},{"line_number":170,"context_line":"                stestr_version \u003d pkg_resources.parse_version("}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_cfde3e6c","line":167,"in_reply_to":"5faad753_4c333c15","updated":"2019-09-13 16:41:25.000000000","message":"Let me add these under L182 for better clarity.","commit_id":"c2e59041d603e24f9a65543916a9166cb021f745"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"339b0b1575f75bbc5966a39a587210ffa0dfb252","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        # by testtools.TestCase.skipException."},{"line_number":165,"context_line":"        # The below workaround can be removed once testtools fix issue# 272."},{"line_number":166,"context_line":"        exc \u003d DummyException"},{"line_number":167,"context_line":"        exc_to_raise \u003d DummyException"},{"line_number":168,"context_line":"        try:"},{"line_number":169,"context_line":"            try:"},{"line_number":170,"context_line":"                stestr_version \u003d pkg_resources.parse_version("}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_6f54eaff","line":167,"in_reply_to":"5faad753_4c333c15","updated":"2019-09-13 08:05:56.000000000","message":"Now I understand with the conversation in IRC[0]. DummyException is needed for L.168-L.175 and need to catch at L.201, and need to distinguish Exception because L.203 has it.\n\n[0] http://eavesdrop.openstack.org/irclogs/%23openstack-qa/%23openstack-qa.2019-09-13.log.html#t2019-09-13T07:08:46","commit_id":"c2e59041d603e24f9a65543916a9166cb021f745"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6d2934ec1cf525e3e6dee0cbc0875573e0e0a8e1","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        # by testtools.TestCase.skipException."},{"line_number":165,"context_line":"        # The below workaround can be removed once testtools fix issue# 272."},{"line_number":166,"context_line":"        exc \u003d DummyException"},{"line_number":167,"context_line":"        exc_to_raise \u003d DummyException"},{"line_number":168,"context_line":"        try:"},{"line_number":169,"context_line":"            try:"},{"line_number":170,"context_line":"                stestr_version \u003d pkg_resources.parse_version("}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_4c333c15","line":167,"in_reply_to":"5faad753_5dfbed45","updated":"2019-09-13 07:13:37.000000000","message":"that was needed for L201 if any exception occur before L175 and exc and exc_to_raise will be undefined var.","commit_id":"c2e59041d603e24f9a65543916a9166cb021f745"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"50ed194e985ae1df62d5086c6bf6ec11314ddf34","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        cls._teardowns \u003d []"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    @classmethod"},{"line_number":148,"context_line":"    def handle_skip_exception(cls):"},{"line_number":149,"context_line":"        try:"},{"line_number":150,"context_line":"            stestr_version \u003d pkg_resources.parse_version("},{"line_number":151,"context_line":"                pkg_resources.get_distribution(\"stestr\").version)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_8f1e6bb8","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":29},"updated":"2019-09-19 02:42:14.000000000","message":"Another small thing to consider here is to make this private via _ naming prefix. I think that the testtools bug could take a very long time to fix judging by the inactivity in that repo. So maybe we should consider discouraging people from using this outside this module itself.","commit_id":"68ddf4189158852a2d18fa1c57fd38342f128c9c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2d6b4f514ee2ae6fd11b52829539ca4dac3735dd","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        cls._teardowns \u003d []"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    @classmethod"},{"line_number":148,"context_line":"    def handle_skip_exception(cls):"},{"line_number":149,"context_line":"        try:"},{"line_number":150,"context_line":"            stestr_version \u003d pkg_resources.parse_version("},{"line_number":151,"context_line":"                pkg_resources.get_distribution(\"stestr\").version)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_4146f823","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":29},"in_reply_to":"3fa7e38b_2f62d73f","updated":"2019-09-19 17:36:01.000000000","message":"+1. I can do that in followup as we need to get this in for req freeze.","commit_id":"68ddf4189158852a2d18fa1c57fd38342f128c9c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"03162c354c461713e05271de0f61b7cb37b50a3a","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        cls._teardowns \u003d []"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    @classmethod"},{"line_number":148,"context_line":"    def handle_skip_exception(cls):"},{"line_number":149,"context_line":"        try:"},{"line_number":150,"context_line":"            stestr_version \u003d pkg_resources.parse_version("},{"line_number":151,"context_line":"                pkg_resources.get_distribution(\"stestr\").version)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_2cd837ed","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":29},"in_reply_to":"3fa7e38b_4146f823","updated":"2019-10-11 08:49:07.000000000","message":"done in https://review.opendev.org/#/c/687999/2","commit_id":"68ddf4189158852a2d18fa1c57fd38342f128c9c"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"3585956d36aadf5df84c158dc89ca0a2ceb2a206","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        cls._teardowns \u003d []"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    @classmethod"},{"line_number":148,"context_line":"    def handle_skip_exception(cls):"},{"line_number":149,"context_line":"        try:"},{"line_number":150,"context_line":"            stestr_version \u003d pkg_resources.parse_version("},{"line_number":151,"context_line":"                pkg_resources.get_distribution(\"stestr\").version)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_2f62d73f","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":29},"in_reply_to":"3fa7e38b_8f1e6bb8","updated":"2019-09-19 02:47:01.000000000","message":"+1, indeed","commit_id":"68ddf4189158852a2d18fa1c57fd38342f128c9c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"6157fdbebe2e98fec993a2f09be655d9f6485e48","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                exc_to_raise \u003d unittest.case.SkipTest"},{"line_number":159,"context_line":"            else:"},{"line_number":160,"context_line":"                exc \u003d unittest.case.SkipTest"},{"line_number":161,"context_line":"                exc_to_raise \u003d unittest2.case.SkipTest"},{"line_number":162,"context_line":"        except Exception:"},{"line_number":163,"context_line":"            exc \u003d DummyException"},{"line_number":164,"context_line":"            exc_to_raise \u003d DummyException"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_144b6e84","line":161,"range":{"start_line":161,"start_character":16,"end_line":161,"end_character":54},"updated":"2019-09-19 02:02:56.000000000","message":"A silly question:\nWhy can\u0027t we always use unittest.case.SkipTest?\nBesides, what if the users don\u0027t use stestr, what if they use the old test runner like nosetests?","commit_id":"68ddf4189158852a2d18fa1c57fd38342f128c9c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"3e40619c63b69e2455bfe774051dd6569c77263e","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                exc_to_raise \u003d unittest.case.SkipTest"},{"line_number":159,"context_line":"            else:"},{"line_number":160,"context_line":"                exc \u003d unittest.case.SkipTest"},{"line_number":161,"context_line":"                exc_to_raise \u003d unittest2.case.SkipTest"},{"line_number":162,"context_line":"        except Exception:"},{"line_number":163,"context_line":"            exc \u003d DummyException"},{"line_number":164,"context_line":"            exc_to_raise \u003d DummyException"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_8fc66b67","line":161,"range":{"start_line":161,"start_character":16,"end_line":161,"end_character":54},"updated":"2019-09-19 02:32:14.000000000","message":"seems when using old testtools, unittest2.case.SkipTest will be treated as FAIL/ERROR","commit_id":"68ddf4189158852a2d18fa1c57fd38342f128c9c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2d6b4f514ee2ae6fd11b52829539ca4dac3735dd","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                exc_to_raise \u003d unittest.case.SkipTest"},{"line_number":159,"context_line":"            else:"},{"line_number":160,"context_line":"                exc \u003d unittest.case.SkipTest"},{"line_number":161,"context_line":"                exc_to_raise \u003d unittest2.case.SkipTest"},{"line_number":162,"context_line":"        except Exception:"},{"line_number":163,"context_line":"            exc \u003d DummyException"},{"line_number":164,"context_line":"            exc_to_raise \u003d DummyException"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_815dd0ea","line":161,"range":{"start_line":161,"start_character":16,"end_line":161,"end_character":54},"in_reply_to":"3fa7e38b_0fb03bf4","updated":"2019-09-19 17:36:01.000000000","message":"yeah, it is internally used so user cannot change that.","commit_id":"68ddf4189158852a2d18fa1c57fd38342f128c9c"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"f1741ecc59348dab88f93518ef28f50e8fdadf10","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                exc_to_raise \u003d unittest.case.SkipTest"},{"line_number":159,"context_line":"            else:"},{"line_number":160,"context_line":"                exc \u003d unittest.case.SkipTest"},{"line_number":161,"context_line":"                exc_to_raise \u003d unittest2.case.SkipTest"},{"line_number":162,"context_line":"        except Exception:"},{"line_number":163,"context_line":"            exc \u003d DummyException"},{"line_number":164,"context_line":"            exc_to_raise \u003d DummyException"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_0fb03bf4","line":161,"range":{"start_line":161,"start_character":16,"end_line":161,"end_character":54},"in_reply_to":"3fa7e38b_144b6e84","updated":"2019-09-19 02:41:02.000000000","message":"That should be cleaner but Tempest uses stestr when we use the tempest CLI commands for example `tempest run`. And, it is to avoid to force users to install/use the latest stestr. So, I think we need to care about the stestr version.","commit_id":"68ddf4189158852a2d18fa1c57fd38342f128c9c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"54ff8bd4608a9a30eeda630a7447b82cb41f5a71","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        # The below workaround can be removed once testtools fix issue# 272."},{"line_number":186,"context_line":"        try:"},{"line_number":187,"context_line":"            exc, exc_to_raise \u003d cls.handle_skip_exception()"},{"line_number":188,"context_line":"            cls.skip_checks()"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"            if not cls.__skip_checks_called:"},{"line_number":191,"context_line":"                raise RuntimeError("}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_d4695625","line":188,"range":{"start_line":188,"start_character":12,"end_line":188,"end_character":29},"updated":"2019-09-19 01:45:33.000000000","message":"We add workaround for cls.skip_checks(), and if we use \"raise cls.skipException\" in testcases, no workaround is for that?\nI tried both positions for skipping testcases, and I got different results:\nSKIP: aaaaaa\nSkipTest: (\u0027aaaaa\u0027,)\nDoes it matter?","commit_id":"68ddf4189158852a2d18fa1c57fd38342f128c9c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"03162c354c461713e05271de0f61b7cb37b50a3a","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        # The below workaround can be removed once testtools fix issue# 272."},{"line_number":186,"context_line":"        try:"},{"line_number":187,"context_line":"            exc, exc_to_raise \u003d cls.handle_skip_exception()"},{"line_number":188,"context_line":"            cls.skip_checks()"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"            if not cls.__skip_checks_called:"},{"line_number":191,"context_line":"                raise RuntimeError("}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_0c569b5d","line":188,"range":{"start_line":188,"start_character":12,"end_line":188,"end_character":29},"in_reply_to":"3fa7e38b_d4695625","updated":"2019-10-11 08:49:07.000000000","message":"We are good on skipException from test code. That is handled by\nteststools.TestCase\u0027s self.exception_handlers\n- https://github.com/testing-cabal/testtools/blob/f51ce5f934153e80d3e8a95b52e1464daeb30c14/testtools/testcase.py#L275\nMapped handler _report_skip() will add the respective tests to skip list","commit_id":"68ddf4189158852a2d18fa1c57fd38342f128c9c"}]}
