summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2003-08-09 03:30:48 (GMT)
committerSteven Knight <knight@baldmt.com>2003-08-09 03:30:48 (GMT)
commitef6d3c2883fc43048e4eb5418eeb082d58b9d6cb (patch)
tree6b82fbae7e677011698bc39debd81d1572ff5c8c /src/engine/SCons/Node
parent2e861a0422e5330249e360b5098b3ad00d26b5e9 (diff)
downloadSCons-ef6d3c2883fc43048e4eb5418eeb082d58b9d6cb.zip
SCons-ef6d3c2883fc43048e4eb5418eeb082d58b9d6cb.tar.gz
SCons-ef6d3c2883fc43048e4eb5418eeb082d58b9d6cb.tar.bz2
Multi-level build dir with Object() and duplicate=0.
Diffstat (limited to 'src/engine/SCons/Node')
-rw-r--r--src/engine/SCons/Node/FS.py4
-rw-r--r--src/engine/SCons/Node/FSTests.py12
2 files changed, 16 insertions, 0 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index d12a504..249c8c6 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -1455,6 +1455,10 @@ class File(Base):
return dir, os.path.join(dir, bsig)
return None, None
+ def target_from_source(self, prefix, suffix, splitext=SCons.Util.splitext):
+ return self.dir.File(prefix + splitext(self.name)[0] + suffix)
+
+
default_fs = FS()
diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py
index d651e1c..17d037d 100644
--- a/src/engine/SCons/Node/FSTests.py
+++ b/src/engine/SCons/Node/FSTests.py
@@ -1074,6 +1074,18 @@ class FSTestCase(unittest.TestCase):
f.get_string(0)
assert f.get_string(1) == 'baz', f.get_string(1)
+ x = fs.File('x.c')
+ t = x.target_from_source('pre-', '-suf')
+ assert str(t) == 'pre-x-suf', str(t)
+
+ y = fs.File('dir/y')
+ t = y.target_from_source('pre-', '-suf')
+ assert str(t) == 'dir/pre-y-suf', str(t)
+
+ z = fs.File('zz')
+ t = z.target_from_source('pre-', '-suf', lambda x: x[:-1])
+ assert str(t) == 'pre-z-suf', str(t)
+
class EntryTestCase(unittest.TestCase):
def runTest(self):
"""Test methods specific to the Entry sub-class.