Add the -q option.
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Thu, 21 Feb 2002 22:30:24 +0000 (22:30 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Thu, 21 Feb 2002 22:30:24 +0000 (22:30 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@274 fdb21ef1-2011-0410-befe-b5e4ea1792b1

doc/man/scons.1
src/CHANGES.txt
src/RELEASE.txt
src/engine/SCons/Script/__init__.py
test/option-q.py

index ef5b66449f8170da579dac75775a7b8d1d48ede5..461e8faf7284566022a112b424f974642f2b4666 100644 (file)
@@ -445,13 +445,13 @@ any out-of-date target files, but do not execute the commands.
 .\" .ES
 .\" scons -p -q
 .\" .EE
-.\"
-.\" .TP
-.\" -q, --question
-.\" Do not run any commands, or print anything.  Just return an exit
-.\" status that is zero if the specified targets are already up to
-.\" date, nonzero otherwise.
-.\"
+
+.TP
+-q, --question
+Do not run any commands, or print anything.  Just return an exit
+status that is zero if the specified targets are already up to
+date, non-zero otherwise.
+
 .\" .TP
 .\" -r, -R, --no-builtin-rules, --no-builtin-variables
 .\" Clear the default construction variables.  Construction
index 4643b9a33de783cc49ef412aaa730910657b1deb..33a4a40e327f813fbc0751939bd2d0dd22dd0d29 100644 (file)
@@ -73,6 +73,8 @@ RELEASE 0.05 -
 
   - Fix the --debug=pdb option when run on Windows NT.
 
+  - Add support for the -q option.
+
   From Steve Leblanc:
 
   - Add support for the -u option.
index 358a35948862ff4182fd227169e1b9f47663a2bd..f257e8441d7764fac98cc3c224acaa7f1902f966 100644 (file)
@@ -98,7 +98,7 @@ RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600
        - No support yet for the following command-line options:
 
              -d -e -l --list-actions --list-derived --list-where
-             -o -p -q -r -R --random -w --write-filenames -W
+             -o -p -r -R --random -w --write-filenames -W
              --warn-undefined-variables
 
   Thank you for your interest, and please let us know how we can help
index 529729eaceb26b524b7910389f8e5d7ac794c9a1..84882f42ebcee370adc2905434353a695f4cea7e 100644 (file)
@@ -120,6 +120,16 @@ class CleanTask(SCons.Taskmaster.Task):
             except IndexError:
                 pass
 
+class QuestionTask(SCons.Taskmaster.Task):
+    """An SCons task for the -q (question) option."""
+    def execute(self):
+        if self.targets[0].get_state() != SCons.Node.up_to_date:
+            global exit_status
+            exit_status = 1
+            self.tm.stop()
+
+    def executed(self):
+        pass
 
 # Global variables
 
@@ -501,7 +511,11 @@ def options_init():
        short = 'p',
        help = "Print internal environments/objects.")
 
-    Option(func = opt_not_yet, future = 1,
+    def opt_q(opt, arg):
+        global task_class
+        task_class = QuestionTask
+
+    Option(func = opt_q, future = 1,
        short = 'q', long = ['question'],
        help = "Don't build; exit status says if up to date.")
 
index 8d9fb1b8f1da0655cf2ea9b358b711d45f39adc1..6e72a26186595e6078b2195143c1a7d05214d45f 100644 (file)
 
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
-import TestSCons
+import os.path
 import string
 import sys
 
+import TestSCons
+
 test = TestSCons.TestSCons()
 
-test.write('SConstruct', "")
+python = sys.executable
+
+test.write('build.py', r"""
+import sys
+contents = open(sys.argv[2], 'rb').read()
+file = open(sys.argv[1], 'wb')
+file.write(contents)
+file.close()
+""")
+
+test.write('SConstruct', """
+B = Builder(name='B', action='%s build.py $TARGET $SOURCES')
+env = Environment(BUILDERS = [B])
+env.B(target = 'aaa.out', source = 'aaa.in')
+env.B(target = 'bbb.out', source = 'bbb.in')
+""" % python)
+
+test.write('aaa.in', "aaa.in\n")
+test.write('bbb.in', "bbb.in\n")
+
+test.run(arguments = '-q aaa.out', status = 1)
+
+test.fail_test(os.path.exists(test.workpath('aaa.out')))
+
+test.run(arguments = 'aaa.out')
+
+test.fail_test(test.read('aaa.out') != "aaa.in\n")
+
+test.run(arguments = '-q aaa.out', status = 0)
+
+test.run(arguments = '--question bbb.out', status = 1)
+
+test.fail_test(os.path.exists(test.workpath('bbb.out')))
+
+test.run(arguments = 'bbb.out')
 
-test.run(arguments = '-q',
-        stderr = "Warning:  the -q option is not yet implemented\n")
+test.fail_test(test.read('bbb.out') != "bbb.in\n")
 
-test.run(arguments = '--question',
-        stderr = "Warning:  the --question option is not yet implemented\n")
+test.run(arguments = '--question bbb.out', status = 0)
 
 test.pass_test()