2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-15 00:52:16 +00:00
Files
build/test/alias.py
github-actions[bot] def908ed01 [Backport version/4.10.0] python3 shebang (#266)
* python3 shebang

(cherry picked from commit 9f0d565b06482a90b59d07ef9e7b9aadd698926c)

* CI: execute python scripts via shebang

(cherry picked from commit cf36b637abe2125cf6895bec593b4cbcf71ae570)

---------

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>
2023-04-17 14:23:50 -05:00

117 lines
3.0 KiB
Python

#!/usr/bin/env python3
# Copyright 2003 Dave Abrahams
# Copyright 2003 Vladimir Prus
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE.txt or https://www.bfgroup.xyz/b2/LICENSE.txt)
import BoostBuild
###############################################################################
#
# test_alias_rule()
# -----------------
#
###############################################################################
def test_alias_rule(t):
"""Basic alias rule test."""
t.write("jamroot.jam", """\
exe a : a.cpp ;
exe b : b.cpp ;
exe c : c.cpp ;
alias bin1 : a ;
alias bin2 : a b ;
alias src : s.cpp ;
exe hello : hello.cpp src ;
""")
t.write("a.cpp", "int main() {}\n")
t.copy("a.cpp", "b.cpp")
t.copy("a.cpp", "c.cpp")
t.copy("a.cpp", "hello.cpp")
t.write("s.cpp", "")
# Check that targets to which "bin1" refers are updated, and only those.
t.run_build_system(["bin1"])
t.expect_addition(BoostBuild.List("bin/$toolset/debug*/") * "a.exe a.obj")
t.ignore_addition('bin/*/a.rsp')
t.ignore_addition('bin/*/a.*.rsp')
t.expect_nothing_more()
# Try again with "bin2"
t.run_build_system(["bin2"])
t.expect_addition(BoostBuild.List("bin/$toolset/debug*/") * "b.exe b.obj")
t.ignore_addition('bin/*/b.rsp')
t.ignore_addition('bin/*/b.*.rsp')
t.expect_nothing_more()
# Try building everything, making sure 'hello' target is created.
t.run_build_system()
t.expect_addition(BoostBuild.List("bin/$toolset/debug*/") * \
"hello.exe hello.obj")
t.ignore_addition('bin/*/hello.rsp')
t.ignore_addition('bin/*/hello.*.rsp')
t.expect_addition("bin/$toolset/debug*/s.obj")
t.ignore_addition('bin/*/s.*.rsp')
t.expect_addition(BoostBuild.List("bin/$toolset/debug*/") * "c.exe c.obj")
t.ignore_addition('bin/*/c.rsp')
t.ignore_addition('bin/*/c.*.rsp')
t.expect_nothing_more()
###############################################################################
#
# test_alias_source_usage_requirements()
# --------------------------------------
#
###############################################################################
def test_alias_source_usage_requirements(t):
"""
Check whether usage requirements are propagated via "alias". In case they
are not, linking will fail as there will be no main() function defined
anywhere in the source.
"""
t.write("jamroot.jam", """\
lib l : l.cpp : : : <define>WANT_MAIN ;
alias la : l ;
exe main : main.cpp la ;
""")
t.write("l.cpp", """\
void
#if defined(_WIN32)
__declspec(dllexport)
#endif
foo() {}
""")
t.write("main.cpp", """\
#ifdef WANT_MAIN
int main() {}
#endif
""")
t.run_build_system()
###############################################################################
#
# main()
# ------
#
###############################################################################
t = BoostBuild.Tester(use_test_config=False)
test_alias_rule(t)
test_alias_source_usage_requirements(t)
t.cleanup()