From 9596305c0b78b1589703bcd4ace1e764e27dd630 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 26 Jan 2023 16:52:22 -0500 Subject: Tests: Generalize RunCMake.Ninja ShowIncludes test infrastructure Prepare to add support for more languages. --- Tests/RunCMake/Ninja/RunCMakeTest.cmake | 4 +-- .../Ninja/ShowIncludes-54936-Chinese-check.cmake | 3 ++ .../Ninja/ShowIncludes-54936-Chinese-stdout.txt | 1 + .../Ninja/ShowIncludes-54936-Chinese.cmake | 3 ++ .../RunCMake/Ninja/ShowIncludes-54936-check.cmake | 3 -- Tests/RunCMake/Ninja/ShowIncludes-54936-stdout.txt | 1 - Tests/RunCMake/Ninja/ShowIncludes-54936.cmake | 2 -- .../Ninja/ShowIncludes-65001-Chinese-check.cmake | 3 ++ .../Ninja/ShowIncludes-65001-Chinese-stdout.txt | 1 + .../Ninja/ShowIncludes-65001-Chinese.cmake | 3 ++ .../RunCMake/Ninja/ShowIncludes-65001-check.cmake | 3 -- Tests/RunCMake/Ninja/ShowIncludes-65001-stdout.txt | 1 - Tests/RunCMake/Ninja/ShowIncludes-65001.cmake | 2 -- Tests/RunCMake/Ninja/ShowIncludes-cmake.cmake | 4 +++ Tests/RunCMake/Ninja/ShowIncludes.cmake | 2 +- Tests/RunCMake/showIncludes.c | 38 +++++++++++++++------- 16 files changed, 47 insertions(+), 27 deletions(-) create mode 100644 Tests/RunCMake/Ninja/ShowIncludes-54936-Chinese-check.cmake create mode 100644 Tests/RunCMake/Ninja/ShowIncludes-54936-Chinese-stdout.txt create mode 100644 Tests/RunCMake/Ninja/ShowIncludes-54936-Chinese.cmake delete mode 100644 Tests/RunCMake/Ninja/ShowIncludes-54936-check.cmake delete mode 100644 Tests/RunCMake/Ninja/ShowIncludes-54936-stdout.txt delete mode 100644 Tests/RunCMake/Ninja/ShowIncludes-54936.cmake create mode 100644 Tests/RunCMake/Ninja/ShowIncludes-65001-Chinese-check.cmake create mode 100644 Tests/RunCMake/Ninja/ShowIncludes-65001-Chinese-stdout.txt create mode 100644 Tests/RunCMake/Ninja/ShowIncludes-65001-Chinese.cmake delete mode 100644 Tests/RunCMake/Ninja/ShowIncludes-65001-check.cmake delete mode 100644 Tests/RunCMake/Ninja/ShowIncludes-65001-stdout.txt delete mode 100644 Tests/RunCMake/Ninja/ShowIncludes-65001.cmake diff --git a/Tests/RunCMake/Ninja/RunCMakeTest.cmake b/Tests/RunCMake/Ninja/RunCMakeTest.cmake index b94466c..73a9d15 100644 --- a/Tests/RunCMake/Ninja/RunCMakeTest.cmake +++ b/Tests/RunCMake/Ninja/RunCMakeTest.cmake @@ -46,8 +46,8 @@ if(WIN32) if(RunCMake_MAKE_PROGRAM) set(maybe_MAKE_PROGRAM "-DRunCMake_MAKE_PROGRAM=${RunCMake_MAKE_PROGRAM}") endif() - run_cmake_script(ShowIncludes-54936 -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) - run_cmake_script(ShowIncludes-65001 -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) + run_cmake_script(ShowIncludes-54936-Chinese -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) + run_cmake_script(ShowIncludes-65001-Chinese -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) unset(maybe_MAKE_PROGRAM) endif() diff --git a/Tests/RunCMake/Ninja/ShowIncludes-54936-Chinese-check.cmake b/Tests/RunCMake/Ninja/ShowIncludes-54936-Chinese-check.cmake new file mode 100644 index 0000000..c5744b7 --- /dev/null +++ b/Tests/RunCMake/Ninja/ShowIncludes-54936-Chinese-check.cmake @@ -0,0 +1,3 @@ +# 'cl /showIncludes' prefix with 'VSLANG=2052' and 'chcp 54936'. +string(ASCII 215 162 210 226 58 32 176 252 186 172 206 196 188 254 58 32 32 expect) +include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes-check.cmake) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-54936-Chinese-stdout.txt b/Tests/RunCMake/Ninja/ShowIncludes-54936-Chinese-stdout.txt new file mode 100644 index 0000000..b9ac962 --- /dev/null +++ b/Tests/RunCMake/Ninja/ShowIncludes-54936-Chinese-stdout.txt @@ -0,0 +1 @@ +-- showIncludes='注意: 包含文件: ' diff --git a/Tests/RunCMake/Ninja/ShowIncludes-54936-Chinese.cmake b/Tests/RunCMake/Ninja/ShowIncludes-54936-Chinese.cmake new file mode 100644 index 0000000..77a4014 --- /dev/null +++ b/Tests/RunCMake/Ninja/ShowIncludes-54936-Chinese.cmake @@ -0,0 +1,3 @@ +set(CODEPAGE 54936) +set(VSLANG 2052) +include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes.cmake) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-54936-check.cmake b/Tests/RunCMake/Ninja/ShowIncludes-54936-check.cmake deleted file mode 100644 index c5744b7..0000000 --- a/Tests/RunCMake/Ninja/ShowIncludes-54936-check.cmake +++ /dev/null @@ -1,3 +0,0 @@ -# 'cl /showIncludes' prefix with 'VSLANG=2052' and 'chcp 54936'. -string(ASCII 215 162 210 226 58 32 176 252 186 172 206 196 188 254 58 32 32 expect) -include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes-check.cmake) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-54936-stdout.txt b/Tests/RunCMake/Ninja/ShowIncludes-54936-stdout.txt deleted file mode 100644 index b9ac962..0000000 --- a/Tests/RunCMake/Ninja/ShowIncludes-54936-stdout.txt +++ /dev/null @@ -1 +0,0 @@ --- showIncludes='注意: 包含文件: ' diff --git a/Tests/RunCMake/Ninja/ShowIncludes-54936.cmake b/Tests/RunCMake/Ninja/ShowIncludes-54936.cmake deleted file mode 100644 index 07b4192..0000000 --- a/Tests/RunCMake/Ninja/ShowIncludes-54936.cmake +++ /dev/null @@ -1,2 +0,0 @@ -set(CODEPAGE 54936) -include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes.cmake) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-65001-Chinese-check.cmake b/Tests/RunCMake/Ninja/ShowIncludes-65001-Chinese-check.cmake new file mode 100644 index 0000000..6f61d3c --- /dev/null +++ b/Tests/RunCMake/Ninja/ShowIncludes-65001-Chinese-check.cmake @@ -0,0 +1,3 @@ +# 'cl /showIncludes' prefix with 'VSLANG=2052' and 'chcp 65001'. +string(ASCII 230 179 168 230 132 143 58 32 229 140 133 229 144 171 230 150 135 228 187 182 58 32 32 expect) +include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes-check.cmake) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-65001-Chinese-stdout.txt b/Tests/RunCMake/Ninja/ShowIncludes-65001-Chinese-stdout.txt new file mode 100644 index 0000000..b9ac962 --- /dev/null +++ b/Tests/RunCMake/Ninja/ShowIncludes-65001-Chinese-stdout.txt @@ -0,0 +1 @@ +-- showIncludes='注意: 包含文件: ' diff --git a/Tests/RunCMake/Ninja/ShowIncludes-65001-Chinese.cmake b/Tests/RunCMake/Ninja/ShowIncludes-65001-Chinese.cmake new file mode 100644 index 0000000..0e61c4a --- /dev/null +++ b/Tests/RunCMake/Ninja/ShowIncludes-65001-Chinese.cmake @@ -0,0 +1,3 @@ +set(CODEPAGE 65001) +set(VSLANG 2052) +include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes.cmake) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-65001-check.cmake b/Tests/RunCMake/Ninja/ShowIncludes-65001-check.cmake deleted file mode 100644 index 6f61d3c..0000000 --- a/Tests/RunCMake/Ninja/ShowIncludes-65001-check.cmake +++ /dev/null @@ -1,3 +0,0 @@ -# 'cl /showIncludes' prefix with 'VSLANG=2052' and 'chcp 65001'. -string(ASCII 230 179 168 230 132 143 58 32 229 140 133 229 144 171 230 150 135 228 187 182 58 32 32 expect) -include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes-check.cmake) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-65001-stdout.txt b/Tests/RunCMake/Ninja/ShowIncludes-65001-stdout.txt deleted file mode 100644 index b9ac962..0000000 --- a/Tests/RunCMake/Ninja/ShowIncludes-65001-stdout.txt +++ /dev/null @@ -1 +0,0 @@ --- showIncludes='注意: 包含文件: ' diff --git a/Tests/RunCMake/Ninja/ShowIncludes-65001.cmake b/Tests/RunCMake/Ninja/ShowIncludes-65001.cmake deleted file mode 100644 index 0eebd61..0000000 --- a/Tests/RunCMake/Ninja/ShowIncludes-65001.cmake +++ /dev/null @@ -1,2 +0,0 @@ -set(CODEPAGE 65001) -include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes.cmake) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-cmake.cmake b/Tests/RunCMake/Ninja/ShowIncludes-cmake.cmake index 672a89f..5ed9970 100644 --- a/Tests/RunCMake/Ninja/ShowIncludes-cmake.cmake +++ b/Tests/RunCMake/Ninja/ShowIncludes-cmake.cmake @@ -1,6 +1,10 @@ # Set the console code page. execute_process(COMMAND cmd /c chcp "${CODEPAGE}") +if(VSLANG) + set(ENV{VSLANG} "${VSLANG}") +endif() + if(RunCMake_MAKE_PROGRAM) set(maybe_MAKE_PROGRAM "-DCMAKE_MAKE_PROGRAM=${RunCMake_MAKE_PROGRAM}") endif() diff --git a/Tests/RunCMake/Ninja/ShowIncludes.cmake b/Tests/RunCMake/Ninja/ShowIncludes.cmake index b9f89fe..a75c9bc 100644 --- a/Tests/RunCMake/Ninja/ShowIncludes.cmake +++ b/Tests/RunCMake/Ninja/ShowIncludes.cmake @@ -15,7 +15,7 @@ endif() # Run cmake in a new Window to isolate its console code page. execute_process(COMMAND cmd /c start /min /wait "" - ${CMAKE_COMMAND} -DCODEPAGE=${CODEPAGE} ${maybe_MAKE_PROGRAM} -P ${CMAKE_CURRENT_LIST_DIR}/ShowIncludes-cmake.cmake) + ${CMAKE_COMMAND} -DCODEPAGE=${CODEPAGE} -DVSLANG=${VSLANG} ${maybe_MAKE_PROGRAM} -P ${CMAKE_CURRENT_LIST_DIR}/ShowIncludes-cmake.cmake) # Print our internal UTF-8 representation of the showIncludes prefix. file(READ "${CMAKE_CURRENT_BINARY_DIR}/showIncludes.txt" showIncludes_txt) diff --git a/Tests/RunCMake/showIncludes.c b/Tests/RunCMake/showIncludes.c index 82b1416..922254d 100644 --- a/Tests/RunCMake/showIncludes.c +++ b/Tests/RunCMake/showIncludes.c @@ -1,33 +1,47 @@ +#ifndef _CRT_SECURE_NO_WARNINGS +# define _CRT_SECURE_NO_WARNINGS +#endif + #if defined(_MSC_VER) && _MSC_VER >= 1928 # pragma warning(disable : 5105) /* macro expansion warning in windows.h */ #endif #include #include +#include int main() { /* 'cl /showIncludes' encodes output in the console output code page. */ unsigned int cp = GetConsoleOutputCP(); + + /* 'cl /showIncludes' prints output in the VS language. */ + const char* vslang = getenv("VSLANG"); + if (!vslang) { + fprintf(stderr, "VSLANG is not set.\n"); + return 1; + } + printf("Console output code page: %u\n", cp); printf("Console input code page: %u\n", GetConsoleCP()); printf("ANSI code page: %u\n", GetACP()); printf("OEM code page: %u\n", GetOEMCP()); + printf("VSLANG: %s\n", vslang); - if (cp == 54936 || cp == 936) { - /* VSLANG=2052 */ - printf("\xd7\xa2\xd2\xe2: " - "\xb0\xfc\xba\xac\xce\xc4\xbc\xfe: C:\\foo.h\n"); - return 0; - } + if (strcmp(vslang, "2052") == 0) { + if (cp == 54936 || cp == 936) { + printf("\xd7\xa2\xd2\xe2: " + "\xb0\xfc\xba\xac\xce\xc4\xbc\xfe: C:\\foo.h\n"); + return 0; + } - if (cp == 65001) { - /* VSLANG=2052 */ - printf("\xe6\xb3\xa8\xe6\x84\x8f: " - "\xe5\x8c\x85\xe5\x90\xab\xe6\x96\x87\xe4\xbb\xb6: C:\\foo.h\n"); - return 0; + if (cp == 65001) { + printf("\xe6\xb3\xa8\xe6\x84\x8f: " + "\xe5\x8c\x85\xe5\x90\xab\xe6\x96\x87\xe4\xbb\xb6: C:\\foo.h\n"); + return 0; + } } - fprintf(stderr, "No example showIncludes for console's output code page.\n"); + fprintf(stderr, "No example showIncludes for this code page and VSLANG.\n"); return 1; } -- cgit v0.12