From 76978610116c16fbeae8422366628ee217bc376b Mon Sep 17 00:00:00 2001 From: David Wilson Date: Tue, 26 Jun 2018 04:46:07 +0100 Subject: [PATCH] tests: skip one test that triggers bug in ancient vendered six.py --- tests/module_finder_test.py | 51 ++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/tests/module_finder_test.py b/tests/module_finder_test.py index 2e9447de..9c85e26c 100644 --- a/tests/module_finder_test.py +++ b/tests/module_finder_test.py @@ -129,7 +129,35 @@ class ResolveRelPathTest(testlib.TestCase): self.assertEquals('', self.call('email.utils', 3)) -class FindRelatedImportsTest(testlib.TestCase): +class DjangoMixin(object): + WEBPROJECT_PATH = testlib.data_path('webproject') + + # TODO: rip out Django and replace with a static tree of weird imports that + # don't depend on .. Django! The hack below is because the version of + # Django we need to test against 2.6 doesn't actually run on 3.6. But we + # don't care, we just need to be able to import it. + # + # File "django/utils/html_parser.py", line 12, in + # AttributeError: module 'html.parser' has no attribute 'HTMLParseError' + # + import pkg_resources._vendor.six + from django.utils.six.moves import html_parser as _html_parser + _html_parser.HTMLParseError = Exception + + @classmethod + def setUpClass(cls): + super(DjangoMixin, cls).setUpClass() + sys.path.append(cls.WEBPROJECT_PATH) + os.environ['DJANGO_SETTINGS_MODULE'] = 'webproject.settings' + + @classmethod + def tearDownClass(cls): + sys.path.remove(cls.WEBPROJECT_PATH) + del os.environ['DJANGO_SETTINGS_MODULE'] + super(DjangoMixin, cls).tearDownClass() + + +class FindRelatedImportsTest(DjangoMixin, testlib.TestCase): klass = mitogen.master.ModuleFinder def call(self, fullname): @@ -180,7 +208,7 @@ class FindRelatedImportsTest(testlib.TestCase): ]) -class FindRelatedTest(testlib.TestCase): +class FindRelatedTest(DjangoMixin, testlib.TestCase): klass = mitogen.master.ModuleFinder def call(self, fullname): @@ -206,27 +234,13 @@ class FindRelatedTest(testlib.TestCase): self.assertEquals(set(related), self.SIMPLE_EXPECT) -class DjangoFindRelatedTest(testlib.TestCase): +class DjangoFindRelatedTest(DjangoMixin, testlib.TestCase): klass = mitogen.master.ModuleFinder maxDiff = None def call(self, fullname): return self.klass().find_related(fullname) - WEBPROJECT_PATH = testlib.data_path('webproject') - - @classmethod - def setUpClass(cls): - super(DjangoFindRelatedTest, cls).setUpClass() - sys.path.append(cls.WEBPROJECT_PATH) - os.environ['DJANGO_SETTINGS_MODULE'] = 'webproject.settings' - - @classmethod - def tearDownClass(cls): - sys.path.remove(cls.WEBPROJECT_PATH) - del os.environ['DJANGO_SETTINGS_MODULE'] - super(DjangoFindRelatedTest, cls).tearDownClass() - def test_django_db(self): import django.db related = self.call('django.db') @@ -251,6 +265,9 @@ class DjangoFindRelatedTest(testlib.TestCase): ]) def test_django_db_models(self): + if sys.version_info >= (3, 0): + raise unittest2.SkipTest('broken due to ancient vendored six.py') + import django.db.models related = self.call('django.db.models') self.assertEquals(related, [