From 4f631cf69dcdffb3a0ac94642e0120e55aa69281 Mon Sep 17 00:00:00 2001 From: stevenknight Date: Tue, 13 Jan 2009 10:32:30 +0000 Subject: [PATCH] Fix ability to Install() the same file multiple times. git-svn-id: http://scons.tigris.org/svn/scons/trunk@3895 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- src/engine/SCons/Executor.py | 2 +- src/engine/SCons/ExecutorTests.py | 8 +++--- test/Install/multi.py | 48 +++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 test/Install/multi.py diff --git a/src/engine/SCons/Executor.py b/src/engine/SCons/Executor.py index 7e831e33..7d331c1f 100644 --- a/src/engine/SCons/Executor.py +++ b/src/engine/SCons/Executor.py @@ -372,7 +372,7 @@ class Executor: # TODO(batch): extend to multiple batches assert (len(self.batches) == 1) # TODO(batch): remove duplicates? - #slist = filter(lambda x, s=self.batches[0].sources: x not in s, sources) + sources = filter(lambda x, s=self.batches[0].sources: x not in s, sources) self.batches[0].sources.extend(sources) def get_sources(self): diff --git a/src/engine/SCons/ExecutorTests.py b/src/engine/SCons/ExecutorTests.py index 79e9d03b..37c253df 100644 --- a/src/engine/SCons/ExecutorTests.py +++ b/src/engine/SCons/ExecutorTests.py @@ -275,11 +275,11 @@ class ExecutorTestCase(unittest.TestCase): x.add_sources(['s1', 's2']) sources = x.get_all_sources() - assert sources == ['s1', 's2', 's1', 's2'], sources + assert sources == ['s1', 's2'], sources x.add_sources(['s3', 's1', 's4']) sources = x.get_all_sources() - assert sources == ['s1', 's2', 's1', 's2', 's3', 's1', 's4'], sources + assert sources == ['s1', 's2', 's3', 's4'], sources def test_get_sources(self): """Test getting sources from an Executor""" @@ -289,11 +289,11 @@ class ExecutorTestCase(unittest.TestCase): x.add_sources(['s1', 's2']) sources = x.get_sources() - assert sources == ['s1', 's2', 's1', 's2'], sources + assert sources == ['s1', 's2'], sources x.add_sources(['s3', 's1', 's4']) sources = x.get_sources() - assert sources == ['s1', 's2', 's1', 's2', 's3', 's1', 's4'], sources + assert sources == ['s1', 's2', 's3', 's4'], sources def test_prepare(self): """Test the Executor's prepare() method""" diff --git a/test/Install/multi.py b/test/Install/multi.py new file mode 100644 index 00000000..e033b530 --- /dev/null +++ b/test/Install/multi.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python +# +# __COPYRIGHT__ +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +""" +Verify that multiple calls to test.Install() with the same file +are all right. +""" + +import TestSCons + +test = TestSCons.TestSCons() + +test.write('SConstruct', """ +env = Environment() +env.Install('install', 'file1') +env.Install('install', 'file1') +""") + +test.write('file1', "file1\n") + +test.run(arguments = '.') + +test.must_match(['install', 'file1'], "file1\n") + +test.pass_test() -- 2.26.2