| #!/usr/bin/python |
| |
| # Copyright 2002, 2003 Dave Abrahams |
| # Copyright 2002, 2003, 2004, 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) |
| |
| import BoostBuild |
| import os |
| |
| t = BoostBuild.Tester(translate_suffixes=0) |
| |
| # First check some startup. |
| t.set_tree("project-test3") |
| os.remove("jamroot.jam") |
| t.run_build_system(status=1, stdout= |
| """error: Could not find parent for project at '.' |
| error: Did not find Jamfile.jam or Jamroot.jam in any parent directory. |
| """) |
| |
| t.set_tree("project-test3") |
| t.run_build_system() |
| |
| t.expect_addition("bin/$toolset/debug/a.obj") |
| t.expect_content("bin/$toolset/debug/a.obj", |
| """$toolset/debug |
| a.cpp |
| """) |
| |
| t.expect_addition("bin/$toolset/debug/a.exe") |
| t.expect_content("bin/$toolset/debug/a.exe", |
| "$toolset/debug\n" + |
| "bin/$toolset/debug/a.obj lib/bin/$toolset/debug/b.obj " + |
| "lib2/bin/$toolset/debug/c.obj lib2/bin/$toolset/debug/d.obj " + |
| "lib2/helper/bin/$toolset/debug/e.obj " + |
| "lib3/bin/$toolset/debug/f.obj\n" |
| ) |
| |
| t.expect_addition("lib/bin/$toolset/debug/b.obj") |
| t.expect_content("lib/bin/$toolset/debug/b.obj", |
| """$toolset/debug |
| lib/b.cpp |
| """) |
| |
| t.expect_addition("lib/bin/$toolset/debug/m.exe") |
| t.expect_content("lib/bin/$toolset/debug/m.exe", |
| """$toolset/debug |
| lib/bin/$toolset/debug/b.obj lib2/bin/$toolset/debug/c.obj |
| """) |
| |
| t.expect_addition("lib2/bin/$toolset/debug/c.obj") |
| t.expect_content("lib2/bin/$toolset/debug/c.obj", |
| """$toolset/debug |
| lib2/c.cpp |
| """) |
| |
| t.expect_addition("lib2/bin/$toolset/debug/d.obj") |
| t.expect_content("lib2/bin/$toolset/debug/d.obj", |
| """$toolset/debug |
| lib2/d.cpp |
| """) |
| |
| t.expect_addition("lib2/bin/$toolset/debug/l.exe") |
| t.expect_content("lib2/bin/$toolset/debug/l.exe", |
| """$toolset/debug |
| lib2/bin/$toolset/debug/c.obj bin/$toolset/debug/a.obj |
| """) |
| |
| t.expect_addition("lib2/helper/bin/$toolset/debug/e.obj") |
| t.expect_content("lib2/helper/bin/$toolset/debug/e.obj", |
| """$toolset/debug |
| lib2/helper/e.cpp |
| """) |
| |
| t.expect_addition("lib3/bin/$toolset/debug/f.obj") |
| t.expect_content("lib3/bin/$toolset/debug/f.obj", |
| """$toolset/debug |
| lib3/f.cpp lib2/helper/bin/$toolset/debug/e.obj |
| """) |
| |
| t.touch("a.cpp") |
| t.run_build_system() |
| t.expect_touch(["bin/$toolset/debug/a.obj", |
| "bin/$toolset/debug/a.exe", |
| "lib2/bin/$toolset/debug/l.exe"]) |
| |
| t.run_build_system(extra_args="release optimization=off,speed") |
| t.expect_addition(["bin/$toolset/release/a.exe", |
| "bin/$toolset/release/a.obj", |
| "bin/$toolset/release/optimization-off/a.exe", |
| "bin/$toolset/release/optimization-off/a.obj"]) |
| |
| t.run_build_system(extra_args='--clean-all') |
| t.expect_removal(["bin/$toolset/debug/a.obj", |
| "bin/$toolset/debug/a.exe", |
| "lib/bin/$toolset/debug/b.obj", |
| "lib/bin/$toolset/debug/m.exe", |
| "lib2/bin/$toolset/debug/c.obj", |
| "lib2/bin/$toolset/debug/d.obj", |
| "lib2/bin/$toolset/debug/l.exe", |
| "lib3/bin/$toolset/debug/f.obj"]) |
| |
| # Now test target ids in command line. |
| t.set_tree("project-test3") |
| t.run_build_system("lib//b.obj") |
| t.expect_addition("lib/bin/$toolset/debug/b.obj") |
| t.expect_nothing_more() |
| |
| t.run_build_system("--clean lib//b.obj") |
| t.expect_removal("lib/bin/$toolset/debug/b.obj") |
| t.expect_nothing_more() |
| |
| t.run_build_system("lib//b.obj") |
| t.expect_addition("lib/bin/$toolset/debug/b.obj") |
| t.expect_nothing_more() |
| |
| t.run_build_system("release lib2/helper//e.obj /lib3//f.obj") |
| t.expect_addition("lib2/helper/bin/$toolset/release/e.obj") |
| t.expect_addition("lib3/bin/$toolset/release/f.obj") |
| t.expect_nothing_more() |
| |
| # Test project ids in command line work as well. |
| t.set_tree("project-test3") |
| t.run_build_system("/lib2") |
| t.expect_addition("lib2/bin/$toolset/debug/" * BoostBuild.List("c.obj d.obj l.exe")) |
| t.expect_addition("bin/$toolset/debug/a.obj") |
| t.expect_nothing_more() |
| |
| t.run_build_system("lib") |
| t.expect_addition("lib/bin/$toolset/debug/" * BoostBuild.List("b.obj m.exe")) |
| t.expect_nothing_more() |
| |
| t.cleanup() |