From 1082955bf5de5f023292af823c971c034560b075 Mon Sep 17 00:00:00 2001 From: stevenknight Date: Wed, 16 Mar 2005 06:13:01 +0000 Subject: [PATCH] Actually support a global Entry name (since we already documented it). git-svn-id: http://scons.tigris.org/svn/scons/trunk@1253 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- src/CHANGES.txt | 3 ++ src/engine/SCons/Environment.py | 5 +++ src/engine/SCons/EnvironmentTests.py | 18 +++++++++ src/engine/SCons/Script/__init__.py | 1 + test/Entry.py | 58 ++++++++++++++++++++++++++++ 5 files changed, 85 insertions(+) create mode 100644 test/Entry.py diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 16b75f79..a934bf47 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -228,6 +228,9 @@ RELEASE 0.97 - XXX - Add support for an Options.FormatOptionHelpText() method that can be overridden to customize the format of Options help text. + - Add a global name for the Entry class (which had already been + documented). + From Wayne Lee: - Avoid "maximum recursion limit" errors when removing $(-$) pairs diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py index 2f11f061..405243c3 100644 --- a/src/engine/SCons/Environment.py +++ b/src/engine/SCons/Environment.py @@ -1223,6 +1223,11 @@ class Base(SubstitutionEnvironment): """ return apply(self.fs.Dir, (self.subst(name),) + args, kw) + def Entry(self, name, *args, **kw): + """ + """ + return apply(self.fs.Entry, (self.subst(name),) + args, kw) + def Environment(self, **kw): return apply(SCons.Environment.Environment, [], self.subst_kw(kw)) diff --git a/src/engine/SCons/EnvironmentTests.py b/src/engine/SCons/EnvironmentTests.py index 1772407a..0e5da860 100644 --- a/src/engine/SCons/EnvironmentTests.py +++ b/src/engine/SCons/EnvironmentTests.py @@ -2289,6 +2289,24 @@ f5: \ result = env.Execute("foo") assert result == "foo executed", result + def test_Entry(self): + """Test the Entry() method""" + class MyFS: + def Entry(self, name): + return 'Entry(%s)' % name + + env = Environment(FOO = 'fooentry', BAR = 'barentry') + env.fs = MyFS() + + e = env.Entry('e') + assert e == 'Entry(e)', e + + e = env.Entry('$FOO') + assert e == 'Entry(fooentry)', e + + e = env.Entry('${BAR}_$BAR') + assert e == 'Entry(barentry_barentry)', e + def test_File(self): """Test the File() method""" class MyFS: diff --git a/src/engine/SCons/Script/__init__.py b/src/engine/SCons/Script/__init__.py index 6d532d61..9de951b3 100644 --- a/src/engine/SCons/Script/__init__.py +++ b/src/engine/SCons/Script/__init__.py @@ -221,6 +221,7 @@ GlobalDefaultEnvironmentFunctions = [ #The Command() method is handled separately, below. 'Depends', 'Dir', + 'Entry', 'Execute', 'File', 'FindFile', diff --git a/test/Entry.py b/test/Entry.py new file mode 100644 index 00000000..55fa90b7 --- /dev/null +++ b/test/Entry.py @@ -0,0 +1,58 @@ +#!/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 the Entry() global function and environment method work +correctly, and that the former does not try to expand construction +variables. +""" + +import TestSCons + +test = TestSCons.TestSCons() + +test.write('SConstruct', """ +env = Environment(FOO = 'fff', BAR = 'bbb') +print Entry('ddd') +print Entry('$FOO') +print Entry('${BAR}_$BAR') +print env.Entry('eee') +print env.Entry('$FOO') +print env.Entry('${BAR}_$BAR') +""") + +test.run(stdout = test.wrap_stdout(read_str = """\ +ddd +$FOO +${BAR}_$BAR +eee +fff +bbb_bbb +""", build_str = """\ +scons: `.' is up to date. +""")) + +test.pass_test() -- 2.26.2