diff options
-rw-r--r-- | src/script/scons.py | 13 | ||||
-rw-r--r-- | test/option-unknown.py | 20 |
2 files changed, 29 insertions, 4 deletions
diff --git a/src/script/scons.py b/src/script/scons.py index d1cffbf..85f869c 100644 --- a/src/script/scons.py +++ b/src/script/scons.py @@ -496,6 +496,8 @@ def UsageString(): def main(): global scripts, help_option, num_jobs + targets = [] + # It looks like 2.0 changed the name of the exception class # raised by getopt. try: @@ -515,10 +517,13 @@ def main(): for opt, arg in cmd_opts: opt_func[opt](opt, arg) - cmd_opts, targets = getopt.getopt(sys.argv[1:], short_opts, long_opts) - - for opt, arg in cmd_opts: - opt_func[opt](opt, arg) + try: + cmd_opts, targets = getopt.getopt(sys.argv[1:], short_opts, long_opts) + except getopt_err, x: + _scons_user_error(x) + else: + for opt, arg in cmd_opts: + opt_func[opt](opt, arg) if not scripts: for file in ['SConstruct', 'Sconstruct', 'sconstruct']: diff --git a/test/option-unknown.py b/test/option-unknown.py new file mode 100644 index 0000000..28d3ceb --- /dev/null +++ b/test/option-unknown.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import TestSCons +import string +import sys + +test = TestSCons.TestSCons() + +test.write('SConstruct', "") + +test.run(arguments = '-Z', + stderr = '\nSCons error: option -Z not recognized\nFile "\S+", line \d+, in short_has_arg\n') + +test.run(arguments = '--ZizzerZazzerZuzz', + stderr = '\nSCons error: option --ZizzerZazzerZuzz not recognized\nFile "\S+", line \d+, in long_has_args\n') + +test.pass_test() + |