]> granicus.if.org Git - python/commitdiff
Fixed unit tests for os.environ. Some of the tests didn't test at all because os...
authorChristian Heimes <christian@cheimes.de>
Thu, 1 Nov 2007 19:08:42 +0000 (19:08 +0000)
committerChristian Heimes <christian@cheimes.de>
Thu, 1 Nov 2007 19:08:42 +0000 (19:08 +0000)
Added import test for sys.path entries with non ASCII characters. The tests are passing on my Ubuntu box with utf-8 locales but they aren't passing on Windows XP.

Lib/test/test_import.py
Lib/test/test_os.py

index 32039045f992dde2008f5aa625866af00e6fbd49..7bb122d9b33cdb16f3836f9a1eaee851d021db2d 100644 (file)
@@ -3,10 +3,11 @@ from test.test_support import TESTFN, run_unittest, catch_warning
 import unittest
 import os
 import random
+import shutil
 import sys
 import py_compile
 import warnings
-from test.test_support import unlink
+from test.test_support import unlink, TESTFN, unload
 
 
 def remove_files(name):
@@ -157,8 +158,37 @@ class ImportTest(unittest.TestCase):
             warnings.simplefilter('error', ImportWarning)
             self.assertRaises(ImportWarning, __import__, "site-packages")
 
+class UnicodePathsTests(unittest.TestCase):
+    SAMPLES = ('test', 'testäöüß', 'testéè', 'test°³²')
+    path = TESTFN
+
+    def setUp(self):
+        os.mkdir(self.path)
+        self.syspath = sys.path[:]
+
+    def tearDown(self):
+        shutil.rmtree(self.path)
+        sys.path = self.syspath
+
+    def test_sys_path(self):
+        for i, subpath in enumerate(self.SAMPLES):
+            path = os.path.join(self.path, subpath)
+            os.mkdir(path)
+            self.failUnless(os.path.exists(path), os.listdir(self.path))
+            f = open(os.path.join(path, 'testimport%i.py' % i), 'w')
+            f.write("testdata = 'unicode path %i'\n" % i)
+            f.close()
+            sys.path.append(path)
+            try:
+                mod = __import__("testimport%i" % i)
+            except ImportError:
+                print(path, file=sys.stderr)
+                raise
+            self.assertEqual(mod.testdata, 'unicode path %i' % i)
+            unload("testimport%i" % i)
+
 def test_main(verbose=None):
-    run_unittest(ImportTest)
+    run_unittest(ImportTest, UnicodePathsTests)
 
 if __name__ == '__main__':
     test_main()
index 0fe738264c8a166ffef9b1c02d8c4a2516b477ae..088101fd2b2bc71015528b346ebc086514d7ba0a 100644 (file)
@@ -191,20 +191,26 @@ from test import mapping_tests
 class EnvironTests(mapping_tests.BasicTestMappingProtocol):
     """check that os.environ object conform to mapping protocol"""
     type2test = None
-    def _reference(self):
-        return {"KEY1":"VALUE1", "KEY2":"VALUE2", "KEY3":"VALUE3"}
-    def _empty_mapping(self):
-        os.environ.clear()
-        return os.environ
+
     def setUp(self):
         self.__save = dict(os.environ)
-        os.environ.clear()
+        for key, value in self._reference().items():
+            os.environ[key] = value
+
     def tearDown(self):
         os.environ.clear()
         os.environ.update(self.__save)
 
+    def _reference(self):
+        return {"KEY1":"VALUE1", "KEY2":"VALUE2", "KEY3":"VALUE3"}
+
+    def _empty_mapping(self):
+        os.environ.clear()
+        return os.environ
+
     # Bug 1110478
     def test_update2(self):
+        os.environ.clear()
         if os.path.exists("/bin/sh"):
             os.environ.update(HELLO="World")
             value = os.popen("/bin/sh -c 'echo $HELLO'").read().strip()
@@ -217,6 +223,10 @@ class EnvironTests(mapping_tests.BasicTestMappingProtocol):
             self.assertEquals(type(key), str)
             self.assertEquals(type(val), str)
 
+    def test_items(self):
+        for key, value in self._reference().items():
+            self.assertEqual(os.environ.get(key), value)
+
 class WalkTests(unittest.TestCase):
     """Tests for os.walk()."""