Boost logo

Boost-Commit :

From: jurko.gospodnetic_at_[hidden]
Date: 2008-08-24 07:08:51


Author: jurko
Date: 2008-08-24 07:08:51 EDT (Sun, 24 Aug 2008)
New Revision: 48346
URL: http://svn.boost.org/trac/boost/changeset/48346

Log:
Minor stylistic changes made to Boost Build's tools/testing.jam module.
Text files modified:
   trunk/tools/build/v2/tools/testing.jam | 211 +++++++++++++++++++++------------------
   1 files changed, 111 insertions(+), 100 deletions(-)

Modified: trunk/tools/build/v2/tools/testing.jam
==============================================================================
--- trunk/tools/build/v2/tools/testing.jam (original)
+++ trunk/tools/build/v2/tools/testing.jam 2008-08-24 07:08:51 EDT (Sun, 24 Aug 2008)
@@ -3,51 +3,51 @@
 # Distributed under the Boost Software License, Version 1.0.
 # (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 
-# This module implements regression testing framework. It declares a number of
-# main target rules which perform some action and, if the results are ok,
-# creates an output file.
-#
-# The exact list of rules is:
-# 'compile' -- creates .test file if compilation of sources was
-# successful.
-# 'compile-fail' -- creates .test file if compilation of sources failed.
-# 'run' -- creates .test file is running of executable produced from
-# sources was successful. Also leaves behind .output file
-# with the output from program run.
-# 'run-fail' -- same as above, but .test file is created if running fails.
-#
-# In all cases, presence of .test file is an indication that the test passed.
-# For more convenient reporting, you might want to use C++ Boost regression
-# testing utilities, see http://www.boost.org/more/regression.html
+# This module implements regression testing framework. It declares a number of
+# main target rules which perform some action and, if the results are OK,
+# creates an output file.
 #
-# For historical reason, a 'unit-test' rule is available which has the same
-# syntax as 'exe' and behaves just like 'run'.
+# The exact list of rules is:
+# 'compile' -- creates .test file if compilation of sources was
+# successful.
+# 'compile-fail' -- creates .test file if compilation of sources failed.
+# 'run' -- creates .test file is running of executable produced from
+# sources was successful. Also leaves behind .output file
+# with the output from program run.
+# 'run-fail' -- same as above, but .test file is created if running fails.
+#
+# In all cases, presence of .test file is an indication that the test passed.
+# For more convenient reporting, you might want to use C++ Boost regression
+# testing utilities (see http://www.boost.org/more/regression.html).
+#
+# For historical reason, a 'unit-test' rule is available which has the same
+# syntax as 'exe' and behaves just like 'run'.
 
 # Things to do:
 # - Teach compiler_status handle Jamfile.v2.
 # Notes:
-# - <no-warn> is not implemented, since in Como-specific, and it's not clear
-# how to implement it
-# - std::locale-support is not implemented (it's used in one test).
+# - <no-warn> is not implemented, since it is Como-specific, and it is not
+# clear how to implement it
+# - std::locale-support is not implemented (it is used in one test).
 
 
-import targets ;
+import alias ;
 import "class" : new ;
-import property ;
+import common ;
+import errors ;
 import feature ;
-import toolset ;
-import alias ;
-import type ;
 import generators ;
+import os ;
+import path ;
 import project ;
+import property ;
 import property-set ;
-import virtual-target ;
-import path ;
-import os ;
-import common ;
-import sequence ;
-import errors ;
 import regex ;
+import sequence ;
+import targets ;
+import toolset ;
+import type ;
+import virtual-target ;
 
 
 rule init ( )
@@ -81,17 +81,17 @@
 
 # Helper rule. Create a test target, using basename of first source if no target
 # name is explicitly passed. Remembers the created target in a global variable.
