# Boost Filesystem Library test Jamfile # (C) Copyright Beman Dawes 2002-2006 # (C) Copyright Andrey Semashev 2020 # Distributed under the Boost Software License, Version 1.0. # See www.boost.org/LICENSE_1_0.txt import testing ; import os ; # The rule checks we're running on Windows that supports mklink command (Vista and later) rule check-mklink ( properties * ) { local result ; if windows in $(properties) { # mklink is a builtin shell command, so we can't check if an executable exists. # Testing the exit status of the mklink command (in the hope that it will be different # when the command is not supported) is inconclusive as for some reason Windows 8.1 shell # always returns exit code of 1. We have to match the output of the command. :( # Note that the output may be localized, so pick some part that is likely to be stable regardless # of localization. local output = [ SHELL "mklink /?" : exit-status ] ; if [ MATCH (MKLINK) : $(output[1]) ] { result = BOOST_FILESYSTEM_HAS_MKLINK ; } } #ECHO Result: $(result) ; return $(result) ; } project : requirements /boost/filesystem//boost_filesystem @check-mklink ; # Some tests are run both statically and as shared libraries since Filesystem # has a history of bugs that appear only in one type of build or the other. path-constant HERE : . ; local VIS ; if [ os.environ UBSAN ] { VIS = global -/boost/filesystem//boost_filesystem /boost/filesystem//boost_filesystem/global ; } run config_info.cpp : : : shared always_show_run_output ; run config_info.cpp : : : static always_show_run_output : config_info_static ; run convenience_test.cpp ; compile macro_default_test.cpp ; run odr1_test.cpp odr2_test.cpp ; run deprecated_test.cpp ; run fstream_test.cpp : : : $(VIS) ; run large_file_support_test.cpp ; run locale_info.cpp : : : always_show_run_output ; run operations_test.cpp : : : shared always_show_run_output ; run operations_test.cpp : : : static : operations_test_static ; run operations_unit_test.cpp : $(HERE) : : shared always_show_run_output ; run copy_test.cpp ; run path_test.cpp : : : shared ; run path_test.cpp : : : static : path_test_static ; run path_unit_test.cpp : : : shared $(VIS) ; run path_unit_test.cpp : : : static $(VIS) : path_unit_test_static ; run relative_test.cpp ; run ../example/simple_ls.cpp ; run ../example/file_status.cpp ; run foreach_test.cpp ; # `quick` target (for CI) run quick.cpp ; # Tests for specific issues run issues/70-71-copy.cpp ; run issues/99_canonical_with_junction_point.cpp ; run issues/reparse_tag_file_placeholder.cpp ;