2
0
Эх сурвалжийг харах

Workaround particularities of Python under Windows that interfere with expected outputs in `admin_scripts` regression tests.

Thye were causing most of them to fail in such platform.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@16273 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Ramiro Morales 14 жил өмнө
parent
commit
c0303f5d81

+ 14 - 2
tests/regressiontests/admin_scripts/tests.py

@@ -157,7 +157,18 @@ class AdminScriptTestCase(unittest.TestCase):
 
     def assertNoOutput(self, stream):
         "Utility assertion: assert that the given stream is empty"
+        # HACK: Under Windows, ignore warnings of the form:
+        # 'warning: Not loading directory '...\tests\regressiontests\locale': missing __init__.py'
+        # It has been impossible to filter them out using other means like:
+        # * Using warning.filterwarnings() (for the Python interpreter running the
+        #   tests) and/or
+        # * Using -Wignore:... (for the python interpreter spawned in self.run_test())
+        # Instead use a strategy copied from Mercurial's setup.py
+        if sys.platform == 'win32':
+            stream = [e for e in stream.splitlines()
+                if not e.startswith('warning: Not importing directory')]
         self.assertEqual(len(stream), 0, "Stream should be empty: actually contains '%s'" % stream)
+
     def assertOutput(self, stream, msg):
         "Utility assertion: assert that the given message exists in the output"
         self.assertTrue(msg in stream, "'%s' does not match actual output text '%s'" % (msg, stream))
@@ -545,10 +556,11 @@ class DjangoAdminSettingsDirectory(AdminScriptTestCase):
         "directory: startapp creates the correct directory"
         test_dir = os.path.dirname(os.path.dirname(__file__))
         args = ['startapp','settings_test']
+        app_path = os.path.join(test_dir, 'settings_test')
         out, err = self.run_django_admin(args,'settings')
+        self.addCleanup(shutil.rmtree, app_path)
         self.assertNoOutput(err)
-        self.assertTrue(os.path.exists(os.path.join(test_dir, 'settings_test')))
-        shutil.rmtree(os.path.join(test_dir, 'settings_test'))
+        self.assertTrue(os.path.exists(app_path))
 
     def test_builtin_command(self):
         "directory: django-admin builtin commands fail with an import error when no settings provided"