summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-10-18 01:09:14 (GMT)
committerSteven Knight <knight@baldmt.com>2002-10-18 01:09:14 (GMT)
commit24f95ab2762edefba6fc7afd3a302c2d2d69c5e1 (patch)
treebc7cea9cfb1f13a66da2c59c652d170ee8d498ad /src/engine
parentbd91e792df09aebec78f7972e17eab873dc71246 (diff)
downloadSCons-24f95ab2762edefba6fc7afd3a302c2d2d69c5e1.zip
SCons-24f95ab2762edefba6fc7afd3a302c2d2d69c5e1.tar.gz
SCons-24f95ab2762edefba6fc7afd3a302c2d2d69c5e1.tar.bz2
Win32 test portability.
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/SCons/Action.py20
-rw-r--r--src/engine/SCons/ActionTests.py55
-rw-r--r--src/engine/SCons/Node/FSTests.py6
3 files changed, 51 insertions, 30 deletions
diff --git a/src/engine/SCons/Action.py b/src/engine/SCons/Action.py
index fcd0ec9..06d8dd9 100644
--- a/src/engine/SCons/Action.py
+++ b/src/engine/SCons/Action.py
@@ -56,6 +56,12 @@ def quote(x):
else:
return x
+def rfile(n):
+ try:
+ return n.rfile()
+ except AttributeError:
+ return n
+
if os.name == 'posix':
def escape(arg):
@@ -393,7 +399,10 @@ class CommandGeneratorAction(ActionBase):
return gen_cmd
def execute(self, target, source, env):
- return self.__generate(target, source, env, 0).execute(target, source, env)
+ if not SCons.Util.is_List(source):
+ source = [source]
+ rsources = map(rfile, source)
+ return self.__generate(target, source, env, 0).execute(target, rsources, env)
def get_contents(self, target, source, env):
"""Return the signature contents of this action's command line.
@@ -430,16 +439,11 @@ class FunctionAction(ActionBase):
if not SCons.Util.is_List(target):
target = [target]
- def rfile(n):
- try:
- return n.rfile()
- except AttributeError:
- return n
if not SCons.Util.is_List(source):
source = [source]
- source = map(rfile, source)
+ rsources = map(rfile, source)
- return self.function(target=target, source=source, env=env)
+ return self.function(target=target, source=rsources, env=env)
def get_contents(self, target, source, env):
"""Return the signature contents of this callable action.
diff --git a/src/engine/SCons/ActionTests.py b/src/engine/SCons/ActionTests.py
index ab98d02..2e53bbd 100644
--- a/src/engine/SCons/ActionTests.py
+++ b/src/engine/SCons/ActionTests.py
@@ -201,22 +201,26 @@ class CommandGeneratorActionTestCase(unittest.TestCase):
def f(target, source, env, for_signature, self=self):
dummy = env['dummy']
self.dummy = dummy
- assert env.subst("$FOO $( bar $) baz") == 'foo baz\nbar ack bar baz', env.subst("$FOO $( bar $) baz")
- assert env.subst("$FOO $( bar $) baz", raw=1) == 'foo baz\nbar ack $( bar $) baz', env.subst("$FOO $( bar $) baz", raw=1)
- assert env.subst_list("$FOO $( bar $) baz") == [ [ 'foo', 'baz' ],
- [ 'bar', 'ack', 'bar', 'baz' ] ], env.subst_list("$FOO $( bar $) baz")
- assert env.subst_list("$FOO $( bar $) baz",
- raw=1) == [ [ 'foo', 'baz' ],
- [ 'bar', 'ack', '$(', 'bar', '$)', 'baz' ] ], env.subst_list("$FOO $( bar $) baz", raw=1)
+ s = env.subst("$FOO $( bar $) baz")
+ assert s == 'foo baz\nbar ack bar baz', s
+ s = env.subst("$FOO $( bar $) baz", raw=1)
+ assert s == 'foo baz\nbar ack $( bar $) baz', s
+ s = env.subst_list("$FOO $( bar $) baz")
+ assert s == [[ 'foo', 'baz' ], [ 'bar', 'ack', 'bar', 'baz' ]], s
+ s = env.subst_list("$FOO $( bar $) baz", raw=1)
+ assert s == [[ 'foo', 'baz' ],
+ [ 'bar', 'ack', '$(', 'bar', '$)', 'baz' ]], s
return "$FOO"
- def func_action(target, source,env, self=self):
+ def func_action(target, source, env, self=self):
dummy=env['dummy']
- assert env.subst('$foo $( bar $)') == 'bar bar', env.subst('$foo $( bar $)')
- assert env.subst('$foo $( bar $)',
- raw=1) == 'bar $( bar $)', env.subst('$foo $( bar $)', raw=1)
- assert env.subst_list([ '$foo', '$(', 'bar', '$)' ]) == [[ 'bar', 'bar' ]], env.subst_list([ '$foo', '$(', 'bar', '$)' ])
- assert env.subst_list([ '$foo', '$(', 'bar', '$)' ],
- raw=1) == [[ 'bar', '$(', 'bar', '$)' ]], env.subst_list([ '$foo', '$(', 'bar', '$)' ], raw=1)
+ s = env.subst('$foo $( bar $)')
+ assert s == 'bar bar', s
+ s = env.subst('$foo $( bar $)', raw=1)
+ assert s == 'bar $( bar $)', s
+ s = env.subst_list([ '$foo', '$(', 'bar', '$)' ])
+ assert s == [[ 'bar', 'bar' ]], s
+ s = env.subst_list([ '$foo', '$(', 'bar', '$)' ], raw=1)
+ assert s == [[ 'bar', '$(', 'bar', '$)' ]], s
self.dummy=dummy
def f2(target, source, env, for_signature, f=func_action):
return f
@@ -231,19 +235,32 @@ class CommandGeneratorActionTestCase(unittest.TestCase):
self.args = []
try:
SCons.Action.SetCommandHandler(ch)
- a.execute([],[],env=Environment({ 'FOO' : 'foo baz\nbar ack' , 'dummy':1}))
+ a.execute([],[],env=Environment({ 'FOO' : 'foo baz\nbar ack',
+ 'dummy' : 1}))
finally:
SCons.Action.SetCommandHandler(old_hdl)
- assert self.dummy == 1
- assert self.cmd == [ 'foo', 'bar'], self.cmd
- assert self.args == [ [ 'foo', 'baz' ], [ 'bar', 'ack' ] ], self.args
+ assert self.dummy == 1, self.dummy
+ assert self.cmd == ['foo', 'bar'], self.cmd
+ assert self.args == [[ 'foo', 'baz' ], [ 'bar', 'ack' ]], self.args
b=SCons.Action.CommandGeneratorAction(f2)
self.dummy = 0
- b.execute(target=[], source=[], env=Environment({ 'foo' : 'bar','dummy':2 }))
+ b.execute(target=[], source=[], env=Environment({ 'foo' : 'bar',
+ 'dummy' : 2 }))
assert self.dummy==2, self.dummy
del self.dummy
+ class DummyFile:
+ def __init__(self, t):
+ self.t = t
+ def rfile(self):
+ self.t.rfile_called = 1
+ def f3(target, source, env, for_signature):
+ return ''
+ c=SCons.Action.CommandGeneratorAction(f3)
+ c.execute(target=[], source=DummyFile(self), env=Environment({}))
+ assert self.rfile_called
+
def test_get_contents(self):
"""Test fetching the contents of a command generator Action
"""
diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py
index 0c7bd69..1610ec6 100644
--- a/src/engine/SCons/Node/FSTests.py
+++ b/src/engine/SCons/Node/FSTests.py
@@ -194,7 +194,7 @@ class BuildDirTestCase(unittest.TestCase):
# But we do have a file in the Repository
assert f3.rexists()
# rfile() should point to the source path
- assert f3.rfile().path == test.workpath('rep1/src/test2.in'),\
+ assert f3.rfile().path == os.path.normpath(test.workpath('rep1/src/test2.in')),\
f3.rfile().path
assert f4.srcnode().path == os.path.normpath('src/test2.in'),\
@@ -228,12 +228,12 @@ class BuildDirTestCase(unittest.TestCase):
assert not f7.exists()
assert f7.rexists()
- assert f7.rfile().path == test.workpath('rep1/build/var1/test2.out'),\
+ assert f7.rfile().path == os.path.normpath(test.workpath('rep1/build/var1/test2.out')),\
f7.rfile().path
assert not f8.exists()
assert f8.rexists()
- assert f8.rfile().path == test.workpath('rep1/build/var2/test2.out'),\
+ assert f8.rfile().path == os.path.normpath(test.workpath('rep1/build/var2/test2.out')),\
f8.rfile().path
# Test to see if file_link() works...