1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
|
# Copyright 2007 Andy Tompkins.
# Copyright 2017 - 2022 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)
local WERROR =
<toolset>msvc:<warnings-as-errors>on
<toolset>gcc:<warnings-as-errors>on
<toolset>clang:<warnings-as-errors>on
;
project
: requirements
$(WERROR)
<library>/boost/uuid//boost_uuid
<library>/boost/core//boost_core
: default-build
<warnings>pedantic
;
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
path-constant HERE : . ;
rule test_headers
{
local all_rules = ;
local file ;
local headers_path = [ path.make $(HERE)/../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) ] ;
}
# ECHO All rules: $(all_rules) ;
return $(all_rules) ;
}
alias test_headers : [ test_headers ] ;
# 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 tests
run test_uuid.cpp
: : : <library>/boost/container_hash//boost_container_hash <define>BOOST_UUID_REPORT_IMPLEMENTATION ;
run test_uuid.cpp : : : <library>/boost/container_hash//boost_container_hash <define>BOOST_UUID_NO_SIMD <define>BOOST_UUID_REPORT_IMPLEMENTATION : test_uuid_no_simd ;
run test_uuid_2.cpp ;
run test_uuid_3.cpp ;
# test type properties
run test_alignment.cpp ;
run test_alignment_2.cpp ;
run test_attribute_packed.cpp
: : : -$(WERROR) ;
run test_pragma_pack.cpp ;
run test_data.cpp ;
# test comparison
run test_comparison.cpp
: : : <define>BOOST_UUID_REPORT_IMPLEMENTATION ;
run test_comparison.cpp : : : <define>BOOST_UUID_NO_SIMD <define>BOOST_UUID_REPORT_IMPLEMENTATION : test_comparison_no_simd ;
# test uuid_io.hpp
run test_io.cpp
: : : <library>/boost/lexical_cast//boost_lexical_cast <library>/boost/predef//boost_predef -$(WERROR) ;
run test_io_2.cpp ;
run test_to_chars.cpp ;
run test_to_chars_2.cpp ;
# test uuid_clock
run test_uuid_clock.cpp ;
# test generators
run test_nil_generator.cpp ;
run test_string_generator.cpp ;
run test_random_generator.cpp
: : : <library>/boost/random//boost_random <library>/boost/predef//boost_predef ;
run test_name_generator.cpp
: : : <library>/boost/predef//boost_predef ;
run test_namespaces.cpp ;
run test_name_generator_md5.cpp ;
run test_name_generator_sha1.cpp ;
lib atomic ;
run test_time_generator.cpp
: : : <toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
<toolset>gcc-4.8,<address-model>32:<build>no ;
run test_time_generator_v1.cpp
: : : <toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
<toolset>gcc-4.8,<address-model>32:<build>no ;
run test_time_generator_v1_2.cpp
: : : <toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
<toolset>gcc-4.8,<address-model>32:<build>no ;
run test_time_generator_v1_3.cpp
: : : <threading>multi
<toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
<toolset>gcc-4.8,<address-model>32:<build>no ;
run test_time_generator_v6.cpp
: : : <toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
<toolset>gcc-4.8,<address-model>32:<build>no ;
run test_time_generator_v6_2.cpp
: : : <toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
<toolset>gcc-4.8,<address-model>32:<build>no ;
run test_time_generator_v6_3.cpp
: : : <threading>multi
<toolset>gcc:<library>atomic <toolset>clang-linux:<library>atomic
<toolset>gcc-4.8,<address-model>32:<build>no ;
run test_time_generator_v7.cpp ;
run test_time_generator_v7_2.cpp ;
run test_time_generator_v7_3.cpp ;
# test serializing uuids
run test_serialization.cpp
: : : <library>/boost/serialization//boost_serialization <undefined-sanitizer>norecover:<link>static -$(WERROR) ;
# run test_wserialization.cpp /boost/serialization//boost_serialization /boost/serialization//boost_wserialization ;
# test tagging an object
run test_tagging.cpp ;
# test use cases
run test_uuid_class.cpp ;
run test_uuid_in_map.cpp ;
# test hashing support
run test_hash.cpp
: : : <library>/boost/container_hash//boost_container_hash ;
run test_hash_value.cpp ;
run test_std_unordered.cpp ;
run test_boost_unordered.cpp
: : : <toolset>gcc-4.7:<build>no <library>/boost/unordered//boost_unordered ;
# test detail components
run test_detail_md5.cpp ;
run test_detail_sha1.cpp ;
run test_detail_endian.cpp ;
run test_detail_chacha20.cpp ;
# compile-fail tests
compile-fail compile-fail/random_provider_no_copy_ctor.cpp : -$(WERROR) ;
compile-fail compile-fail/random_provider_no_copy_assign.cpp : -$(WERROR) ;
# 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 : : : <variant>release <debug-symbols>on : test_msvc_simd_bug981648 ;
# a small benchmark test for random generation
run test_bench_random.cpp /boost/timer//boost_timer : : : <toolset>clang-cloudabi:<build>no ;
# tests for the header-only random provider
run test_entropy_error.cpp ;
run test_detail_random_provider.cpp
: : : <library>/boost/array//boost_array ;
# constexpr tests
compile test_uuid_cx.cpp ;
# 'quick' test for CI
run quick.cpp ;
|