|
Boost-Commit : |
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()
-
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