diff options
Diffstat (limited to 'src/boost/tools/build/test/tag.py')
-rw-r--r-- | src/boost/tools/build/test/tag.py | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/src/boost/tools/build/test/tag.py b/src/boost/tools/build/test/tag.py new file mode 100644 index 000000000..260bb385f --- /dev/null +++ b/src/boost/tools/build/test/tag.py @@ -0,0 +1,122 @@ +#!/usr/bin/python + +# Copyright (C) 2003. Pedro Ferreira +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE.txt or copy at +# https://www.bfgroup.xyz/b2/LICENSE.txt) + +import BoostBuild + + +############################################################################### +# +# 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 has been invoked. ; +} +exe a : a.cpp ; +""") + t.write("version-1.32.0/a.cpp", "int main() {}\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_lines("The tag rule has been 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 ; + switch [ $(property-set).get <variant> ] + { + case debug : tags += d ; + case release : tags += r ; + } + switch [ $(property-set).get <link> ] + { + case shared : tags += s ; + case static : tags += t ; + } + if $(tags) + { + return [ virtual-target.add-prefix-and-suffix $(name)_$(tags:J="") + : $(type) : $(property-set) ] ; + } +} + +# Test both fully-qualified and local name of the rule +exe a : a.cpp : <tag>@$(__name__).tag ; +lib b : a.cpp : <tag>@tag ; +stage c : a ; +""") + + t.write("a.cpp", """\ +int main() {} +#ifdef _MSC_VER +__declspec (dllexport) void x () {} +#endif +""") + + 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*/a_dt.exe") + + BoostBuild.List("bin/$toolset/debug*/b_dt.lib") + + BoostBuild.List("c/a_dt.exe") + + BoostBuild.List("bin/$toolset/release*/a_rt.exe") + + BoostBuild.List("bin/$toolset/release*/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() +# ------ +# +############################################################################### + +t = BoostBuild.Tester(use_test_config=False) + +test_tag_property(t) +test_folder_with_dot_in_name(t) + +t.cleanup() |