#!/usr/bin/python # Copyright (C) 2003. Pedro Ferreira # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.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 @$(__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 ] { case debug : tags += d ; case release : tags += r ; } switch [ $(property-set).get ] { 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 : @$(__name__).tag ; lib b : a.cpp : @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()