summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2003-10-28 03:39:31 (GMT)
committerSteven Knight <knight@baldmt.com>2003-10-28 03:39:31 (GMT)
commitc0859da6b4fe678bab39caf47a628719fc6ff0b6 (patch)
tree432c5912e83b9725981ae47298afb7bc2472849f /src/engine
parentdcc0927037489849938795e559b396a1f811fbcf (diff)
downloadSCons-c0859da6b4fe678bab39caf47a628719fc6ff0b6.zip
SCons-c0859da6b4fe678bab39caf47a628719fc6ff0b6.tar.gz
SCons-c0859da6b4fe678bab39caf47a628719fc6ff0b6.tar.bz2
Fix a regression with env.Append().
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/SCons/Environment.py10
-rw-r--r--src/engine/SCons/EnvironmentTests.py19
2 files changed, 24 insertions, 5 deletions
diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py
index e320f05..6c6ad8a 100644
--- a/src/engine/SCons/Environment.py
+++ b/src/engine/SCons/Environment.py
@@ -427,14 +427,16 @@ class Base:
self._dict[key] = kw[key]
elif SCons.Util.is_List(self._dict[key]) and not \
SCons.Util.is_List(kw[key]):
- if not kw[key] is None and kw[key] != '':
+ if kw[key]:
self._dict[key] = self._dict[key] + [ kw[key] ]
+ #self._dict[key] = map(None, self._dict[key] + [ kw[key] ])
elif SCons.Util.is_List(kw[key]) and not \
SCons.Util.is_List(self._dict[key]):
- if self._dict[key] is None or self._dict[key] == '':
- self._dict[key] = kw[key]
- else:
+ if self._dict[key]:
self._dict[key] = [ self._dict[key] ] + kw[key]
+ else:
+ self._dict[key] = kw[key]
+ #self._dict[key] = map(None, self._dict[key] + [ kw[key] ])
elif SCons.Util.is_Dict(self._dict[key]) and \
SCons.Util.is_Dict(kw[key]):
self._dict[key].update(kw[key])
diff --git a/src/engine/SCons/EnvironmentTests.py b/src/engine/SCons/EnvironmentTests.py
index d079feb..2861f85 100644
--- a/src/engine/SCons/EnvironmentTests.py
+++ b/src/engine/SCons/EnvironmentTests.py
@@ -721,7 +721,7 @@ class EnvironmentTestCase(unittest.TestCase):
b1 = Environment()['BUILDERS']
b2 = Environment()['BUILDERS']
assert b1 == b2, diff_dict(b1, b2)
-
+
import UserList
UL = UserList.UserList
env1 = Environment(AAA = 'a',
@@ -777,6 +777,23 @@ class EnvironmentTestCase(unittest.TestCase):
assert env1['QQQ2'] == UL(['', 'Q2']), env1['QQQ2']
assert env1['QQQ3'] == UL(['', 'Q3']), env1['QQQ3']
+ class C:
+ def __init__(self, name):
+ self.name = name
+ def __str__(self):
+ return self.name
+ def __cmp__(self, other):
+ raise "should not compare"
+
+ ccc = C('ccc')
+
+ env2 = Environment(CCC1 = ['c1'], CCC2 = ccc)
+ env2.Append(CCC1 = ccc, CCC2 = ['c2'])
+ assert env2['CCC1'][0] == 'c1', env2['CCC1']
+ assert env2['CCC1'][1] is ccc, env2['CCC1']
+ assert env2['CCC2'][0] is ccc, env2['CCC2']
+ assert env2['CCC2'][1] == 'c2', env2['CCC2']
+
env3 = Environment(X = {'x1' : 7})
env3.Append(X = {'x1' : 8, 'x2' : 9}, Y = {'y1' : 10})
assert env3['X'] == {'x1': 8, 'x2': 9}, env3['X']