OLD | NEW |
| (Empty) |
1 import sys, os | |
2 from twisted.trial import unittest | |
3 | |
4 testModule = """ | |
5 from twisted.trial import unittest | |
6 | |
7 class FooTest(unittest.TestCase): | |
8 def testFoo(self): | |
9 pass | |
10 """ | |
11 | |
12 dosModule = testModule.replace('\n', '\r\n') | |
13 | |
14 | |
15 testSample = """ | |
16 '''This module is used by test_loader to test the Trial test loading | |
17 functionality. Do NOT change the number of tests in this module. | |
18 Do NOT change the names the tests in this module. | |
19 ''' | |
20 | |
21 import unittest as pyunit | |
22 from twisted.trial import unittest | |
23 | |
24 class FooTest(unittest.TestCase): | |
25 def test_foo(self): | |
26 pass | |
27 | |
28 def test_bar(self): | |
29 pass | |
30 | |
31 | |
32 class PyunitTest(pyunit.TestCase): | |
33 def test_foo(self): | |
34 pass | |
35 | |
36 def test_bar(self): | |
37 pass | |
38 | |
39 | |
40 class NotATest(object): | |
41 def test_foo(self): | |
42 pass | |
43 | |
44 | |
45 class AlphabetTest(unittest.TestCase): | |
46 def test_a(self): | |
47 pass | |
48 | |
49 def test_b(self): | |
50 pass | |
51 | |
52 def test_c(self): | |
53 pass | |
54 """ | |
55 | |
56 | |
57 class PackageTest(unittest.TestCase): | |
58 files = [ | |
59 ('badpackage/__init__.py', 'frotz\n'), | |
60 ('badpackage/test_module.py', ''), | |
61 ('package2/__init__.py', ''), | |
62 ('package2/test_module.py', 'import frotz\n'), | |
63 ('package/__init__.py', ''), | |
64 ('package/frotz.py', 'frotz\n'), | |
65 ('package/test_bad_module.py', | |
66 'raise ZeroDivisionError("fake error")'), | |
67 ('package/test_dos_module.py', dosModule), | |
68 ('package/test_import_module.py', 'import frotz'), | |
69 ('package/test_module.py', testModule), | |
70 ('goodpackage/__init__.py', ''), | |
71 ('goodpackage/test_sample.py', testSample), | |
72 ('goodpackage/sub/__init__.py', ''), | |
73 ('goodpackage/sub/test_sample.py', testSample) | |
74 ] | |
75 | |
76 def _toModuleName(self, filename): | |
77 name = os.path.splitext(filename)[0] | |
78 segs = name.split('/') | |
79 if segs[-1] == '__init__': | |
80 segs = segs[:-1] | |
81 return '.'.join(segs) | |
82 | |
83 def getModules(self): | |
84 return map(self._toModuleName, zip(*self.files)[0]) | |
85 | |
86 def cleanUpModules(self): | |
87 modules = self.getModules() | |
88 modules.sort() | |
89 modules.reverse() | |
90 for module in modules: | |
91 try: | |
92 del sys.modules[module] | |
93 except KeyError: | |
94 pass | |
95 | |
96 def createFiles(self, files, parentDir='.'): | |
97 for filename, contents in self.files: | |
98 filename = os.path.join(parentDir, filename) | |
99 self._createDirectory(filename) | |
100 fd = open(filename, 'w') | |
101 fd.write(contents) | |
102 fd.close() | |
103 | |
104 def _createDirectory(self, filename): | |
105 directory = os.path.dirname(filename) | |
106 if not os.path.exists(directory): | |
107 os.makedirs(directory) | |
108 | |
109 def setUp(self, parentDir=None): | |
110 if parentDir is None: | |
111 parentDir = self.mktemp() | |
112 self.parent = parentDir | |
113 self.createFiles(self.files, parentDir) | |
114 | |
115 def tearDown(self): | |
116 self.cleanUpModules() | |
117 | |
118 class SysPathManglingTest(PackageTest): | |
119 def setUp(self, parent=None): | |
120 self.oldPath = sys.path[:] | |
121 self.newPath = sys.path[:] | |
122 if parent is None: | |
123 parent = self.mktemp() | |
124 PackageTest.setUp(self, parent) | |
125 self.newPath.append(self.parent) | |
126 self.mangleSysPath(self.newPath) | |
127 | |
128 def tearDown(self): | |
129 PackageTest.tearDown(self) | |
130 self.mangleSysPath(self.oldPath) | |
131 | |
132 def mangleSysPath(self, pathVar): | |
133 sys.path[:] = pathVar | |
134 | |
OLD | NEW |