summaryrefslogtreecommitdiff
path: root/tools/build/v2/test/absolute_sources.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/build/v2/test/absolute_sources.py')
-rw-r--r--tools/build/v2/test/absolute_sources.py96
1 files changed, 96 insertions, 0 deletions
diff --git a/tools/build/v2/test/absolute_sources.py b/tools/build/v2/test/absolute_sources.py
new file mode 100644
index 0000000000..58e2cf4516
--- /dev/null
+++ b/tools/build/v2/test/absolute_sources.py
@@ -0,0 +1,96 @@
+#!/usr/bin/python
+
+# Copyright 2003, 2004 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 that sources with absolute names are handled OK.
+
+import BoostBuild
+
+t = BoostBuild.Tester()
+
+t.write("jamroot.jam", """
+path-constant TOP : . ;
+""")
+
+t.write("jamfile.jam", """
+local pwd = [ PWD ] ;
+ECHO $(pwd) XXXXX ;
+exe hello : $(pwd)/hello.cpp $(TOP)/empty.cpp ;
+""")
+
+t.write("hello.cpp", "int main() {}\n")
+
+t.write("empty.cpp", "\n")
+
+t.run_build_system()
+t.expect_addition("bin/$toolset/debug/hello.exe")
+
+# Test a contrived case. There, absolute name is used in a standalone project
+# (not Jamfile). Moreover, the target with an absolute name is returned by
+# 'alias' and used from another project.
+t.write("a.cpp", """
+int main() {}
+""")
+
+t.write("jamfile.jam", """
+exe a : /standalone//a ;
+""")
+
+t.write("jamroot.jam", """
+import standalone ;
+""")
+
+t.write("standalone.jam", """
+import project ;
+
+project.initialize $(__name__) ;
+project standalone ;
+
+local pwd = [ PWD ] ;
+alias a : $(pwd)/a.cpp ;
+""")
+
+t.write("standalone.py", """
+from b2.manager import get_manager
+
+# FIXME: this is ugly as death
+get_manager().projects().initialize(__name__)
+
+import os ;
+
+# This use of list as parameter is also ugly.
+project(['standalone'])
+
+pwd = os.getcwd()
+alias('a', [os.path.join(pwd, 'a.cpp')])
+""")
+
+t.run_build_system()
+t.expect_addition("bin/$toolset/debug/a.exe")
+
+# Test absolute path in target ids.
+t.rm(".")
+
+t.write("d1/jamroot.jam", "")
+
+t.write("d1/jamfile.jam", """
+exe a : a.cpp ;
+""")
+
+t.write("d1/a.cpp", """
+int main() {}
+""")
+
+t.write("d2/jamroot.jam", "")
+
+t.write("d2/jamfile.jam", """
+local pwd = [ PWD ] ;
+alias x : $(pwd)/../d1//a ;
+""")
+
+t.run_build_system(subdir="d2")
+t.expect_addition("d1/bin/$toolset/debug/a.exe")
+
+t.cleanup()