summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMats Wichmann <mats@linux.com>2023-01-30 13:27:41 -0700
committerMats Wichmann <mats@linux.com>2023-01-30 13:27:41 -0700
commit6abf249d2e38df51dd8e647176b7ce6dacfdf9b9 (patch)
tree08b8563add65f7bc917e009c784b7ec7d8119623
parent6ea34c031395e9488bf9a55b25d4b567d2c0627d (diff)
downloadscons-git-6abf249d2e38df51dd8e647176b7ce6dacfdf9b9.tar.gz
Fix some CPPDEFINES handling problems
A few places were deciding what to do based on result of is_List, when the intent was really list-or-tuple-or-derivatives - changed to is_Sequence. Added some test cases, including a unit test for processDefines (which would have caught one of these cases). Signed-off-by: Mats Wichmann <mats@linux.com>
-rw-r--r--SCons/Defaults.py6
-rw-r--r--SCons/DefaultsTests.py56
-rw-r--r--SCons/Environment.py2
-rw-r--r--test/CPPDEFINES/append.py89
-rw-r--r--test/CPPDEFINES/fixture/SConstruct-Append5
-rw-r--r--test/CPPDEFINES/fixture/SConstruct-Prepend5
-rw-r--r--test/CPPDEFINES/prepend.py89
7 files changed, 238 insertions, 14 deletions
diff --git a/SCons/Defaults.py b/SCons/Defaults.py
index ad64041aa..250ccf617 100644
--- a/SCons/Defaults.py
+++ b/SCons/Defaults.py
@@ -46,7 +46,7 @@ import SCons.PathList
import SCons.Scanner.Dir
import SCons.Subst
import SCons.Tool
-from SCons.Util import is_List, is_String, is_Tuple, is_Dict, flatten
+from SCons.Util import is_List, is_String, is_Sequence, is_Dict, flatten
# A placeholder for a default Environment (for fetching source files
# from source code management systems and the like). This must be
@@ -517,11 +517,11 @@ def processDefines(defs):
Any prefix/suffix is handled elsewhere (usually :func:`_concat_ixes`).
"""
dlist = []
- if is_List(defs):
+ if is_Sequence(defs):
for define in defs:
if define is None:
continue
- elif is_List(define) or is_Tuple(define):
+ elif is_Sequence(define):
if len(define) >= 2 and define[1] is not None:
# TODO: do we need to quote define[1] if it contains space?
dlist.append(str(define[0]) + '=' + str(define[1]))
diff --git a/SCons/DefaultsTests.py b/SCons/DefaultsTests.py
index 7fd62ae8b..b876552ca 100644
--- a/SCons/DefaultsTests.py
+++ b/SCons/DefaultsTests.py
@@ -27,7 +27,7 @@ import collections
import TestCmd
-from SCons.Defaults import mkdir_func, _defines
+from SCons.Defaults import mkdir_func, _defines, processDefines
class DummyEnvironment(collections.UserDict):
@@ -90,18 +90,54 @@ class DefaultsTestCase(unittest.TestCase):
"""
env = DummyEnvironment()
- # Neither source or target specified
- x = _defines('-D', ['A', 'B', 'C'], 'XYZ', env)
- self.assertEqual(x, ['-DAXYZ', '-DBXYZ', '-DCXYZ'])
+ with self.subTest():
+ # Neither source or target specified
+ x = _defines('-D', ['A', 'B', 'C'], 'XYZ', env)
+ self.assertEqual(x, ['-DAXYZ', '-DBXYZ', '-DCXYZ'])
- # only source specified
- y = _defines('-D', ['AA', 'BA', 'CA'], 'XYZA', env, 'XYZ')
- self.assertEqual(y, ['-DAAXYZA', '-DBAXYZA', '-DCAXYZA'])
+ with self.subTest():
+ # only source specified
+ y = _defines('-D', ['AA', 'BA', 'CA'], 'XYZA', env, 'XYZ')
+ self.assertEqual(y, ['-DAAXYZA', '-DBAXYZA', '-DCAXYZA'])
- # source and target specified
- z = _defines('-D', ['AAB', 'BAB', 'CAB'], 'XYZAB', env, 'XYZ', 'abc')
- self.assertEqual(z,['-DAABXYZAB', '-DBABXYZAB', '-DCABXYZAB'])
+ with self.subTest():
+ # source and target specified
+ z = _defines('-D', ['AAB', 'BAB', 'CAB'], 'XYZAB', env, 'XYZ', 'abc')
+ self.assertEqual(z, ['-DAABXYZAB', '-DBABXYZAB', '-DCABXYZAB'])
+ def test_processDefines(self):
+ """Verify correct handling in processDefines."""
+ env = DummyEnvironment()
+
+ with self.subTest():
+ # macro name only
+ rv = processDefines('name')
+ self.assertEqual(rv, ['name'])
+
+ with self.subTest():
+ # macro with value
+ rv = processDefines('name=val')
+ self.assertEqual(rv, ['name=val'])
+
+ with self.subTest():
+ # single list
+ rv = processDefines(['name', 'val'])
+ self.assertEqual(rv, ['name', 'val'])
+
+ with self.subTest():
+ # single tuple
+ rv = processDefines(('name', 'val'))
+ self.assertEqual(rv, ['name', 'val'])
+
+ with self.subTest():
+ # single dict
+ rv = processDefines({'foo': None, 'name': 'val'})
+ self.assertEqual(rv, ['foo', 'name=val'])
+
+ with self.subTest():
+ # compound list
+ rv = processDefines(['foo', ('name', 'val'), ['name2', 'val2']])
+ self.assertEqual(rv, ['foo', 'name=val', 'name2=val2'])
if __name__ == "__main__":
diff --git a/SCons/Environment.py b/SCons/Environment.py
index e73da823f..e10bec1bb 100644
--- a/SCons/Environment.py
+++ b/SCons/Environment.py
@@ -330,7 +330,7 @@ def _add_cppdefines(
else:
_add_define(val, defines, prepend)
- elif is_List(val):
+ elif is_Sequence(val):
tmp = []
for item in val:
if unique:
diff --git a/test/CPPDEFINES/append.py b/test/CPPDEFINES/append.py
index 0d074cf45..2a3102196 100644
--- a/test/CPPDEFINES/append.py
+++ b/test/CPPDEFINES/append.py
@@ -45,6 +45,7 @@ expect_print_output="""\
-Dfoo bar -Dbaz
-Dfoo -Dbar baz
-DMacro2=Value2 -DMacro3=Value3 -DMacro1=Value1
+-DMacro1 -DValue1
==== Testing CPPDEFINES, appending a string to a string
orig = 'FOO', append = 'FOO'
Append:
@@ -69,6 +70,14 @@ Append:
AppendUnique:
result=['FOO', 'NAME1', 'NAME2']
final=-DFOO -DNAME1 -DNAME2
+==== Testing CPPDEFINES, appending a tuple to a string
+ orig = 'FOO', append = ('NAME1', 'NAME2')
+Append:
+ result=['FOO', 'NAME1', 'NAME2']
+ final=-DFOO -DNAME1 -DNAME2
+AppendUnique:
+ result=['FOO', 'NAME1', 'NAME2']
+ final=-DFOO -DNAME1 -DNAME2
==== Testing CPPDEFINES, appending a list-of-2lists to a string
orig = 'FOO', append = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
Append:
@@ -109,6 +118,14 @@ Append:
AppendUnique:
result=['NAME1=VAL1', 'NAME1', 'NAME2']
final=-DNAME1=VAL1 -DNAME1 -DNAME2
+==== Testing CPPDEFINES, appending a tuple to a valuestring
+ orig = 'NAME1=VAL1', append = ('NAME1', 'NAME2')
+Append:
+ result=['NAME1=VAL1', 'NAME1', 'NAME2']
+ final=-DNAME1=VAL1 -DNAME1 -DNAME2
+AppendUnique:
+ result=['NAME1=VAL1', 'NAME1', 'NAME2']
+ final=-DNAME1=VAL1 -DNAME1 -DNAME2
==== Testing CPPDEFINES, appending a list-of-2lists to a valuestring
orig = 'NAME1=VAL1', append = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
Append:
@@ -149,6 +166,14 @@ Append:
AppendUnique:
result=['NAME1', 'NAME2']
final=-DNAME1 -DNAME2
+==== Testing CPPDEFINES, appending a tuple to a list
+ orig = ['NAME1', 'NAME2'], append = ('NAME1', 'NAME2')
+Append:
+ result=['NAME1', 'NAME2', 'NAME1', 'NAME2']
+ final=-DNAME1 -DNAME2 -DNAME1 -DNAME2
+AppendUnique:
+ result=['NAME1', 'NAME2']
+ final=-DNAME1 -DNAME2
==== Testing CPPDEFINES, appending a list-of-2lists to a list
orig = ['NAME1', 'NAME2'], append = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
Append:
@@ -165,6 +190,54 @@ Append:
AppendUnique:
result=['NAME1', 'NAME2', ('NAME2', 'VAL2'), ('NAME3', None), ('NAME1', 'VAL1')]
final=-DNAME1 -DNAME2 -DNAME2=VAL2 -DNAME3 -DNAME1=VAL1
+==== Testing CPPDEFINES, appending a string to a tuple
+ orig = ('NAME1', 'NAME2'), append = 'FOO'
+Append:
+ result=['NAME1', 'NAME2', 'FOO']
+ final=-DNAME1 -DNAME2 -DFOO
+AppendUnique:
+ result=['NAME1', 'NAME2', 'FOO']
+ final=-DNAME1 -DNAME2 -DFOO
+==== Testing CPPDEFINES, appending a valuestring to a tuple
+ orig = ('NAME1', 'NAME2'), append = 'NAME1=VAL1'
+Append:
+ result=['NAME1', 'NAME2', 'NAME1=VAL1']
+ final=-DNAME1 -DNAME2 -DNAME1=VAL1
+AppendUnique:
+ result=['NAME1', 'NAME2', 'NAME1=VAL1']
+ final=-DNAME1 -DNAME2 -DNAME1=VAL1
+==== Testing CPPDEFINES, appending a list to a tuple
+ orig = ('NAME1', 'NAME2'), append = ['NAME1', 'NAME2']
+Append:
+ result=['NAME1', 'NAME2', 'NAME1', 'NAME2']
+ final=-DNAME1 -DNAME2 -DNAME1 -DNAME2
+AppendUnique:
+ result=['NAME1', 'NAME2']
+ final=-DNAME1 -DNAME2
+==== Testing CPPDEFINES, appending a tuple to a tuple
+ orig = ('NAME1', 'NAME2'), append = ('NAME1', 'NAME2')
+Append:
+ result=['NAME1', 'NAME2', 'NAME1', 'NAME2']
+ final=-DNAME1 -DNAME2 -DNAME1 -DNAME2
+AppendUnique:
+ result=['NAME1', 'NAME2']
+ final=-DNAME1 -DNAME2
+==== Testing CPPDEFINES, appending a list-of-2lists to a tuple
+ orig = ('NAME1', 'NAME2'), append = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
+Append:
+ result=['NAME1', 'NAME2', ('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
+ final=-DNAME1 -DNAME2 -DNAME1=VAL1 -DNAME2=VAL2
+AppendUnique:
+ result=['NAME1', 'NAME2', ('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
+ final=-DNAME1 -DNAME2 -DNAME1=VAL1 -DNAME2=VAL2
+==== Testing CPPDEFINES, appending a dict to a tuple
+ orig = ('NAME1', 'NAME2'), append = {'NAME2': 'VAL2', 'NAME3': None, 'NAME1': 'VAL1'}
+Append:
+ result=['NAME1', 'NAME2', ('NAME2', 'VAL2'), ('NAME3', None), ('NAME1', 'VAL1')]
+ final=-DNAME1 -DNAME2 -DNAME2=VAL2 -DNAME3 -DNAME1=VAL1
+AppendUnique:
+ result=['NAME1', 'NAME2', ('NAME2', 'VAL2'), ('NAME3', None), ('NAME1', 'VAL1')]
+ final=-DNAME1 -DNAME2 -DNAME2=VAL2 -DNAME3 -DNAME1=VAL1
==== Testing CPPDEFINES, appending a string to a list-of-2lists
orig = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']], append = 'FOO'
Append:
@@ -189,6 +262,14 @@ Append:
AppendUnique:
result=[('NAME1', 'VAL1'), ['NAME2', 'VAL2'], 'NAME1', 'NAME2']
final=-DNAME1=VAL1 -DNAME2=VAL2 -DNAME1 -DNAME2
+==== Testing CPPDEFINES, appending a tuple to a list-of-2lists
+ orig = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']], append = ('NAME1', 'NAME2')
+Append:
+ result=[('NAME1', 'VAL1'), ['NAME2', 'VAL2'], 'NAME1', 'NAME2']
+ final=-DNAME1=VAL1 -DNAME2=VAL2 -DNAME1 -DNAME2
+AppendUnique:
+ result=[('NAME1', 'VAL1'), ['NAME2', 'VAL2'], 'NAME1', 'NAME2']
+ final=-DNAME1=VAL1 -DNAME2=VAL2 -DNAME1 -DNAME2
==== Testing CPPDEFINES, appending a list-of-2lists to a list-of-2lists
orig = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']], append = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
Append:
@@ -229,6 +310,14 @@ Append:
AppendUnique:
result=[('NAME2', 'VAL2'), ('NAME3', None), ('NAME1', 'VAL1'), 'NAME1', 'NAME2']
final=-DNAME2=VAL2 -DNAME3 -DNAME1=VAL1 -DNAME1 -DNAME2
+==== Testing CPPDEFINES, appending a tuple to a dict
+ orig = {'NAME2': 'VAL2', 'NAME3': None, 'NAME1': 'VAL1'}, append = ('NAME1', 'NAME2')
+Append:
+ result=[('NAME2', 'VAL2'), ('NAME3', None), ('NAME1', 'VAL1'), 'NAME1', 'NAME2']
+ final=-DNAME2=VAL2 -DNAME3 -DNAME1=VAL1 -DNAME1 -DNAME2
+AppendUnique:
+ result=[('NAME2', 'VAL2'), ('NAME3', None), ('NAME1', 'VAL1'), 'NAME1', 'NAME2']
+ final=-DNAME2=VAL2 -DNAME3 -DNAME1=VAL1 -DNAME1 -DNAME2
==== Testing CPPDEFINES, appending a list-of-2lists to a dict
orig = {'NAME2': 'VAL2', 'NAME3': None, 'NAME1': 'VAL1'}, append = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
Append:
diff --git a/test/CPPDEFINES/fixture/SConstruct-Append b/test/CPPDEFINES/fixture/SConstruct-Append
index af4db9dac..76b86ad0c 100644
--- a/test/CPPDEFINES/fixture/SConstruct-Append
+++ b/test/CPPDEFINES/fixture/SConstruct-Append
@@ -39,6 +39,10 @@ env_multi.AppendUnique(CPPDEFINES=[("Macro3", "Value3")], delete_existing=True)
env_multi.AppendUnique(CPPDEFINES={"Macro1": "Value1"}, delete_existing=True)
print(env_multi.subst('$_CPPDEFFLAGS'))
+# a lone tuple
+env_multi = Environment(CPPDEFPREFIX='-D', CPPDEFINES=("Macro1", "Value1"))
+print(env_multi.subst('$_CPPDEFFLAGS'))
+
# https://github.com/SCons/scons/issues/1152
# https://github.com/SCons/scons/issues/2900
# Python3 dicts dont preserve order. Hence we supply subclass of OrderedDict
@@ -63,6 +67,7 @@ cases = [
('string', 'FOO'),
('valuestring', 'NAME1=VAL1'),
('list', ['NAME1', 'NAME2']),
+ ('tuple', ('NAME1', 'NAME2')),
('list-of-2lists', [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]),
(
'dict',
diff --git a/test/CPPDEFINES/fixture/SConstruct-Prepend b/test/CPPDEFINES/fixture/SConstruct-Prepend
index 52b66e8c2..4628ea46a 100644
--- a/test/CPPDEFINES/fixture/SConstruct-Prepend
+++ b/test/CPPDEFINES/fixture/SConstruct-Prepend
@@ -39,6 +39,10 @@ env_multi.PrependUnique(CPPDEFINES=[("Macro3", "Value3")], delete_existing=True)
env_multi.PrependUnique(CPPDEFINES={"Macro1": "Value1"}, delete_existing=True)
print(env_multi.subst('$_CPPDEFFLAGS'))
+# a lone tuple
+env_tuple = Environment(CPPDEFPREFIX='-D', CPPDEFINES=("Macro1", "Value1"))
+print(env_tuple.subst('$_CPPDEFFLAGS'))
+
# https://github.com/SCons/scons/issues/1152
# https://github.com/SCons/scons/issues/2900
# Python3 dicts dont preserve order. Hence we supply subclass of OrderedDict
@@ -64,6 +68,7 @@ cases = [
('string', 'FOO'),
('valuestring', 'NAME1=VAL1'),
('list', ['NAME1', 'NAME2']),
+ ('tuple', ('NAME1', 'NAME2')),
('list-of-2lists', [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]),
(
'dict',
diff --git a/test/CPPDEFINES/prepend.py b/test/CPPDEFINES/prepend.py
index 2e63e87e9..5ec2e468e 100644
--- a/test/CPPDEFINES/prepend.py
+++ b/test/CPPDEFINES/prepend.py
@@ -44,6 +44,7 @@ expect_print_output="""\
-Dbaz -Dfoo bar
-Dbar baz -Dfoo
-DMacro1=Value1 -DMacro3=Value3 -DMacro2=Value2
+-DMacro1 -DValue1
==== Testing CPPDEFINES, prepending a string to a string
orig = 'FOO', prepend = 'FOO'
Prepend:
@@ -68,6 +69,14 @@ Prepend:
PrependUnique:
result=['NAME2', 'NAME1', 'FOO']
final=-DNAME2 -DNAME1 -DFOO
+==== Testing CPPDEFINES, prepending a tuple to a string
+ orig = 'FOO', prepend = ('NAME1', 'NAME2')
+Prepend:
+ result=['NAME2', 'NAME1', 'FOO']
+ final=-DNAME2 -DNAME1 -DFOO
+PrependUnique:
+ result=['NAME2', 'NAME1', 'FOO']
+ final=-DNAME2 -DNAME1 -DFOO
==== Testing CPPDEFINES, prepending a list-of-2lists to a string
orig = 'FOO', prepend = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
Prepend:
@@ -108,6 +117,14 @@ Prepend:
PrependUnique:
result=['NAME2', 'NAME1', 'NAME1=VAL1']
final=-DNAME2 -DNAME1 -DNAME1=VAL1
+==== Testing CPPDEFINES, prepending a tuple to a valuestring
+ orig = 'NAME1=VAL1', prepend = ('NAME1', 'NAME2')
+Prepend:
+ result=['NAME2', 'NAME1', 'NAME1=VAL1']
+ final=-DNAME2 -DNAME1 -DNAME1=VAL1
+PrependUnique:
+ result=['NAME2', 'NAME1', 'NAME1=VAL1']
+ final=-DNAME2 -DNAME1 -DNAME1=VAL1
==== Testing CPPDEFINES, prepending a list-of-2lists to a valuestring
orig = 'NAME1=VAL1', prepend = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
Prepend:
@@ -148,6 +165,14 @@ Prepend:
PrependUnique:
result=['NAME1', 'NAME2']
final=-DNAME1 -DNAME2
+==== Testing CPPDEFINES, prepending a tuple to a list
+ orig = ['NAME1', 'NAME2'], prepend = ('NAME1', 'NAME2')
+Prepend:
+ result=['NAME2', 'NAME1', 'NAME1', 'NAME2']
+ final=-DNAME2 -DNAME1 -DNAME1 -DNAME2
+PrependUnique:
+ result=['NAME1', 'NAME2']
+ final=-DNAME1 -DNAME2
==== Testing CPPDEFINES, prepending a list-of-2lists to a list
orig = ['NAME1', 'NAME2'], prepend = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
Prepend:
@@ -164,6 +189,54 @@ Prepend:
PrependUnique:
result=[('NAME1', 'VAL1'), ('NAME3', None), ('NAME2', 'VAL2'), 'NAME1', 'NAME2']
final=-DNAME1=VAL1 -DNAME3 -DNAME2=VAL2 -DNAME1 -DNAME2
+==== Testing CPPDEFINES, prepending a string to a tuple
+ orig = ('NAME1', 'NAME2'), prepend = 'FOO'
+Prepend:
+ result=['FOO', 'NAME1', 'NAME2']
+ final=-DFOO -DNAME1 -DNAME2
+PrependUnique:
+ result=['FOO', 'NAME1', 'NAME2']
+ final=-DFOO -DNAME1 -DNAME2
+==== Testing CPPDEFINES, prepending a valuestring to a tuple
+ orig = ('NAME1', 'NAME2'), prepend = 'NAME1=VAL1'
+Prepend:
+ result=['NAME1=VAL1', 'NAME1', 'NAME2']
+ final=-DNAME1=VAL1 -DNAME1 -DNAME2
+PrependUnique:
+ result=['NAME1=VAL1', 'NAME1', 'NAME2']
+ final=-DNAME1=VAL1 -DNAME1 -DNAME2
+==== Testing CPPDEFINES, prepending a list to a tuple
+ orig = ('NAME1', 'NAME2'), prepend = ['NAME1', 'NAME2']
+Prepend:
+ result=['NAME2', 'NAME1', 'NAME1', 'NAME2']
+ final=-DNAME2 -DNAME1 -DNAME1 -DNAME2
+PrependUnique:
+ result=['NAME1', 'NAME2']
+ final=-DNAME1 -DNAME2
+==== Testing CPPDEFINES, prepending a tuple to a tuple
+ orig = ('NAME1', 'NAME2'), prepend = ('NAME1', 'NAME2')
+Prepend:
+ result=['NAME2', 'NAME1', 'NAME1', 'NAME2']
+ final=-DNAME2 -DNAME1 -DNAME1 -DNAME2
+PrependUnique:
+ result=['NAME1', 'NAME2']
+ final=-DNAME1 -DNAME2
+==== Testing CPPDEFINES, prepending a list-of-2lists to a tuple
+ orig = ('NAME1', 'NAME2'), prepend = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
+Prepend:
+ result=[['NAME2', 'VAL2'], ('NAME1', 'VAL1'), 'NAME1', 'NAME2']
+ final=-DNAME2=VAL2 -DNAME1=VAL1 -DNAME1 -DNAME2
+PrependUnique:
+ result=[['NAME2', 'VAL2'], ('NAME1', 'VAL1'), 'NAME1', 'NAME2']
+ final=-DNAME2=VAL2 -DNAME1=VAL1 -DNAME1 -DNAME2
+==== Testing CPPDEFINES, prepending a dict to a tuple
+ orig = ('NAME1', 'NAME2'), prepend = {'NAME2': 'VAL2', 'NAME3': None, 'NAME1': 'VAL1'}
+Prepend:
+ result=[('NAME1', 'VAL1'), ('NAME3', None), ('NAME2', 'VAL2'), 'NAME1', 'NAME2']
+ final=-DNAME1=VAL1 -DNAME3 -DNAME2=VAL2 -DNAME1 -DNAME2
+PrependUnique:
+ result=[('NAME1', 'VAL1'), ('NAME3', None), ('NAME2', 'VAL2'), 'NAME1', 'NAME2']
+ final=-DNAME1=VAL1 -DNAME3 -DNAME2=VAL2 -DNAME1 -DNAME2
==== Testing CPPDEFINES, prepending a string to a list-of-2lists
orig = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']], prepend = 'FOO'
Prepend:
@@ -188,6 +261,14 @@ Prepend:
PrependUnique:
result=['NAME2', 'NAME1', ('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
final=-DNAME2 -DNAME1 -DNAME1=VAL1 -DNAME2=VAL2
+==== Testing CPPDEFINES, prepending a tuple to a list-of-2lists
+ orig = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']], prepend = ('NAME1', 'NAME2')
+Prepend:
+ result=['NAME2', 'NAME1', ('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
+ final=-DNAME2 -DNAME1 -DNAME1=VAL1 -DNAME2=VAL2
+PrependUnique:
+ result=['NAME2', 'NAME1', ('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
+ final=-DNAME2 -DNAME1 -DNAME1=VAL1 -DNAME2=VAL2
==== Testing CPPDEFINES, prepending a list-of-2lists to a list-of-2lists
orig = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']], prepend = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
Prepend:
@@ -228,6 +309,14 @@ Prepend:
PrependUnique:
result=['NAME2', 'NAME1', ('NAME2', 'VAL2'), ('NAME3', None), ('NAME1', 'VAL1')]
final=-DNAME2 -DNAME1 -DNAME2=VAL2 -DNAME3 -DNAME1=VAL1
+==== Testing CPPDEFINES, prepending a tuple to a dict
+ orig = {'NAME2': 'VAL2', 'NAME3': None, 'NAME1': 'VAL1'}, prepend = ('NAME1', 'NAME2')
+Prepend:
+ result=['NAME2', 'NAME1', ('NAME2', 'VAL2'), ('NAME3', None), ('NAME1', 'VAL1')]
+ final=-DNAME2 -DNAME1 -DNAME2=VAL2 -DNAME3 -DNAME1=VAL1
+PrependUnique:
+ result=['NAME2', 'NAME1', ('NAME2', 'VAL2'), ('NAME3', None), ('NAME1', 'VAL1')]
+ final=-DNAME2 -DNAME1 -DNAME2=VAL2 -DNAME3 -DNAME1=VAL1
==== Testing CPPDEFINES, prepending a list-of-2lists to a dict
orig = {'NAME2': 'VAL2', 'NAME3': None, 'NAME1': 'VAL1'}, prepend = [('NAME1', 'VAL1'), ['NAME2', 'VAL2']]
Prepend: