1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
__revision__ = "Node/FSTests.py __REVISION__ __DATE__ __DEVELOPER__"
import os
import sys
import unittest
from scons.Node.FS import init, lookup, Dir, File
built_it = None
class Builder:
def execute(self, target = None, source = None):
global built_it
built_it = 1
class FSTestCase(unittest.TestCase):
def runTest(self):
"""This test case handles all of the file system node
tests in one environment, so we don't have to set up a
complicated directory structure for each test individually.
"""
from TestCmd import TestCmd
test = TestCmd(workdir = '')
test.subdir('sub', ['sub', 'dir'])
wp = test.workpath('')
sub = test.workpath('sub', '')
sub_dir = test.workpath('sub', 'dir', '')
sub_dir_foo = test.workpath('sub', 'dir', 'foo', '')
sub_dir_foo_bar = test.workpath('sub', 'dir', 'foo', 'bar', '')
sub_foo = test.workpath('sub', 'foo', '')
os.chdir(sub_dir)
init()
def Dir_test(lpath, path, abspath, up_path):
dir = lookup(Dir, lpath)
assert(dir.path == path)
assert(dir.abspath == abspath)
assert(dir.up().path == up_path)
Dir_test('foo', 'foo/', sub_dir_foo, '.')
Dir_test('foo/bar', 'foo/bar/', sub_dir_foo_bar, 'foo/')
Dir_test('/foo', '/foo/', '/foo/', '/')
Dir_test('/foo/bar', '/foo/bar/', '/foo/bar/', '/foo/')
Dir_test('..', sub, sub, wp)
Dir_test('foo/..', '.', sub_dir, sub)
Dir_test('../foo', sub_foo, sub_foo, sub)
Dir_test('.', '.', sub_dir, sub)
Dir_test('./.', '.', sub_dir, sub)
Dir_test('foo/./bar', 'foo/bar/', sub_dir_foo_bar, 'foo/')
d1 = lookup(Dir, 'd1')
f1 = lookup(File, 'f1', directory = d1)
assert(f1.path == 'd1/f1')
try:
f2 = lookup(File, 'f1/f2', directory = d1)
except TypeError, x:
node = x.args[0]
assert(node.path == 'd1/f1')
assert(node.__class__.__name__ == 'File')
except:
raise
try:
dir = lookup(Dir, 'd1/f1')
except TypeError, x:
node = x.args[0]
assert(node.path == 'd1/f1')
assert(node.__class__.__name__ == 'File')
except:
raise
# Test for sub-classing of node building.
global built_it
built_it = None
assert not built_it
d1.path = "d" # XXX FAKE SUBCLASS ATTRIBUTE
d1.sources = "d" # XXX FAKE SUBCLASS ATTRIBUTE
d1.builder_set(Builder())
d1.build()
assert built_it
built_it = None
assert not built_it
f1.path = "f" # XXX FAKE SUBCLASS ATTRIBUTE
f1.sources = "f" # XXX FAKE SUBCLASS ATTRIBUTE
f1.builder_set(Builder())
f1.build()
assert built_it
if __name__ == "__main__":
suite = unittest.TestSuite()
suite.addTest(FSTestCase())
if not unittest.TextTestRunner().run(suite).wasSuccessful():
sys.exit(1)
|