diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
commit | 483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch) | |
tree | e5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/boost/libs/uuid/test/Jamfile.v2 | |
parent | Initial commit. (diff) | |
download | ceph-483eb2f56657e8e7f419ab1a4fab8dce9ade8609.tar.xz ceph-483eb2f56657e8e7f419ab1a4fab8dce9ade8609.zip |
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/uuid/test/Jamfile.v2')
-rw-r--r-- | src/boost/libs/uuid/test/Jamfile.v2 | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/src/boost/libs/uuid/test/Jamfile.v2 b/src/boost/libs/uuid/test/Jamfile.v2 new file mode 100644 index 00000000..f96ca14f --- /dev/null +++ b/src/boost/libs/uuid/test/Jamfile.v2 @@ -0,0 +1,219 @@ +# Copyright 2007 Andy Tompkins. +# Copyright 2017 - 2018 James E. King III +# Distributed under the Boost Software License, Version 1.0. (See +# accompanying file LICENSE_1_0.txt or copy at +# https://www.boost.org/LICENSE_1_0.txt) + +lib bcrypt ; + +project libs/uuid/test + : requirements + + # boost.jam defines BOOST_ALL_NO_LIB, this makes library management + # near-impossible with the platform selection logic in the random_provider + <target-os>windows:<define>BOOST_UUID_FORCE_AUTO_LINK + <target-os>windows,<toolset>gcc:<library>bcrypt + + # boost::lexical_cast needs this for a warning-free build (CHAR_MAX) + <toolset>clang:<cxxflags>-Wno-c99-extensions + + # boost::random needs this setting for a warning free build: + <toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS + + # link static for easier debugging + <link>static + +; + +import os ; +import path ; +import regex ; +import testing ; + +# this rule enumerates through all the headers and ensures +# that inclusion of the header by itself is sufficient to +# compile successfully, proving the header does not depend +# on any other headers to be included first - adapted from +# logic in the winapi test bjam script +rule test_all +{ + local all_rules = ; + local file ; + local headers_path = [ path.make $(BOOST_ROOT)/libs/uuid/include/boost/uuid ] ; + for file in [ path.glob-tree $(headers_path) : *.hpp : uuid ] + { + local rel_file = [ path.relative-to $(headers_path) $(file) ] ; + # Note: The test name starts with '~' in order to group these tests in the test report table, preferably at the end. + # All '/' are replaced with '-' because apparently test scripts have a problem with test names containing slashes. + local test_name = [ regex.replace $(rel_file) "/" "-" ] ; + local decl_test_name = ~hdr-decl-$(test_name) ; + # ECHO $(rel_file) ; + all_rules += [ compile compile/decl_header.cpp : <define>"BOOST_UUID_TEST_HEADER=$(rel_file)" <dependency>$(file) : $(decl_test_name) ] ; + } + + local tests_path = [ path.make $(BOOST_ROOT)/libs/uuid/test/compile-fail ] ; + for file in [ path.glob-tree $(tests_path) : *.cpp ] + { + local rel_file = [ path.relative-to $(tests_path) $(file) ] ; + local test_name = [ regex.replace [ regex.replace $(rel_file) "/" "-" ] ".cpp" "" ] ; + local decl_test_name = cf-$(test_name) ; + # ECHO $(rel_file) ; + all_rules += [ compile-fail $(file) : : $(decl_test_name) ] ; + } + + # make sure compile time options work in isolation + all_rules += [ compile compile/decl_header.cpp : + <define>"BOOST_UUID_TEST_HEADER=uuid.hpp" + <define>"BOOST_UUID_NO_TYPE_TRAITS" + <dependency>$(BOOST_ROOT)/boost/uuid/uuid.hpp : + compile_uuid_no_type_traits ] ; + all_rules += [ compile compile/decl_header.cpp : + <define>"BOOST_UUID_TEST_HEADER=uuid.hpp" + <define>"BOOST_UUID_NO_SIMD" + <dependency>$(BOOST_ROOT)/boost/uuid/uuid.hpp : + compile_uuid_no_simd ] ; + + # ECHO All rules: $(all_rules) ; + return $(all_rules) ; +} + +# disabled in UBSAN builds due to issues in Boost.Serialization +if ! [ os.environ UBSAN_OPTIONS ] +{ +test-suite uuid-serialization : + # test serializing uuids + [ run test_serialization.cpp ../../serialization/build//boost_serialization ] + + # TODO - This test fails to like with boost_wserialization + # [ run test_wserialization.cpp + # ../../serialization/build//boost_serialization + # ../../serialization/build//boost_wserialization + # : : : <dependency>../../config/test/all//BOOST_NO_STD_WSTREAMBUF + # ] + ; +} + +test-suite uuid : + [ test_all ] + + # test inclucing all .hpp files in 2 translations units + # to look for issues when using multiple translation units + # eg. missing inline on a global functionstate is not missing + [ run test_include1.cpp test_include2.cpp ] + + # main test + [ run test_uuid.cpp ] + [ run test_uuid_no_simd.cpp ] + + # test uuid_io.hpp + [ run test_io.cpp ] + + # test generators + [ run test_nil_generator.cpp ] + [ run test_name_generator.cpp ] + [ run test_name_generator.cpp : : : <define>BOOST_UUID_COMPAT_PRE_1_71_MD5 : test_name_generator_pre_1_71_compat ] + [ run test_string_generator.cpp ] + [ run test_random_generator.cpp ] + + # test tagging an object + [ run test_tagging.cpp ] + + # test use cases + [ run test_uuid_class.cpp ] + [ run test_uuid_in_map.cpp ] + + # test hash functions + [ run test_hash.cpp ] + [ run test_md5.cpp ] + [ run test_md5.cpp : : : <define>BOOST_UUID_COMPAT_PRE_1_71_MD5 : test_md5_pre_1_71_compat ] + [ run test_sha1.cpp ] + + # test MSVC 12 (VS2013) optimizer bug with SIMD operations. + # See https://svn.boost.org/trac/boost/ticket/8509#comment:3 + # Only happens in Release x64 builds. + [ run test_msvc_simd_bug981648_main.cpp + test_msvc_simd_bug981648_foo.cpp + : : : <build>no <toolset>msvc-12.0:<build>yes <variant>release <debug-symbols>on : test_msvc_simd_bug981648 ] + + # a small benchmark test for random generation + [ run test_bench_random.cpp ../../timer/build//boost_timer : : : <toolset>clang-cloudabi:<build>no ] + + [ run test_entropy_error.cpp ] + + # tests for the header-only random provider + # there are a number of variations to test all compile-time branches + # and to make sure we test all the error handling code paths + [ run test_detail_random_provider.cpp + : : : + <define>_WIN32_WINNT=0x0600 # will force bcrypt over wincrypt (on windows) + : test_detail_random_provider_happy ] + + [ run test_detail_random_provider.cpp + : : : + <define>BOOST_UUID_RANDOM_PROVIDER_NO_LIB # disable any auto-linking + <define>BOOST_UUID_TEST_RANDOM_MOCK # mock default provider to force error path testing + <define>_WIN32_WINNT=0x0600 # will force bcrypt over wincrypt (on windows) + : + test_detail_random_provider_sad ] + + # CI builds in appveyor normally select the bcrypt provider, so + # force wincrypt to be selected and test both happy and sad paths: + [ lib mock_random + : mock_random.cpp + : <link>shared + <build>no # do not build on any target-os + <target-os>windows:<build>yes ] # except for windows + + [ run test_detail_random_provider.cpp + : : : + <define>_WIN32_WINNT=0x0501 # will force wincrypt over bcrypt + <build>no # do not build on any target-os + <target-os>windows:<build>yes # except for windows + : test_detail_random_provider_happy_wincrypt ] + + [ run test_detail_random_provider.cpp + mock_random + : : : + <define>_WIN32_WINNT=0x0501 # will force wincrypt over bcrypt + <define>BOOST_UUID_RANDOM_PROVIDER_NO_LIB # disable any auto-linking + <define>BOOST_UUID_TEST_RANDOM_MOCK # mock wincrypt to force error path testing + <build>no # do not build on any target-os + <target-os>windows:<build>yes # except for windows + : test_detail_random_provider_sad_wincrypt ] + + # CI builds in travis will eventually select getrandom/getentropy when they move + # to a version of ubuntu with glibc-2.25 on it, so when that happens keep + # testing the posix provider: + [ run test_detail_random_provider.cpp + : : : + <define>BOOST_UUID_RANDOM_PROVIDER_FORCE_POSIX # will force POSIX over getrandom/getentropy + <target-os>windows:<build>no # do not bother running on windows + <toolset>clang-cloudabi:<build>no # no need to build under cloudabi + : test_detail_random_provider_happy_posix ] + + [ run test_detail_random_provider.cpp + : : : + <define>BOOST_UUID_RANDOM_PROVIDER_FORCE_POSIX # will force POSIX over getrandom/getentropy + <define>BOOST_UUID_TEST_RANDOM_MOCK # redirect code to use mock system calls + <target-os>windows:<build>no # do not bother running on windows + <toolset>clang-cloudabi:<build>no # no need to build under cloudabi + : test_detail_random_provider_sad_posix ] + + # Force running tests for getentropy despite it's not going to be used on Linux. getentropy + # may be used on systems other than Linux, which are not part of the CI testers pool. + [ run test_detail_random_provider.cpp + : : : + <define>BOOST_UUID_RANDOM_PROVIDER_DISABLE_GETRANDOM # will force getentropy over getrandom + <build>no + <target-os>linux:<build>yes # build only on linux (or any other systems that support getentropy) + : test_detail_random_provider_happy_getentropy ] + + [ run test_detail_random_provider.cpp + : : : + <define>BOOST_UUID_RANDOM_PROVIDER_DISABLE_GETRANDOM # will force getentropy over getrandom + <define>BOOST_UUID_TEST_RANDOM_MOCK # redirect code to use mock system calls + <build>no + <target-os>linux:<build>yes # build only on linux (or any other systems that support getentropy) + : test_detail_random_provider_sad_getentropy ] + + ; |