summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-04-01 00:20:09 (GMT)
committerSteven Knight <knight@baldmt.com>2004-04-01 00:20:09 (GMT)
commit25b984647e137b2b63c2a32e791c95c7cc2fedae (patch)
tree4aa26bcf65008ce67efbda6e1e2db9d274883379 /src/engine/SCons
parent36c526a3be47db75e1469de09da243ca66528998 (diff)
downloadSCons-25b984647e137b2b63c2a32e791c95c7cc2fedae.zip
SCons-25b984647e137b2b63c2a32e791c95c7cc2fedae.tar.gz
SCons-25b984647e137b2b63c2a32e791c95c7cc2fedae.tar.bz2
Fix a bug in CVS checkouts when env.SourceCode() is called with a File, not a Directory.
Diffstat (limited to 'src/engine/SCons')
-rw-r--r--src/engine/SCons/Node/FS.py4
-rw-r--r--src/engine/SCons/Node/FSTests.py23
2 files changed, 25 insertions, 2 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index 3bf2ee4..bb13afc 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -187,7 +187,7 @@ def CachePushFunc(target, source, env):
return
if not fs.isdir(cachedir):
- fs.mkdir(cachedir)
+ fs.makedirs(cachedir)
tempfile = cachefile+'.tmp'
try:
@@ -515,6 +515,8 @@ class Base(SCons.Node.Node):
def set_src_builder(self, builder):
"""Set the source code builder for this node."""
self.sbuilder = builder
+ if not self.has_builder():
+ self.builder_set(builder)
def src_builder(self):
"""Fetch the source code builder for this node.
diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py
index 94280f7..b1999e0 100644
--- a/src/engine/SCons/Node/FSTests.py
+++ b/src/engine/SCons/Node/FSTests.py
@@ -1432,30 +1432,51 @@ class has_src_builderTestCase(unittest.TestCase):
f4 = fs.File('f4', sub2)
f5 = fs.File('f5', sub2)
f6 = fs.File('f6', sub2)
+ f7 = fs.File('f7', sub2)
h = f1.has_src_builder()
assert not h, h
+ h = f1.has_builder()
+ assert not h, h
b1 = Builder(fs.File)
sub1.set_src_builder(b1)
test.write(['sub1', 'f2'], "sub1/f2\n")
- h = f1.has_src_builder() # cached from previous call
+ h = f1.has_src_builder() # cached from previous call
+ assert not h, h
+ h = f1.has_builder() # cached from previous call
assert not h, h
h = f2.has_src_builder()
assert not h, h
+ h = f2.has_builder()
+ assert not h, h
h = f3.has_src_builder()
assert h, h
+ h = f3.has_builder()
+ assert h, h
assert f3.builder is b1, f3.builder
+ f7.set_src_builder(b1)
+
test.write(['sub2', 'SCCS', 's.f5'], "sub2/SCCS/s.f5\n")
test.write(['sub2', 'RCS', 'f6,v'], "sub2/RCS/f6,v\n")
h = f4.has_src_builder()
assert not h, h
+ h = f4.has_builder()
+ assert not h, h
h = f5.has_src_builder()
assert h, h
+ h = f5.has_builder()
+ assert h, h
h = f6.has_src_builder()
assert h, h
+ h = f6.has_builder()
+ assert h, h
+ h = f7.has_src_builder()
+ assert h, h
+ h = f7.has_builder()
+ assert h, h
class prepareTestCase(unittest.TestCase):
def runTest(self):