$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: jurko.gospodnetic_at_[hidden]
Date: 2008-01-05 18:18:17
Author: jurko
Date: 2008-01-05 18:18:17 EST (Sat, 05 Jan 2008)
New Revision: 42504
URL: http://svn.boost.org/trac/boost/changeset/42504
Log:
Refactored the test into two separate test functions. Made the 'directory names with dots' test use the expect_output_line() tool instead of a manual find, causing a better diagnostic to be displayed in case of a failure. Made one of the test Jam scripts more compact. Made the test use the Jamroot.jam file instead of project-root.jam.
Text files modified: 
   trunk/tools/build/v2/test/tag.py |   148 ++++++++++++++++++++++----------------- 
   1 files changed, 84 insertions(+), 64 deletions(-)
Modified: trunk/tools/build/v2/test/tag.py
==============================================================================
--- trunk/tools/build/v2/test/tag.py	(original)
+++ trunk/tools/build/v2/test/tag.py	2008-01-05 18:18:17 EST (Sat, 05 Jan 2008)
@@ -5,43 +5,70 @@
 #  all copies. This software is provided "as is" without express or implied
 #  warranty, and with no claim as to its suitability for any purpose.
 
-from BoostBuild import Tester, List
-import string
+import BoostBuild
 
-t = Tester()
 
-t.write("project-root.jam", "")
-t.write("Jamfile", """ 
+################################################################################
+#
+# test_folder_with_dot_in_name()
+# ------------------------------
+#
+################################################################################
+
+def test_folder_with_dot_in_name(t):
+    """ Regression test: the 'tag' feature did not work in directories that had
+    a dot in their name.
+    """
+
+    t.write("version-1.32.0/Jamroot.jam", """
+project test : requirements <tag>@$(__name__).tag ;
+
+rule tag ( name : type ? : property-set )
+{
+   # Do nothing, just make sure the rule is invoked OK.
+   ECHO "The tag rule was invoked" ;
+}
+exe a : a.cpp ;
+""")
+    t.write("version-1.32.0/a.cpp", "int main() { return 0; }\n")
+
+    t.run_build_system(subdir="version-1.32.0")
+    t.expect_addition("version-1.32.0/bin/$toolset/debug/a.exe")
+    t.expect_output_line("The tag rule was invoked")
+
+
+################################################################################
+#
+# test_tag_property()
+# -------------------
+#
+################################################################################
+
+def test_tag_property(t):
+    """Basic tag property test.
+    """
+
+    t.write("Jamroot.jam", """
 import virtual-target ;
+
 rule tag ( name : type ? : property-set )
 {
     local tags ;
-    local v = [ $(property-set).get <variant> ] ;
-    if $(v) = debug
-    {
-        tags += d ;
-    }
-    else if $(v) = release
-    {
-        tags += r ;
-    }
-    
-    local l = [ $(property-set).get <link> ] ;
-    if $(l) = shared
+    switch [ $(property-set).get <variant> ]
     {
-        tags += s ;
+        case debug   : tags += d ;
+        case release : tags += r ;
     }
-    else if $(l) = static
+    switch [ $(property-set).get <link> ]
     {
-        tags += t ;
+        case shared : tags += s ;
+        case static : tags += t ;
     }
-    
     if $(tags)
     {
-        return [ virtual-target.add-prefix-and-suffix $(name)_$(tags:J="") 
+        return [ virtual-target.add-prefix-and-suffix $(name)_$(tags:J="")
             : $(type) : $(property-set) ] ;
     }
-    
 }
 
 # Test both fully-qualified and local name of the rule
@@ -50,57 +77,50 @@
 stage c : a ;
 """)
 
-t.write("a.cpp", """ 
+    t.write("a.cpp", """
 int main()
 {
     return 0;
 }
 
 #ifdef _MSC_VER
-__declspec (dllexport) void x () {} 
+__declspec (dllexport) void x () {}
 #endif
 """)
 
-file_list = \
-List("bin/$toolset/debug/a_ds.exe") + \
-List("bin/$toolset/debug/b_ds.dll") + \
-List("c/a_ds.exe") + \
-List("bin/$toolset/release/a_rs.exe") + \
-List("bin/$toolset/release/b_rs.dll") + \
-List("c/a_rs.exe") + \
-List("bin/$toolset/debug/link-static/a_dt.exe") + \
-List("bin/$toolset/debug/link-static/b_dt.lib") + \
-List("c/a_dt.exe") + \
-List("bin/$toolset/release/link-static/a_rt.exe") + \
-List("bin/$toolset/release/link-static/b_rt.lib") + \
-List("c/a_rt.exe")
-
-variants = "debug release link=static,shared"
-
-t.run_build_system(variants)
-t.expect_addition(file_list)
-
-t.run_build_system(variants + " clean")
-t.expect_removal(file_list)
-
-# Regression test: the 'tag' feature did not work in directories that
-# had dot in names.
-t.write("version-1.32.0/Jamroot", """
-project test : requirements <tag>@$(__name__).tag ;
+    file_list = \
+        BoostBuild.List("bin/$toolset/debug/a_ds.exe") + \
+        BoostBuild.List("bin/$toolset/debug/b_ds.dll") + \
+        BoostBuild.List("c/a_ds.exe") + \
+        BoostBuild.List("bin/$toolset/release/a_rs.exe") + \
+        BoostBuild.List("bin/$toolset/release/b_rs.dll") + \
+        BoostBuild.List("c/a_rs.exe") + \
+        BoostBuild.List("bin/$toolset/debug/link-static/a_dt.exe") + \
+        BoostBuild.List("bin/$toolset/debug/link-static/b_dt.lib") + \
+        BoostBuild.List("c/a_dt.exe") + \
+        BoostBuild.List("bin/$toolset/release/link-static/a_rt.exe") + \
+        BoostBuild.List("bin/$toolset/release/link-static/b_rt.lib") + \
+        BoostBuild.List("c/a_rt.exe")
+
+    variants = "debug release link=static,shared"
+
+    t.run_build_system(variants)
+    t.expect_addition(file_list)
+
+    t.run_build_system(variants + " clean")
+    t.expect_removal(file_list)
+
+
+################################################################################
+#
+# main()
+# ------
+#
+################################################################################
 
-rule tag ( name : type ? : property-set )
-{
-   # Do nothing, just make sure the rule is invoked OK.
-   ECHO "The tag rule was invoked" ;
-}
-exe a : a.cpp ;
-""")
-
-t.write("version-1.32.0/a.cpp", "int main() { return 0; }\n")
+t = BoostBuild.Tester()
 
-t.run_build_system(subdir="version-1.32.0")
-t.expect_addition("version-1.32.0/bin/$toolset/debug/a.exe")
-t.fail_test(string.find(t.stdout(), "The tag rule was invoked") == -1)
+test_tag_property(t)
+test_folder_with_dot_in_name(t)
 
 t.cleanup()
-