diff options
Diffstat (limited to 'tools/build/v2/test/m1-02.py')
-rw-r--r-- | tools/build/v2/test/m1-02.py | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/tools/build/v2/test/m1-02.py b/tools/build/v2/test/m1-02.py new file mode 100644 index 0000000000..13cc9dc1ae --- /dev/null +++ b/tools/build/v2/test/m1-02.py @@ -0,0 +1,90 @@ +#!/usr/bin/python + +# Copyright 2002 Vladimir Prus +# 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) + +# Tests that 'make' accepts targets from other directories and that build +# requests for those targets can be overriden. + +import BoostBuild + +t = BoostBuild.Tester() + +t.set_tree("test1") + +t.run_build_system("-sTOOLSET=yfc") + +t.expect_addition("bin/a.obj/yfc/debug/runtime-link-dynamic/a.obj") +t.expect_addition("auxillary/bin/b.obj/yfc/debug/runtime-link-dynamic/optimization-space/b.obj") +t.expect_addition("bin/a/yfc/debug/runtime-link-dynamic/a") +t.expect_nothing_more() + +t.fail(t.read("bin/a.obj/yfc/debug/runtime-link-dynamic/a.obj") !=\ +""" +<optimization>off <rtti>on <runtime-link>dynamic <toolset>yfc <variant>debug +a.cpp +""") + +t.fail(t.read("auxillary/bin/b.obj/yfc/debug/runtime-link-dynamic/b.obj") !=\ +""" +<optimization>space <rtti>on <runtime-link>dynamic <toolset>yfc <variant>debug +b.cpp +""") + +t.fail(t.read("bin/a/yfc/debug/runtime-link-dynamic/a") !=\ +""" +<optimization>off <rtti>on <runtime-link>dynamic <toolset>yfc <variant>debug +<optimization>off <rtti>on <runtime-link>dynamic <toolset>yfc <variant>debug +a.cpp +<optimization>space <rtti>on <runtime-link>dynamic <toolset>yfc <variant>debug +b.cpp +""") + +# Check that we have vanilla target names available in subdirs. +t.touch("auxillary/b.cpp") +t.run_build_system("-sTOOLSET b.obj", subdir="auxillary") +t.expect_touch("auxillary/bin/b.obj/yfc/debug/runtime-link-dynamic/optimization-space/b.obj") +t.expect_no_modification("bin/a.obj/yfc/debug/runtime-link-dynamic/a.obj") +t.expect_no_modification("bin/a/yfc/debug/runtime-link-dynamic/a") + + +# Check that we can not request link-incompatible property for source target. +t.write('jamfile.jam', t.read('jamfile2.jam')) +stdout="""Error: subvariant of target ./a with properties + <optimization>off <rtti>on <runtime-link>dynamic <toolset>yfc <variant>debug +requests link-incompatible property + <rtti>off +for source @auxillary/b.obj +""" +t.run_build_system("-sTOOLSET=yfc", stdout=stdout) + + +# Check that if we request link-compatible property then requirement for the +# source target will override it, with a warning. This is similar to the way +# build requests are satisfied (see the first test). +# +# CONSIDER: should be print the main target which requests this one (and +# modifies requirements)? +t.write('jamfile.jam', t.read('jamfile3.jam')) +t.write('auxillary/jamfile.jam', t.read('auxillary/jamfile3.jam')) +stdout="""Warning: cannot exactly satisfy request for auxillary/b.obj with properties + <optimization>space <rtti>on <runtime-link>dynamic <toolset>yfc <variant>debug +Using + <optimization>speed <rtti>on <runtime-link>dynamic <toolset>yfc <variant>debug +instead. +""" +t.run_build_system("-sTOOLSET=yfc", stdout=stdout) + + +# Check for link-incompatible properties. +t.write('jamfile.jam', t.read('jamfile4.jam')) +t.write('auxillary/jamfile.jam', t.read('auxillary/jamfile4.jam')) +stdout="""Warning: cannot satisfy request for auxillary/b.obj with properties + <optimization>space <rtti>on <runtime-link>dynamic <toolset>yfc <variant>debug +Nothing will be built. +""" +t.run_build_system("-sTOOLSET=yfc", stdout=stdout) + + +t.pass_test() |