diff options
author | Brad King <brad.king@kitware.com> | 2009-11-18 15:56:40 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-11-18 15:56:40 (GMT) |
commit | 5fbefd66dcb28c3b835130ca226d041e53a62f2c (patch) | |
tree | 582fe767c16ddcacc9756815e8adf5951ed83b8c | |
parent | 77fddc1f651c1105335e9f9fea436c526257f5e2 (diff) | |
download | CMake-5fbefd66dcb28c3b835130ca226d041e53a62f2c.zip CMake-5fbefd66dcb28c3b835130ca226d041e53a62f2c.tar.gz CMake-5fbefd66dcb28c3b835130ca226d041e53a62f2c.tar.bz2 |
Fix get_filename_component(... REALPATH) work dir
The commit "Fix get_filename_component ABSOLUTE mode" broke REALPATH
treatment of relative paths because it stopped storing the absolute path
in local variable 'filename'. This commit fixes the call to GetRealPath
to use the proper local variable and adds a test.
-rw-r--r-- | Source/cmGetFilenameComponentCommand.cxx | 2 | ||||
-rw-r--r-- | Tests/CMakeTests/GetFilenameComponentRealpathTest.cmake.in | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/Source/cmGetFilenameComponentCommand.cxx b/Source/cmGetFilenameComponentCommand.cxx index 31b8336..1a31d54 100644 --- a/Source/cmGetFilenameComponentCommand.cxx +++ b/Source/cmGetFilenameComponentCommand.cxx @@ -101,7 +101,7 @@ bool cmGetFilenameComponentCommand if(args[2] == "REALPATH") { // Resolve symlinks if possible - result = cmSystemTools::GetRealPath(filename.c_str()); + result = cmSystemTools::GetRealPath(result.c_str()); } } else diff --git a/Tests/CMakeTests/GetFilenameComponentRealpathTest.cmake.in b/Tests/CMakeTests/GetFilenameComponentRealpathTest.cmake.in index c795512..7adc240 100644 --- a/Tests/CMakeTests/GetFilenameComponentRealpathTest.cmake.in +++ b/Tests/CMakeTests/GetFilenameComponentRealpathTest.cmake.in @@ -13,6 +13,21 @@ if(NOT nonexistent2 STREQUAL "${bindir}/THIS_IS_A_NONEXISTENT_FILE") endif() # +# Test treatment of relative paths +# +foreach(c REALPATH ABSOLUTE) + get_filename_component(dir "subdir/THIS_IS_A_NONEXISTENT_FILE" ${c}) + if(NOT "${dir}" STREQUAL "${bindir}/subdir/THIS_IS_A_NONEXISTENT_FILE") + message(FATAL_ERROR + "${c} does not handle relative paths. Expected:\n" + " ${bindir}/subdir/THIS_IS_A_NONEXISTENT_FILE\n" + "but got:\n" + " ${nonexistent1}\n" + ) + endif() +endforeach() + +# # Test symbolic link resolution # if(UNIX) |