diff options
author | Mats Wichmann <mats@linux.com> | 2018-07-28 16:04:35 (GMT) |
---|---|---|
committer | Mats Wichmann <mats@linux.com> | 2018-07-28 16:04:35 (GMT) |
commit | 14daa07c0d95e1cd806e92911a74bde3ccf95b9f (patch) | |
tree | a6717d6a95ba4add454c78327f01e8204620f9fa /src/engine/SCons/Script | |
parent | 9ec0b9861951cc72de39c742c1162a84696ce91f (diff) | |
download | SCons-14daa07c0d95e1cd806e92911a74bde3ccf95b9f.zip SCons-14daa07c0d95e1cd806e92911a74bde3ccf95b9f.tar.gz SCons-14daa07c0d95e1cd806e92911a74bde3ccf95b9f.tar.bz2 |
Add tests for SConscript(must_warn) option
Testcases added to confirm the behavior of: first attempt
to call a non-existent script gives a deprecation warning,
additional ones give plain warning; True/False values for
must_warn behave as expected; if scons default is changed
to exception the call fails but if must_warn=False it
still works.
Tweaked the logic to actually get that last bit to work.
Also minor doc update.
Signed-off-by: Mats Wichmann <mats@linux.com>
Diffstat (limited to 'src/engine/SCons/Script')
-rw-r--r-- | src/engine/SCons/Script/SConscript.py | 7 | ||||
-rw-r--r-- | src/engine/SCons/Script/SConscript.xml | 13 |
2 files changed, 11 insertions, 9 deletions
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py index 5968346..fb6ec0d 100644 --- a/src/engine/SCons/Script/SConscript.py +++ b/src/engine/SCons/Script/SConscript.py @@ -153,14 +153,14 @@ def Return(*vars, **kw): stack_bottom = '% Stack boTTom %' # hard to define a variable w/this name :) -def handle_missing_SConscript(f, must_exist): +def handle_missing_SConscript(f, must_exist=None): """Take appropriate action on missing file in SConscript() call. The action may be to raise an exception, or print a warning. On first warning, also print a deprecation warning. """ - if SCons.Script._no_missing_sconscript or must_exist: + if must_exist or (SCons.Script._no_missing_sconscript and must_exist is not False): msg = "Fatal: missing SConscript '%s'" % f.get_internal_path() raise SCons.Errors.UserError(msg) @@ -285,7 +285,7 @@ def _SConscript(fs, *files, **kw): if old_file is not None: call_stack[-1].globals.update({__file__:old_file}) else: - handle_missing_SConscript(f, kw.get('must_exist', False)) + handle_missing_SConscript(f, kw.get('must_exist', None)) finally: SCons.Script.sconscript_reading = SCons.Script.sconscript_reading - 1 @@ -568,6 +568,7 @@ class SConsEnvironment(SCons.Environment.Base): files, exports = self._get_SConscript_filenames(ls, subst_kw) subst_kw['exports'] = exports + return _SConscript(self.fs, *files, **subst_kw) def SConscriptChdir(self, flag): diff --git a/src/engine/SCons/Script/SConscript.xml b/src/engine/SCons/Script/SConscript.xml index 29a89c2..a6258c4 100644 --- a/src/engine/SCons/Script/SConscript.xml +++ b/src/engine/SCons/Script/SConscript.xml @@ -357,12 +357,12 @@ Return('val1 val2') <scons_function name="SConscript"> <arguments> -(scripts, [exports, variant_dir, duplicate, must_exist=flag]) -<!-- (scripts, [exports, variant_dir, src_dir, duplicate, must_exist=flag]) --> +(scripts, [exports, variant_dir, duplicate, must_exist]) +<!-- (scripts, [exports, variant_dir, src_dir, duplicate, must_exist]) --> </arguments> <arguments> -(dirs=subdirs, [name=script, exports, variant_dir, duplicate, must_exist=flag]) -<!-- (dirs=subdirs, [name=script, exports, variant_dir, src_dir, duplicate, must_exist=flag]) --> +(dirs=subdirs, [name=script, exports, variant_dir, duplicate, must_exist]) +<!-- (dirs=subdirs, [name=script, exports, variant_dir, src_dir, duplicate, must_exist]) --> </arguments> <summary> <para> @@ -562,12 +562,13 @@ and what about this alternative? TODO??? SConscript('build/SConscript', src_dir='src') --> </para> + <para> The optional <varname>must_exist</varname> argument, if true, causes an exception to be raised if a requested -&SConscript; file is not found. The default is false, -which only prints a warning, but this behavior is deprecated. +&SConscript; file is not found. The current default is false, +causing only a warning to be omitted, but this behavior is deprecated. For scripts which truly intend to be optional, transition to explicty supplying <literal>must_exist=False</literal> to the call. |