+#
 rule make-test ( target-type : sources + : requirements * : target-name ? )
 {
     target-name ?= $(sources[1]:D=:S=) ;
-
- # Having periods (".") in the target name is problematic because the
- # typed generator will strip the suffix and use the bare name for the
- # file targets. Even though the location-prefix averts problems most
- # times it doesn't prevent ambiguity issues when referring to the
- # test targets. For example when using the XML log output. So we
- # rename the target to remove the periods, and provide an alias
- # for users.
+
+ # Having periods (".") in the target name is problematic because the typed
+ # generator will strip the suffix and use the bare name for the file
+ # targets. Even though the location-prefix averts problems most times it
+ # does not prevent ambiguity issues when referring to the test targets. For
+ # example when using the XML log output. So we rename the target to remove
+ # the periods, and provide an alias for users.
     local real-name = [ regex.replace $(target-name) "[.]" "~" ] ;
 
     local project = [ project.current ] ;
@@ -103,7 +103,7 @@
           [ type.type-from-rule-name $(target-type) ] : $(project)
             : $(real-name) : $(sources)
             : $(requirements) <location-prefix>$(real-name).test ] ;
-
+
     # The alias to the real target, per period replacement above.
     if $(real-name) != $(target-name)
     {
@@ -149,7 +149,7 @@
 {
     if $(input-files[2])
     {
- # Check that sorting made when creating property-set instance won't
+ # Check that sorting made when creating property-set instance will not
         # change the ordering.
         if [ sequence.insertion-sort $(input-files) ] != $(input-files)
         {
@@ -178,12 +178,14 @@
     return [ make-test run-fail : $(sources) : $(requirements) : $(target-name) ] ;
 }
 
+
 # Use 'test-suite' as a synonym for 'alias', for backward compatibility.
 IMPORT : alias : : test-suite ;
 
 
 # For all main targets in 'project-module', which are typed targets with type
 # derived from 'TEST', produce some interesting information.
+#
 rule dump-tests # ( project-module )
 {
     for local t in $(.all-tests)
@@ -195,6 +197,7 @@
 
 # Given a project location in normalized form (slashes are forward), compute the
 # name of the Boost library.
+#
 local rule get-library-name ( path )
 {
     # Path is in normalized form, so all slashes are forward.
@@ -219,10 +222,11 @@
 
 
 # Takes a target (instance of 'basic-target') and prints
-# - its type
-# - its name
-# - comments specified via the <test-info> property
-# - relative location of all source from the project root.
+# - its type
+# - its name
+# - comments specified via the <test-info> property
+# - relative location of all source from the project root.
+#
 rule dump-test ( target )
 {
     local type = [ $(target).type ] ;
@@ -230,8 +234,8 @@
     local project = [ $(target).project ] ;
 
     local project-root = [ $(project).get project-root ] ;
- local library = [ get-library-name
- [ path.root [ $(project).get location ] [ path.pwd ] ] ] ;
+ local library = [ get-library-name [ path.root [ $(project).get location ]
+ [ path.pwd ] ] ] ;
     if $(library)
     {
         name = $(library)/$(name) ;
@@ -300,10 +304,10 @@
 # Generator which runs an EXE and captures output.
 generators.register-standard testing.capture-output : EXE : RUN_OUTPUT ;
 
-# Generator which creates a target if sources runs successfully. Differs from
-# RUN in that run output is not captured. The reason why it exists is that the
-# 'run' rule is much better for automated testing, but is not user-friendly. See
-# http://article.gmane.org/gmane.comp.lib.boost.build/6353/
+# Generator which creates a target if sources run successfully. Differs from RUN
+# in that run output is not captured. The reason why it exists is that the 'run'
+# rule is much better for automated testing, but is not user-friendly (see
+# http://article.gmane.org/gmane.comp.lib.boost.build/6353).
 generators.register-standard testing.unit-test : EXE : UNIT_TEST ;
 
 
@@ -311,13 +315,16 @@
 
 # Causes the 'target' to exist after bjam invocation if and only if all the
 # dependencies were successfully built.
+#
 rule expect-success ( target : dependency + : requirements * )
 {
     **passed** $(target) : $(sources) ;
 }
 
+
 # Causes the 'target' to exist after bjam invocation if and only if all some of
 # the dependencies were not successfully built.
+#
 rule expect-failure ( target : dependency + : properties * )
 {
     local grist = [ MATCH ^<(.*)> : $(dependency:G) ] ;
@@ -333,10 +340,11 @@
 
 
 # The rule/action combination used to report successfull passing of a test.
+#
 rule **passed**
 {
     # Dump all the tests, if needed. We do it here, since dump should happen
- # only after all Jamfiles have been read, and there's no such place
+ # only after all Jamfiles have been read, and there is no such place
     # currently defined (but there should be).
     if ! $(.dumped-tests) && --dump-tests in [ modules.peek : ARGV ]
     {
@@ -398,6 +406,7 @@
 # - if 'none', does not remove anything, ever
 # - if empty, removes 'source'
 # - if non-empty and not 'none', contains a list of sources to remove.
+#
 rule capture-output ( target : source : properties * : targets-to-remove * )
 {
     output-file on $(target) = $(target:S=.output) ;
@@ -405,7 +414,7 @@
 
     # The INCLUDES kill a warning about independent target...
     INCLUDES $(target) : $(target:S=.output) ;
- # but it also puts .output into dependency graph, so we must tell jam it's
+ # but it also puts .output into dependency graph, so we must tell jam it is
     # OK if it cannot find the target or updating rule.
     NOCARE $(target:S=.output) ;
 
@@ -431,12 +440,12 @@
     {
         TEMPORARY $(targets-to-remove) ;
         # Set a second action on target that will be executed after capture
- # output action. The 'RmTemps' rule has the 'ignore' modifier so it's
+ # output action. The 'RmTemps' rule has the 'ignore' modifier so it is
         # always considered succeeded. This is needed for 'run-fail' test. For
         # that test the target will be marked with FAIL_EXPECTED, and without
         # 'ignore' successful execution will be negated and be reported as
- # failure. With 'ignore' we don't detect a case where removing files
- # fails, but it's not likely to happen.
+ # failure. With 'ignore' we do not detect a case where removing files
+ # fails, but it is not likely to happen.
         RmTemps $(target) : $(targets-to-remove) ;
     }
 }
@@ -444,77 +453,77 @@
 
 if [ os.name ] = NT
 {
- STATUS = %status% ;
- SET_STATUS = "set status=%ERRORLEVEL%" ;
- RUN_OUTPUT_NL = "echo." ;
- STATUS_0 = "%status% EQU 0 (" ;
- STATUS_NOT_0 = "%status% NEQ 0 (" ;
- VERBOSE = "%verbose% EQU 1 (" ;
- ENDIF = ")" ;
- SHELL_SET = "set " ;
- CATENATE = type ;
- CP = copy ;
+ .STATUS = %status% ;
+ .SET_STATUS = "set status=%ERRORLEVEL%" ;
+ .RUN_OUTPUT_NL = "echo." ;
+ .STATUS_0 = "%status% EQU 0 (" ;
+ .STATUS_NOT_0 = "%status% NEQ 0 (" ;
+ .VERBOSE = "%verbose% EQU 1 (" ;
+ .ENDIF = ")" ;
+ .SHELL_SET = "set " ;
+ .CATENATE = type ;
+ .CP = copy ;
 }
 else
 {
- STATUS = "$status" ;
- SET_STATUS = "status=$?" ;
- RUN_OUTPUT_NL = "echo" ;
- STATUS_0 = "test $status -eq 0 ; then" ;
- STATUS_NOT_0 = "test $status -ne 0 ; then" ;
- VERBOSE = "test $verbose -eq 1 ; then" ;
- ENDIF = "fi" ;
- SHELL_SET = "" ;
- CATENATE = cat ;
- CP = cp ;
+ .STATUS = "$status" ;
+ .SET_STATUS = "status=$?" ;
+ .RUN_OUTPUT_NL = "echo" ;
+ .STATUS_0 = "test $status -eq 0 ; then" ;
+ .STATUS_NOT_0 = "test $status -ne 0 ; then" ;
+ .VERBOSE = "test $verbose -eq 1 ; then" ;
+ .ENDIF = "fi" ;
+ .SHELL_SET = "" ;
+ .CATENATE = cat ;
+ .CP = cp ;
 }
 
+
+.VERBOSE_TEST = 0 ;
 if --verbose-test in [ modules.peek : ARGV ]
 {
- VERBOSE_TEST = 1 ;
-}
-else
-{
- VERBOSE_TEST = 0 ;
+ .VERBOSE_TEST = 1 ;
 }
 
 
-RM = [ common.rm-command ] ;
+.RM = [ common.rm-command ] ;
 
 
 actions capture-output bind INPUT_FILES output-file
 {
     $(PATH_SETUP)
     $(LAUNCHER) "$(>)" $(ARGS) "$(INPUT_FILES)" > "$(output-file)" 2>&1
- $(SET_STATUS)
- $(RUN_OUTPUT_NL) >> "$(output-file)"
- echo EXIT STATUS: $(STATUS) >> "$(output-file)"
- if $(STATUS_0)
- $(CP) "$(output-file)" "$(<)"
- $(ENDIF)
- $(SHELL_SET)verbose=$(VERBOSE_TEST)
- if $(STATUS_NOT_0)
- $(SHELL_SET)verbose=1
- $(ENDIF)
- if $(VERBOSE)
+ $(.SET_STATUS)
+ $(.RUN_OUTPUT_NL) >> "$(output-file)"
+ echo EXIT STATUS: $(.STATUS) >> "$(output-file)"
+ if $(.STATUS_0)
+ $(.CP) "$(output-file)" "$(<)"
+ $(.ENDIF)
+ $(.SHELL_SET)verbose=$(.VERBOSE_TEST)
+ if $(.STATUS_NOT_0)
+ $(.SHELL_SET)verbose=1
+ $(.ENDIF)
+ if $(.VERBOSE)
         echo ====== BEGIN OUTPUT ======
- $(CATENATE) "$(output-file)"
+ $(.CATENATE) "$(output-file)"
         echo ====== END OUTPUT ======
- $(ENDIF)
- exit $(STATUS)
+ $(.ENDIF)
+ exit $(.STATUS)
 }
 
 
 actions quietly updated ignore piecemeal together RmTemps
 {
- $(RM) "$(>)"
+ $(.RM) "$(>)"
 }
 
 
-MAKE_FILE = [ common.file-creation-command ] ;
+.MAKE_FILE = [ common.file-creation-command ] ;
 
 toolset.flags testing.unit-test LAUNCHER <testing.launcher> ;
 toolset.flags testing.unit-test ARGS <testing.arg> ;
+
+
 rule unit-test ( target : source : properties * )
 {
     run-path-setup $(target) : $(source) : $(properties) ;
@@ -524,9 +533,10 @@
 actions unit-test
 {
     $(PATH_SETUP)
- $(LAUNCHER) $(>) $(ARGS) && $(MAKE_FILE) $(<)
+ $(LAUNCHER) $(>) $(ARGS) && $(.MAKE_FILE) $(<)
 }
 
+
 IMPORT $(__name__) : compile compile-fail run run-fail link link-fail
     : : compile compile-fail run run-fail link link-fail ;
 
@@ -542,6 +552,7 @@
     SYSTEM_TIME on $(target) += $(src-string)$(system) ;
 }
 
+
 IMPORT testing : record-time : : testing.record-time ;
 
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk