2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-13 12:22:17 +00:00
Files
build/test/project_test3.py
Rene Rivera 40e7f0e8dd Fix tests to pass on Windows after removing toolset requirements ignore.
Various restructure of test framework handling of paths to avoid duplicate path editing which caused failed tests. Adjust many tests to deal with added subdirectories in build outputs now that toolset requirements are active.
2017-07-02 23:28:48 -05:00

137 lines
4.1 KiB
Python

#!/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 copy at
# 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)
t.expect_output_lines("error: Could not find parent for project at '.'\n"
"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(["release", "optimization=off,speed"])
t.expect_addition(["bin/$toolset/release/optimization-off*/a.exe",
"bin/$toolset/release/optimization-off*/a.obj",
"bin/$toolset/release*/a.exe",
"bin/$toolset/release*/a.obj"])
t.run_build_system(["--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()