| #!/usr/bin/python |
| |
| # Copyright 2003 Dave Abrahams |
| # Copyright 2003, 2006 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) |
| |
| # Test the 'make' rule. |
| |
| import BoostBuild |
| import string |
| |
| t = BoostBuild.Tester(pass_toolset=1) |
| |
| t.write("jamroot.jam", """ |
| import feature ; |
| feature.feature test_feature : : free ; |
| |
| import toolset ; |
| toolset.flags creator STRING : <test_feature> ; |
| |
| actions creator |
| { |
| echo $(STRING) > $(<) |
| } |
| |
| make foo.bar : : creator : <test_feature>12345678 ; |
| """) |
| |
| t.run_build_system() |
| t.expect_addition("bin/$toolset/debug/foo.bar") |
| t.fail_test(string.find(t.read("bin/$toolset/debug/foo.bar"), "12345678") == -1) |
| |
| |
| # Regression test. Make sure that if a main target is requested two times, and |
| # build requests differ only in incidental properties, the main target is |
| # created only once. The bug was discovered by Kirill Lapshin. |
| t.write("jamroot.jam", """ |
| # Make sure that incidental property does not cause second creation of |
| # 'hello1.cpp'. |
| exe a : dir//hello1.cpp ; |
| exe b : dir//hello1.cpp/<hardcode-dll-paths>true ; |
| """) |
| |
| t.write("dir/jamfile.jam", """ |
| import common ; |
| make hello1.cpp : hello.cpp : common.copy ; |
| """) |
| |
| t.write("dir/hello.cpp", """ |
| int main() {} |
| """) |
| |
| # Show only action names. |
| t.run_build_system("-d1 -n") |
| t.fail_test(t.stdout().count("copy") != 1) |
| |
| t.cleanup() |