| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- #!/usr/bin/python
- # Copyright 2018 Steven Watanabe
- # Distributed under the Boost Software License, Version 1.0.
- # (See accompanying file LICENSE.txt or https://www.bfgroup.xyz/b2/LICENSE.txt)
- # Test the package module.
- import BoostBuild
- import os
- def setup():
- t = BoostBuild.Tester(["p//install", "p//data"],
- use_test_config=False)
- t.write("p/jamroot.jam", "")
- t.write("p/jamfile.jam", """\
- import package ;
- exe a : a.cpp ;
- lib b : b.cpp ;
- package.install install Test :
- : a
- : b/<link>static b/<link>shared
- : a.h ;
- package.install-data data : Test : a.txt ;
- """)
- t.write("p/a.cpp", "int main() {}")
- t.write("p/b.cpp", """
- int
- #ifdef _WIN32
- __declspec(dllexport)
- #endif
- must_export_something;
- """)
- t.write("p/a.h", "")
- t.write("p/a.txt", "")
- return t
- def test_defaults():
- t = setup()
- # Since the default install location is outside out test area,
- # we don't want to actually execute the build.
- t.run_build_system(["-n", "-d1"])
- installdir = "C:/Test" if os.name == 'nt' else "/usr/local"
- t.expect_output_lines([
- x.replace('/', os.sep) for x in
- ["common.copy %s/bin/%s" % (installdir, t.adjust_name("a.exe")),
- "common.copy %s/lib/%s" % (installdir, t.adjust_name("b.dll")),
- "common.copy %s/lib/%s" % (installdir, t.adjust_name("b.lib")),
- "common.copy %s/include/a.h" % installdir,
- "common.copy %s/share/Test/a.txt" % installdir]])
- t.cleanup()
- def test_prefix():
- t = setup()
- # An explicit --prefix on the command should override all of these:
- t.write("project-config.jam", """
- option.set prefix : bad ;
- option.set bindir : bad/bin ;
- option.set libdir : bad/lib ;
- option.set includedir : bad/include ;
- option.set datarootdir : bad/share ;
- """)
- t.run_build_system(["--prefix=installdir"])
- t.expect_addition("installdir/bin/a.exe")
- t.expect_addition("installdir/lib/b.dll")
- t.expect_addition("installdir/lib/b.lib")
- t.expect_addition("installdir/include/a.h")
- t.expect_addition("installdir/share/Test/a.txt")
- t.cleanup()
- def test_subdirs():
- t = setup()
- # Command line options override config files
- t.write("project-config.jam", """
- option.set prefix : bad ;
- option.set bindir : bad/bin ;
- option.set libdir : bad/lib ;
- option.set includedir : bad/include ;
- option.set datarootdir : bad/share ;
- """)
- t.run_build_system(["--libdir=installdir/lib64",
- "--bindir=installdir/binx",
- "--includedir=installdir/includex",
- "--datarootdir=installdir/sharex"])
- t.expect_addition("installdir/binx/a.exe")
- t.expect_addition("installdir/lib64/b.dll")
- t.expect_addition("installdir/lib64/b.lib")
- t.expect_addition("installdir/includex/a.h")
- t.expect_addition("installdir/sharex/Test/a.txt")
- t.cleanup()
- def test_subdirs_with_prefix():
- t = setup()
- # Command line options override config files
- t.write("project-config.jam", """
- option.set prefix : bad ;
- option.set bindir : bad/bin ;
- option.set libdir : bad/lib ;
- option.set includedir : bad/include ;
- option.set datarootdir : bad/share ;
- """)
- t.run_build_system(["--prefix=bad",
- "--libdir=installdir/lib64",
- "--bindir=installdir/binx",
- "--includedir=installdir/includex",
- "--datarootdir=installdir/sharex"])
- t.expect_addition("installdir/binx/a.exe")
- t.expect_addition("installdir/lib64/b.dll")
- t.expect_addition("installdir/lib64/b.lib")
- t.expect_addition("installdir/includex/a.h")
- t.expect_addition("installdir/sharex/Test/a.txt")
- t.cleanup()
- def test_prefix_config_file():
- t = setup()
- # An explicit --prefix on the command should override all of these:
- t.write("project-config.jam", """
- option.set prefix : installdir ;
- """)
- t.run_build_system()
- t.expect_addition("installdir/bin/a.exe")
- t.expect_addition("installdir/lib/b.dll")
- t.expect_addition("installdir/lib/b.lib")
- t.expect_addition("installdir/include/a.h")
- t.expect_addition("installdir/share/Test/a.txt")
- t.cleanup()
- def test_subdirs_config_file():
- t = setup()
- # An explicit --prefix on the command should override all of these:
- t.write("project-config.jam", """
- option.set prefix : installdir ;
- option.set libdir : installdir/lib64 ;
- option.set bindir : installdir/binx ;
- option.set includedir : installdir/includex ;
- option.set datarootdir : installdir/sharex ;
- """)
- t.run_build_system()
- t.expect_addition("installdir/binx/a.exe")
- t.expect_addition("installdir/lib64/b.dll")
- t.expect_addition("installdir/lib64/b.lib")
- t.expect_addition("installdir/includex/a.h")
- t.expect_addition("installdir/sharex/Test/a.txt")
- t.cleanup()
- def test_multiple():
- '''If no prefix is specified, we might use several default
- install prefixes.'''
- t = BoostBuild.Tester(use_test_config=False)
- t.write("p/jamroot.jam", "")
- t.write("p/jamfile.jam", """\
- import package ;
- exe a : a.cpp ;
- lib b : b.cpp ;
- package.install installx TestX : <install-default-prefix>xxx
- : a
- : b/<link>static b/<link>shared
- : a.h ;
- package.install instally TestY : <install-default-prefix>yyy
- : a
- : b/<link>static b/<link>shared
- : a.h ;
- """)
- t.write("p/a.cpp", "int main() {}")
- t.write("p/b.cpp", """
- int
- #ifdef _WIN32
- __declspec(dllexport)
- #endif
- must_export_something;
- """)
- t.write("p/a.h", "")
- t.run_build_system(["p//installx", "p//instally"])
- t.expect_addition("p/xxx/bin/a.exe")
- t.expect_addition("p/xxx/lib/b.dll")
- t.expect_addition("p/xxx/lib/b.lib")
- t.expect_addition("p/xxx/include/a.h")
- t.expect_addition("p/yyy/bin/a.exe")
- t.expect_addition("p/yyy/lib/b.dll")
- t.expect_addition("p/yyy/lib/b.lib")
- t.expect_addition("p/yyy/include/a.h")
- def test_paths():
- t = BoostBuild.Tester(pass_toolset=False)
- t.write("Jamroot.jam", """\
- import package ;
- import assert ;
- import os ;
- if [ os.name ] = NT
- {
- default-prefix = "/C:/Test" ;
- }
- else
- {
- default-prefix = /usr/local ;
- }
- paths = [ package.paths Test ] ;
- assert.result $(default-prefix) : $(paths).prefix ;
- assert.result $(default-prefix)/lib : $(paths).libdir ;
- assert.result $(default-prefix)/bin : $(paths).bindir ;
- assert.result $(default-prefix)/include : $(paths).includedir ;
- assert.result $(default-prefix)/share : $(paths).datarootdir ;
- package.add-path-option bardir : bar : libdir ;
- assert.result $(default-prefix)/lib/bar : $(paths).get bardir ;
- """)
- t.run_build_system()
- t.cleanup()
- test_defaults()
- test_prefix()
- test_subdirs()
- test_subdirs_with_prefix()
- test_prefix_config_file()
- test_subdirs_config_file()
- test_multiple()
- test_paths()
|