From: stevenknight Date: Thu, 21 Oct 2004 18:21:55 +0000 (+0000) Subject: When subst() returns a non-string object, return the object and not a list on 1.5.2. X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=8483363a40959d2a7938ede443454b1777d0041b;p=scons.git When subst() returns a non-string object, return the object and not a list on 1.5.2. git-svn-id: http://scons.tigris.org/svn/scons/trunk@1132 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- diff --git a/src/engine/SCons/Util.py b/src/engine/SCons/Util.py index 9f911586..4e819350 100644 --- a/src/engine/SCons/Util.py +++ b/src/engine/SCons/Util.py @@ -668,8 +668,8 @@ def scons_subst(strSubst, env, mode=SUBST_RAW, target=None, source=None, dict=No result = _dollar_exps.sub(sub_match, args) except TypeError: # If the internal conversion routine doesn't return - # strings (it could be overridden to return Nodes, - # for example), then the re module will throw this + # strings (it could be overridden to return Nodes, for + # example), then the 1.5.2 re module will throw this # exception. Back off to a slower, general-purpose # algorithm that works for all data types. args = _separate_args.findall(args) @@ -679,7 +679,8 @@ def scons_subst(strSubst, env, mode=SUBST_RAW, target=None, source=None, dict=No try: result = string.join(result, '') except TypeError: - pass + if len(result) == 1: + result = result[0] return result else: return self.expand(args, lvars) diff --git a/src/engine/SCons/UtilTests.py b/src/engine/SCons/UtilTests.py index 61142d5d..cec89e1d 100644 --- a/src/engine/SCons/UtilTests.py +++ b/src/engine/SCons/UtilTests.py @@ -457,11 +457,11 @@ class UtilTestCase(unittest.TestCase): n1 = MyNode('n1') env = DummyEnv({'NODE' : n1}) node = scons_subst("$NODE", env, mode=SUBST_RAW, conv=s) - assert node == [n1], node + assert node is n1, node node = scons_subst("$NODE", env, mode=SUBST_CMD, conv=s) - assert node == [n1], node + assert node is n1, node node = scons_subst("$NODE", env, mode=SUBST_SIG, conv=s) - assert node == [n1], node + assert node is n1, node # Test returning a function. #env = DummyEnv({'FUNCTION' : foo})