mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-24 20:29:39 +08:00
Allow the libc++ build/source paths to contain symlinks.
The filesystem tests were expecting the paths to the build/source directories did not contain any symlinks. This patch resolves those symlinks before running the test suite. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273323 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -439,11 +439,13 @@ class Configuration(object):
|
|||||||
self.config.available_features.add('c++filesystem')
|
self.config.available_features.add('c++filesystem')
|
||||||
static_env = os.path.join(self.libcxx_src_root, 'test', 'std',
|
static_env = os.path.join(self.libcxx_src_root, 'test', 'std',
|
||||||
'experimental', 'filesystem', 'Inputs', 'static_test_env')
|
'experimental', 'filesystem', 'Inputs', 'static_test_env')
|
||||||
|
static_env = os.path.realpath(static_env)
|
||||||
assert os.path.isdir(static_env)
|
assert os.path.isdir(static_env)
|
||||||
self.cxx.compile_flags += ['-DLIBCXX_FILESYSTEM_STATIC_TEST_ROOT="%s"' % static_env]
|
self.cxx.compile_flags += ['-DLIBCXX_FILESYSTEM_STATIC_TEST_ROOT="%s"' % static_env]
|
||||||
|
|
||||||
dynamic_env = os.path.join(self.libcxx_obj_root, 'test',
|
dynamic_env = os.path.join(self.libcxx_obj_root, 'test',
|
||||||
'filesystem', 'Output', 'dynamic_env')
|
'filesystem', 'Output', 'dynamic_env')
|
||||||
|
dynamic_env = os.path.realpath(dynamic_env)
|
||||||
if not os.path.isdir(dynamic_env):
|
if not os.path.isdir(dynamic_env):
|
||||||
os.makedirs(dynamic_env)
|
os.makedirs(dynamic_env)
|
||||||
self.cxx.compile_flags += ['-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT="%s"' % dynamic_env]
|
self.cxx.compile_flags += ['-DLIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT="%s"' % dynamic_env]
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ namespace fs = std::experimental::filesystem;
|
|||||||
namespace StaticEnv {
|
namespace StaticEnv {
|
||||||
|
|
||||||
inline fs::path makePath(fs::path const& p) {
|
inline fs::path makePath(fs::path const& p) {
|
||||||
|
// env_path is expected not to contain symlinks.
|
||||||
static const fs::path env_path = LIBCXX_FILESYSTEM_STATIC_TEST_ROOT;
|
static const fs::path env_path = LIBCXX_FILESYSTEM_STATIC_TEST_ROOT;
|
||||||
return env_path / p;
|
return env_path / p;
|
||||||
}
|
}
|
||||||
@@ -236,6 +237,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool checkDynamicTestRoot() {
|
static bool checkDynamicTestRoot() {
|
||||||
|
// LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT is expected not to contain symlinks.
|
||||||
char* fs_root = std::getenv("LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT");
|
char* fs_root = std::getenv("LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT");
|
||||||
if (!fs_root) {
|
if (!fs_root) {
|
||||||
std::printf("ERROR: LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT must be a defined "
|
std::printf("ERROR: LIBCXX_FILESYSTEM_DYNAMIC_TEST_ROOT must be a defined "
|
||||||
|
|||||||
Reference in New Issue
Block a user