diff options
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/CMakeTests/ListTest.cmake.in | 23 | ||||
-rw-r--r-- | Tests/IncludeDirectories/CMakeLists.txt | 18 | ||||
-rw-r--r-- | Tests/IncludeDirectories/main.cpp | 11 | ||||
-rw-r--r-- | Tests/RunCMake/GoogleTest/GoogleTest-skip-timeout-stdout.txt | 10 | ||||
-rw-r--r-- | Tests/RunCMake/GoogleTest/GoogleTest.cmake | 6 | ||||
-rw-r--r-- | Tests/RunCMake/GoogleTest/RunCMakeTest.cmake | 14 | ||||
-rw-r--r-- | Tests/RunCMake/GoogleTest/skip_test.cpp | 18 | ||||
-rw-r--r-- | Tests/RunCMake/exit_code.c | 3 | ||||
-rw-r--r-- | Tests/RunCMake/find_program/ExeNoRead-stdout.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/find_program/ExeNoRead.cmake | 4 | ||||
-rw-r--r-- | Tests/RunCMake/find_program/RunCMakeTest.cmake | 4 | ||||
-rw-r--r-- | Tests/RunCMake/pseudo_cppcheck.c | 3 |
12 files changed, 113 insertions, 2 deletions
diff --git a/Tests/CMakeTests/ListTest.cmake.in b/Tests/CMakeTests/ListTest.cmake.in index f517e64..785f41d 100644 --- a/Tests/CMakeTests/ListTest.cmake.in +++ b/Tests/CMakeTests/ListTest.cmake.in @@ -85,6 +85,9 @@ set(result ken bill andy brad) list(SORT result) TEST("SORT result" "andy;bill;brad;ken") +list(SORT result COMPARE NATURAL) +TEST("SORT result COMPARE NATURAL" "andy;bill;brad;ken") + set(result andy bill brad ken) list(REVERSE result) TEST("REVERSE result" "ken;brad;bill;andy") @@ -104,6 +107,26 @@ TEST("REVERSE empty result" "") list(SORT result) TEST("SORT empty result" "") +list(SORT result COMPARE NATURAL) +TEST("SORT result COMPARE NATURAL" "") + +set(result 1.1 10.0 11.0 12.0 12.1 2.0 2.1 3.0 3.1 3.2 8.0 9.0) + +list(SORT result COMPARE NATURAL) +TEST("SORT result COMPARE NATURAL" "1.1;2.0;2.1;3.0;3.1;3.2;8.0;9.0;10.0;11.0;12.0;12.1") + +list(SORT result) +TEST("SORT result" "1.1;10.0;11.0;12.0;12.1;2.0;2.1;3.0;3.1;3.2;8.0;9.0") + +list(SORT result COMPARE NATURAL ORDER DESCENDING) +TEST("SORT result COMPARE NATURAL ORDER DESCENDING" "12.1;12.0;11.0;10.0;9.0;8.0;3.2;3.1;3.0;2.1;2.0;1.1") + +set(result b-1.1 a-10.0 c-2.0 d 1 00 0) + +list(SORT result COMPARE NATURAL) +TEST("SORT result COMPARE NATURAL" "00;0;1;a-10.0;b-1.1;c-2.0;d") + + # these trigger top-level condition foreach(cmd IN ITEMS Append Find Get Insert Length Reverse Remove_At Remove_Duplicates Remove_Item Sort) set(${cmd}-No-Arguments-RESULT 1) diff --git a/Tests/IncludeDirectories/CMakeLists.txt b/Tests/IncludeDirectories/CMakeLists.txt index fa3309f..838a236 100644 --- a/Tests/IncludeDirectories/CMakeLists.txt +++ b/Tests/IncludeDirectories/CMakeLists.txt @@ -65,6 +65,24 @@ else() PROPERTIES COMPILE_FLAGS "-ITarProp") endif() +# Test escaping of special characters in include directory paths. +# FIXME: Implement full support in Makefile generators +if(NOT CMAKE_GENERATOR MATCHES "Make") + set(special_chars "~@#$%^&=[]{}()!'") + if(NOT CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008") + string(APPEND special_chars ",") + endif() + if(NOT WIN32 AND NOT CYGWIN) + string(APPEND special_chars "*?<>") + endif() + set(special_dir "${CMAKE_CURRENT_BINARY_DIR}/special-${special_chars}-include") + file(WRITE "${special_dir}/SpecialDir.h" "#define SPECIAL_DIR_H\n") + set(special_space_dir "${CMAKE_CURRENT_BINARY_DIR}/special-space ${special_chars}-include") + file(WRITE "${special_space_dir}/SpecialSpaceDir.h" "#define SPECIAL_SPACE_DIR_H\n") + target_include_directories(IncludeDirectories PRIVATE "${special_dir}" "${special_space_dir}") + target_compile_definitions(IncludeDirectories PRIVATE INCLUDE_SPECIAL_DIR) +endif() + add_library(ordertest ordertest.cpp) target_include_directories(ordertest SYSTEM PUBLIC SystemIncludeDirectories/systemlib) target_include_directories(ordertest PUBLIC SystemIncludeDirectories/userlib) diff --git a/Tests/IncludeDirectories/main.cpp b/Tests/IncludeDirectories/main.cpp index a59d27c..7368ee9 100644 --- a/Tests/IncludeDirectories/main.cpp +++ b/Tests/IncludeDirectories/main.cpp @@ -3,6 +3,17 @@ #include "SrcProp.h" #include "TarProp.h" +#ifdef INCLUDE_SPECIAL_DIR +# include "SpecialDir.h" +# ifndef SPECIAL_DIR_H +# error "SPECIAL_DIR_H not defined" +# endif +# include "SpecialSpaceDir.h" +# ifndef SPECIAL_SPACE_DIR_H +# error "SPECIAL_SPACE_DIR_H not defined" +# endif +#endif + int main(int argc, char** argv) { return 0; diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-skip-timeout-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-skip-timeout-stdout.txt new file mode 100644 index 0000000..eeecb6a --- /dev/null +++ b/Tests/RunCMake/GoogleTest/GoogleTest-skip-timeout-stdout.txt @@ -0,0 +1,10 @@ +Test project .* + Start 20: skip_test.test1 +1/1 Test #20: skip_test.test1 \.+\*\*\*Skipped +[0-9.]+ sec + +100% tests passed, 0 tests failed out of 1 + +Total Test time \(real\) = +[0-9.]+ sec + +The following tests did not run: +.*20 - skip_test\.test1 \(Skipped\) diff --git a/Tests/RunCMake/GoogleTest/GoogleTest.cmake b/Tests/RunCMake/GoogleTest/GoogleTest.cmake index 4bc6b9d..fca292a 100644 --- a/Tests/RunCMake/GoogleTest/GoogleTest.cmake +++ b/Tests/RunCMake/GoogleTest/GoogleTest.cmake @@ -49,3 +49,9 @@ gtest_discover_tests( DISCOVERY_TIMEOUT 20 PROPERTIES TIMEOUT 2 ) + +add_executable(skip_test skip_test.cpp) + +gtest_discover_tests( + skip_test +) diff --git a/Tests/RunCMake/GoogleTest/RunCMakeTest.cmake b/Tests/RunCMake/GoogleTest/RunCMakeTest.cmake index 6b9d458..efd22be 100644 --- a/Tests/RunCMake/GoogleTest/RunCMakeTest.cmake +++ b/Tests/RunCMake/GoogleTest/RunCMakeTest.cmake @@ -60,6 +60,20 @@ function(run_GoogleTest DISCOVERY_MODE) -R property_timeout\\.case_with_discovery --no-label-summary ) + + run_cmake_command(GoogleTest-build + ${CMAKE_COMMAND} + --build . + --config Debug + --target skip_test + ) + + run_cmake_command(GoogleTest-skip-test + ${CMAKE_CTEST_COMMAND} + -C Debug + -R skip_test + --no-label-summary + ) endfunction() function(run_GoogleTestXML DISCOVERY_MODE) diff --git a/Tests/RunCMake/GoogleTest/skip_test.cpp b/Tests/RunCMake/GoogleTest/skip_test.cpp new file mode 100644 index 0000000..2bc9fe1 --- /dev/null +++ b/Tests/RunCMake/GoogleTest/skip_test.cpp @@ -0,0 +1,18 @@ +#include <iostream> +#include <string> + +int main(int argc, char** argv) +{ + // Note: GoogleTest.cmake doesn't actually depend on Google Test as such; + // it only requires that we produces output in the expected format when + // invoked with --gtest_list_tests. Thus, we fake that here. This allows us + // to test the module without actually needing Google Test. + if (argc > 1 && std::string(argv[1]) == "--gtest_list_tests") { + std::cout << "skip_test." << std::endl; + std::cout << " test1" << std::endl; + return 0; + } + + std::cout << "[ SKIPPED ] skip_test.test1" << std::endl; + return 0; +} diff --git a/Tests/RunCMake/exit_code.c b/Tests/RunCMake/exit_code.c index 3eba019..9fa8eca 100644 --- a/Tests/RunCMake/exit_code.c +++ b/Tests/RunCMake/exit_code.c @@ -21,7 +21,8 @@ int main(int argc, const char* argv[]) } if (strcmp(str, substring_success) == 0) { return EXIT_SUCCESS; - } else if (strcmp(str, substring_failure) == 0) { + } + if (strcmp(str, substring_failure) == 0) { return EXIT_FAILURE; } fprintf(stderr, "Failed to find string '%s' in '%s'\n", substring_success, diff --git a/Tests/RunCMake/find_program/ExeNoRead-stdout.txt b/Tests/RunCMake/find_program/ExeNoRead-stdout.txt new file mode 100644 index 0000000..35a83f2 --- /dev/null +++ b/Tests/RunCMake/find_program/ExeNoRead-stdout.txt @@ -0,0 +1 @@ +-- ExeNoRead_EXECUTABLE='.*/Tests/RunCMake/find_program/ExeNoRead-build/ExeNoRead' diff --git a/Tests/RunCMake/find_program/ExeNoRead.cmake b/Tests/RunCMake/find_program/ExeNoRead.cmake new file mode 100644 index 0000000..7e22dc5 --- /dev/null +++ b/Tests/RunCMake/find_program/ExeNoRead.cmake @@ -0,0 +1,4 @@ +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/ExeNoRead" "#!/bin/sh\n") +execute_process(COMMAND chmod -r+x "${CMAKE_CURRENT_BINARY_DIR}/ExeNoRead") +find_program(ExeNoRead_EXECUTABLE NAMES ExeNoRead NO_DEFAULT_PATH PATHS "${CMAKE_CURRENT_BINARY_DIR}") +message(STATUS "ExeNoRead_EXECUTABLE='${ExeNoRead_EXECUTABLE}'") diff --git a/Tests/RunCMake/find_program/RunCMakeTest.cmake b/Tests/RunCMake/find_program/RunCMakeTest.cmake index 0ff9a97..95ffd84 100644 --- a/Tests/RunCMake/find_program/RunCMakeTest.cmake +++ b/Tests/RunCMake/find_program/RunCMakeTest.cmake @@ -10,3 +10,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN)$") run_cmake(WindowsCom) run_cmake(WindowsExe) endif() + +if(UNIX) + run_cmake(ExeNoRead) +endif() diff --git a/Tests/RunCMake/pseudo_cppcheck.c b/Tests/RunCMake/pseudo_cppcheck.c index 5b1531b..e80620c 100644 --- a/Tests/RunCMake/pseudo_cppcheck.c +++ b/Tests/RunCMake/pseudo_cppcheck.c @@ -11,7 +11,8 @@ int main(int argc, char* argv[]) fprintf(stdout, "stdout from bad command line arg '-bad'\n"); fprintf(stderr, "stderr from bad command line arg '-bad'\n"); return 1; - } else if (strcmp(argv[i], "-error") == 0) { + } + if (strcmp(argv[i], "-error") == 0) { // The real cppcheck allows to set the exitcode with --error-exitcode result = 5; } |