Skip to content

Commit 94ad058

Browse files
authored
Merge pull request #4742 from mwichmann/test/append-with-existing
Update AppendUnique, PrependUnique unit tests
2 parents 84842be + a01e1f1 commit 94ad058

2 files changed

Lines changed: 24 additions & 6 deletions

File tree

CHANGES.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,8 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER
154154
path munging if a non-default %TEMP% was defined (as in moving to
155155
a Dev Drive). Also some cleanup.
156156
- Improve the wording of Configure methods.
157+
- Add unit test cases for AppendUnique, PrependUnique - verify behavior
158+
if existing value already contained more than one of added value.
157159

158160

159161
RELEASE 4.9.1 - Thu, 27 Mar 2025 11:40:20 -0700

SCons/EnvironmentTests.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1769,7 +1769,11 @@ def test_AppendENVPath(self) -> None:
17691769
env1.AppendENVPath(
17701770
'MYPATH', r'C:\mydir\num\one', 'MYENV', sep=';', delete_existing=True
17711771
)
1772-
# this should do nothing since delete_existing is false (the default)
1772+
assert (
1773+
env1['MYENV']['MYPATH'] == r'C:\mydir\num\two;C:\mydir\num\three;C:\mydir\num\one'
1774+
), env1['MYENV']['MYPATH']
1775+
1776+
# this should do nothing since delete_existing is false
17731777
env1.AppendENVPath('MYPATH', r'C:\mydir\num\three', 'MYENV', sep=';')
17741778
assert (
17751779
env1['MYENV']['MYPATH'] == r'C:\mydir\num\two;C:\mydir\num\three;C:\mydir\num\one'
@@ -1786,8 +1790,8 @@ def test_AppendENVPath(self) -> None:
17861790
def test_AppendUnique(self) -> None:
17871791
"""Test appending to unique values to construction variables
17881792
1789-
This strips values that are already present when lists are
1790-
involved."""
1793+
This strips values that are already present when lists are involved.
1794+
"""
17911795
env = self.TestEnvironment(AAA1 = 'a1',
17921796
AAA2 = 'a2',
17931797
AAA3 = 'a3',
@@ -1800,7 +1804,8 @@ def test_AppendUnique(self) -> None:
18001804
BBB5 = ['b5'],
18011805
CCC1 = '',
18021806
CCC2 = '',
1803-
DDD1 = ['a', 'b', 'c'])
1807+
DDD1 = ['a', 'b', 'c'],
1808+
DDD2 = ['a', 'a', 'b'])
18041809
env['LL1'] = [env.Literal('a literal'), env.Literal('b literal')]
18051810
env['LL2'] = [env.Literal('c literal'), env.Literal('b literal')]
18061811
env.AppendUnique(AAA1 = 'a1',
@@ -1816,6 +1821,7 @@ def test_AppendUnique(self) -> None:
18161821
CCC1 = 'c1',
18171822
CCC2 = ['c2'],
18181823
DDD1 = 'b',
1824+
DDD2 = 'a',
18191825
LL1 = env.Literal('a literal'),
18201826
LL2 = env.Literal('a literal'))
18211827

@@ -1832,6 +1838,7 @@ def test_AppendUnique(self) -> None:
18321838
assert env['CCC1'] == 'c1', env['CCC1']
18331839
assert env['CCC2'] == ['c2'], env['CCC2']
18341840
assert env['DDD1'] == ['a', 'b', 'c'], env['DDD1']
1841+
assert env['DDD2'] == ['a', 'a', 'b'], env['DDD2'] # keep existing dup
18351842
assert env['LL1'] == [
18361843
env.Literal('a literal'),
18371844
env.Literal('b literal'),
@@ -1851,6 +1858,9 @@ def test_AppendUnique(self) -> None:
18511858
env.AppendUnique(DDD1=['e', 'f', 'e'], delete_existing=True)
18521859
assert env['DDD1'] == ['c', 'a', 'b', 'f', 'e'], env['DDD1'] # add last
18531860

1861+
env.AppendUnique(DDD2=['a'], delete_existing=True)
1862+
assert env['DDD2'] == ['b', 'a'], env['DDD2'] # all existing instances deleted
1863+
18541864
# issue regression: substrings should not be deleted
18551865
env.AppendUnique(BBB4='b4.newer', delete_existing=True)
18561866
assert env['BBB4'] == ['b4', 'b4.new', 'b4.newer'], env['BBB4']
@@ -2569,7 +2579,8 @@ def test_PrependUnique(self) -> None:
25692579
BBB5 = ['b5'],
25702580
CCC1 = '',
25712581
CCC2 = '',
2572-
DDD1 = ['a', 'b', 'c'])
2582+
DDD1 = ['a', 'b', 'c'],
2583+
DDD2 = ['b', 'a', 'a'])
25732584
env.PrependUnique(AAA1 = 'a1',
25742585
AAA2 = ['a2'],
25752586
AAA3 = ['a3', 'b', 'c', 'b', 'a3'], # ignore dups
@@ -2582,7 +2593,8 @@ def test_PrependUnique(self) -> None:
25822593
BBB5 = ['b5.new'],
25832594
CCC1 = 'c1',
25842595
CCC2 = ['c2'],
2585-
DDD1 = 'b')
2596+
DDD1 = 'b',
2597+
DDD2 = 'a')
25862598
assert env['AAA1'] == 'a1a1', env['AAA1']
25872599
assert env['AAA2'] == ['a2'], env['AAA2']
25882600
assert env['AAA3'] == ['c', 'b', 'a3'], env['AAA3']
@@ -2596,6 +2608,7 @@ def test_PrependUnique(self) -> None:
25962608
assert env['CCC1'] == 'c1', env['CCC1']
25972609
assert env['CCC2'] == ['c2'], env['CCC2']
25982610
assert env['DDD1'] == ['a', 'b', 'c'], env['DDD1']
2611+
assert env['DDD2'] == ['b', 'a', 'a'], env['DDD2'] # keep existing dup
25992612

26002613
env.PrependUnique(DDD1='b', delete_existing=True)
26012614
assert env['DDD1'] == ['b', 'a', 'c'], env['DDD1'] # b moves to front
@@ -2606,6 +2619,9 @@ def test_PrependUnique(self) -> None:
26062619
env.PrependUnique(DDD1=['d', 'e', 'd'], delete_existing=True)
26072620
assert env['DDD1'] == ['d', 'e', 'a', 'c', 'b'], env['DDD1']
26082621

2622+
env.PrependUnique(DDD2=['a'], delete_existing=True)
2623+
assert env['DDD2'] == ['a', 'b'], env['DDD2'] # all existing instances deleted
2624+
26092625
# issue regression: substrings should not be deleted
26102626
env.PrependUnique(BBB4='b4.newer', delete_existing=True)
26112627
assert env['BBB4'] == ['b4.newer', 'b4.new', 'b4'], env['BBB4']

0 commit comments

Comments
 (0)