summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/script/scons.py13
-rw-r--r--test/option-unknown.py20
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()
+