Author: christian.heimes
Date: Thu Nov  1 20:08:42 2007
New Revision: 58747

Modified:
   python/branches/py3k/Lib/test/test_import.py
   python/branches/py3k/Lib/test/test_os.py
Log:
Fixed unit tests for os.environ. Some of the tests didn't test at all because 
os.environ was empty.
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.

Modified: python/branches/py3k/Lib/test/test_import.py
==============================================================================
--- python/branches/py3k/Lib/test/test_import.py        (original)
+++ python/branches/py3k/Lib/test/test_import.py        Thu Nov  1 20:08:42 2007
@@ -3,10 +3,11 @@
 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 @@
             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()

Modified: python/branches/py3k/Lib/test/test_os.py
==============================================================================
--- python/branches/py3k/Lib/test/test_os.py    (original)
+++ python/branches/py3k/Lib/test/test_os.py    Thu Nov  1 20:08:42 2007
@@ -191,20 +191,26 @@
 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 @@
             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()."""
 
_______________________________________________
Python-3000-checkins mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000-checkins

Reply via email to