Commits

Steven Knight  committed 6d5ea49

Add a test for unknown options (both short and long).

  • Participants
  • Parent commits c9f2c0f

Comments (0)

Files changed (2)

File src/script/scons.py

 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:
 	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']:

File test/option-unknown.py

+#!/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()
+