Kaydet (Commit) 90333396 authored tarafından Christian Heimes's avatar Christian Heimes

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.
üst e02647a6
...@@ -3,10 +3,11 @@ from test.test_support import TESTFN, run_unittest, catch_warning ...@@ -3,10 +3,11 @@ from test.test_support import TESTFN, run_unittest, catch_warning
import unittest import unittest
import os import os
import random import random
import shutil
import sys import sys
import py_compile import py_compile
import warnings import warnings
from test.test_support import unlink from test.test_support import unlink, TESTFN, unload
def remove_files(name): def remove_files(name):
...@@ -157,8 +158,37 @@ class ImportTest(unittest.TestCase): ...@@ -157,8 +158,37 @@ class ImportTest(unittest.TestCase):
warnings.simplefilter('error', ImportWarning) warnings.simplefilter('error', ImportWarning)
self.assertRaises(ImportWarning, __import__, "site-packages") 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): def test_main(verbose=None):
run_unittest(ImportTest) run_unittest(ImportTest, UnicodePathsTests)
if __name__ == '__main__': if __name__ == '__main__':
test_main() test_main()
...@@ -191,20 +191,26 @@ from test import mapping_tests ...@@ -191,20 +191,26 @@ from test import mapping_tests
class EnvironTests(mapping_tests.BasicTestMappingProtocol): class EnvironTests(mapping_tests.BasicTestMappingProtocol):
"""check that os.environ object conform to mapping protocol""" """check that os.environ object conform to mapping protocol"""
type2test = None 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): def setUp(self):
self.__save = dict(os.environ) self.__save = dict(os.environ)
os.environ.clear() for key, value in self._reference().items():
os.environ[key] = value
def tearDown(self): def tearDown(self):
os.environ.clear() os.environ.clear()
os.environ.update(self.__save) 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 # Bug 1110478
def test_update2(self): def test_update2(self):
os.environ.clear()
if os.path.exists("/bin/sh"): if os.path.exists("/bin/sh"):
os.environ.update(HELLO="World") os.environ.update(HELLO="World")
value = os.popen("/bin/sh -c 'echo $HELLO'").read().strip() value = os.popen("/bin/sh -c 'echo $HELLO'").read().strip()
...@@ -217,6 +223,10 @@ class EnvironTests(mapping_tests.BasicTestMappingProtocol): ...@@ -217,6 +223,10 @@ class EnvironTests(mapping_tests.BasicTestMappingProtocol):
self.assertEquals(type(key), str) self.assertEquals(type(key), str)
self.assertEquals(type(val), 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): class WalkTests(unittest.TestCase):
"""Tests for os.walk().""" """Tests for os.walk()."""
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment