mirror of
https://github.com/boostorg/build.git
synced 2026-02-14 00:32:11 +00:00
Related changes: * BoostBuild.Tester & TestCmd.TestCmd interfaces now accept external process parameters as a list of strings, thus avoiding problems with parsing arguments containing spaces. * Avoided a potential process hang in case an external process being run prints out enough output to fill up the OS's pipe buffer (OS would pause the process until someone read the data from the pipe but the testing framework would not do this until the process in question had terminated). [SVN r79448]
123 lines
3.4 KiB
Python
123 lines
3.4 KiB
Python
#!/usr/bin/python
|
|
|
|
# Copyright (C) Pedro Ferreira 2003. Permission to copy, use, modify, sell and
|
|
# distribute this software is granted provided this copyright notice appears in
|
|
# all copies. This software is provided "as is" without express or implied
|
|
# warranty, and with no claim as to its suitability for any purpose.
|
|
|
|
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 <tag>@$(__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_line("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 <variant> ]
|
|
{
|
|
case debug : tags += d ;
|
|
case release : tags += r ;
|
|
}
|
|
switch [ $(property-set).get <link> ]
|
|
{
|
|
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 : <tag>@$(__name__).tag ;
|
|
lib b : a.cpp : <tag>@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/link-static/a_dt.exe") +
|
|
BoostBuild.List("bin/$toolset/debug/link-static/b_dt.lib") +
|
|
BoostBuild.List("c/a_dt.exe") +
|
|
BoostBuild.List("bin/$toolset/release/link-static/a_rt.exe") +
|
|
BoostBuild.List("bin/$toolset/release/link-static/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()
|
|
|
|
test_tag_property(t)
|
|
test_folder_with_dot_in_name(t)
|
|
|
|
t.cleanup()
|