Encoding: Modify tests to work using non-ascii paths.
For complex*, CustomCommand and OutDir tests, non-ascii paths are avoided in test code by using relative paths, and setting the working when running the test. This also avoids the need to internationalize the test code. For RunCMake.GeneratorExpression, use a UTF-8 encoding in file(STRINGS) to retrieve the compiled absolute path correctly.
This commit is contained in:
parent
7ecbade887
commit
9a8ab86645
|
@ -89,18 +89,22 @@ remove_definitions(-DCOMPLEX_DEFINED)
|
||||||
# Test pre-build/pre-link/post-build rules for an executable.
|
# Test pre-build/pre-link/post-build rules for an executable.
|
||||||
add_custom_command(TARGET complex PRE_BUILD
|
add_custom_command(TARGET complex PRE_BUILD
|
||||||
COMMAND ${CREATE_FILE_EXE}
|
COMMAND ${CREATE_FILE_EXE}
|
||||||
ARGS "${Complex_BINARY_DIR}/Executable/prebuild.txt")
|
ARGS "Executable/prebuild.txt"
|
||||||
|
WORKING_DIRECTORY "${Complex_BINARY_DIR}")
|
||||||
add_custom_command(TARGET complex PRE_LINK
|
add_custom_command(TARGET complex PRE_LINK
|
||||||
COMMAND ${CREATE_FILE_EXE}
|
COMMAND ${CREATE_FILE_EXE}
|
||||||
ARGS "${Complex_BINARY_DIR}/Executable/prelink.txt")
|
ARGS "Executable/prelink.txt"
|
||||||
|
WORKING_DIRECTORY "${Complex_BINARY_DIR}")
|
||||||
add_custom_command(TARGET complex POST_BUILD
|
add_custom_command(TARGET complex POST_BUILD
|
||||||
COMMAND ${CREATE_FILE_EXE}
|
COMMAND ${CREATE_FILE_EXE}
|
||||||
ARGS "${Complex_BINARY_DIR}/Executable/postbuild.txt")
|
ARGS "Executable/postbuild.txt"
|
||||||
|
WORKING_DIRECTORY "${Complex_BINARY_DIR}")
|
||||||
add_custom_command(TARGET complex POST_BUILD
|
add_custom_command(TARGET complex POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND}
|
COMMAND ${CMAKE_COMMAND}
|
||||||
ARGS -E copy
|
ARGS -E copy
|
||||||
"${Complex_BINARY_DIR}/Executable/postbuild.txt"
|
"Executable/postbuild.txt"
|
||||||
"${Complex_BINARY_DIR}/Executable/postbuild2.txt")
|
"Executable/postbuild2.txt"
|
||||||
|
WORKING_DIRECTORY "${Complex_BINARY_DIR}")
|
||||||
|
|
||||||
set_source_files_properties(complex
|
set_source_files_properties(complex
|
||||||
COMPILE_FLAGS
|
COMPILE_FLAGS
|
||||||
|
|
|
@ -716,14 +716,14 @@ int main()
|
||||||
// the file was removed the last time 'complex' was run, and it is
|
// the file was removed the last time 'complex' was run, and it is
|
||||||
// only created during a build.
|
// only created during a build.
|
||||||
|
|
||||||
TestAndRemoveFile(BINARY_DIR "/Library/prebuild.txt");
|
TestAndRemoveFile("Library/prebuild.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Library/prelink.txt");
|
TestAndRemoveFile("Library/prelink.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Library/postbuild.txt");
|
TestAndRemoveFile("Library/postbuild.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Library/postbuild2.txt");
|
TestAndRemoveFile("Library/postbuild2.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Executable/prebuild.txt");
|
TestAndRemoveFile("Executable/prebuild.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Executable/prelink.txt");
|
TestAndRemoveFile("Executable/prelink.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Executable/postbuild.txt");
|
TestAndRemoveFile("Executable/postbuild.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Executable/postbuild2.txt");
|
TestAndRemoveFile("Executable/postbuild2.txt");
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// A custom target has been created (see Library/).
|
// A custom target has been created (see Library/).
|
||||||
|
@ -733,12 +733,12 @@ int main()
|
||||||
// the file was removed the last time 'complex' was run, and it is
|
// the file was removed the last time 'complex' was run, and it is
|
||||||
// only created during a build.
|
// only created during a build.
|
||||||
|
|
||||||
TestAndRemoveFile(BINARY_DIR "/Library/custom_target1.txt");
|
TestAndRemoveFile("Library/custom_target1.txt");
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// A directory has been created.
|
// A directory has been created.
|
||||||
|
|
||||||
TestDir(BINARY_DIR "/make_dir");
|
TestDir("make_dir");
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// Test OUTPUT_REQUIRED_FILES
|
// Test OUTPUT_REQUIRED_FILES
|
||||||
|
@ -749,7 +749,7 @@ int main()
|
||||||
// the file was removed the last time 'complex' was run, and it is
|
// the file was removed the last time 'complex' was run, and it is
|
||||||
// only created during a build.
|
// only created during a build.
|
||||||
|
|
||||||
TestAndRemoveFile(BINARY_DIR "/Executable/Temp/complex-required.txt");
|
TestAndRemoveFile("Executable/Temp/complex-required.txt");
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// Test FIND_LIBRARY
|
// Test FIND_LIBRARY
|
||||||
|
|
|
@ -89,18 +89,22 @@ remove_definitions(-DCOMPLEX_DEFINED)
|
||||||
# Test pre-build/pre-link/post-build rules for an executable.
|
# Test pre-build/pre-link/post-build rules for an executable.
|
||||||
add_custom_command(TARGET complex PRE_BUILD
|
add_custom_command(TARGET complex PRE_BUILD
|
||||||
COMMAND ${CREATE_FILE_EXE}
|
COMMAND ${CREATE_FILE_EXE}
|
||||||
ARGS "${Complex_BINARY_DIR}/Executable/prebuild.txt")
|
ARGS "Executable/prebuild.txt"
|
||||||
|
WORKING_DIRECTORY "${Complex_BINARY_DIR}")
|
||||||
add_custom_command(TARGET complex PRE_BUILD
|
add_custom_command(TARGET complex PRE_BUILD
|
||||||
COMMAND ${CREATE_FILE_EXE}
|
COMMAND ${CREATE_FILE_EXE}
|
||||||
ARGS "${Complex_BINARY_DIR}/Executable/prelink.txt")
|
ARGS "Executable/prelink.txt"
|
||||||
|
WORKING_DIRECTORY "${Complex_BINARY_DIR}")
|
||||||
add_custom_command(TARGET complex POST_BUILD
|
add_custom_command(TARGET complex POST_BUILD
|
||||||
COMMAND ${CREATE_FILE_EXE}
|
COMMAND ${CREATE_FILE_EXE}
|
||||||
ARGS "${Complex_BINARY_DIR}/Executable/postbuild.txt")
|
ARGS "Executable/postbuild.txt"
|
||||||
|
WORKING_DIRECTORY "${Complex_BINARY_DIR}")
|
||||||
add_custom_command(TARGET complex POST_BUILD
|
add_custom_command(TARGET complex POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND}
|
COMMAND ${CMAKE_COMMAND}
|
||||||
ARGS -E copy
|
ARGS -E copy
|
||||||
"${Complex_BINARY_DIR}/Executable/postbuild.txt"
|
"Executable/postbuild.txt"
|
||||||
"${Complex_BINARY_DIR}/Executable/postbuild2.txt")
|
"Executable/postbuild2.txt"
|
||||||
|
WORKING_DIRECTORY "${Complex_BINARY_DIR}")
|
||||||
|
|
||||||
set_source_files_properties(complex
|
set_source_files_properties(complex
|
||||||
COMPILE_FLAGS
|
COMPILE_FLAGS
|
||||||
|
|
|
@ -716,14 +716,14 @@ int main()
|
||||||
// the file was removed the last time 'complex' was run, and it is
|
// the file was removed the last time 'complex' was run, and it is
|
||||||
// only created during a build.
|
// only created during a build.
|
||||||
|
|
||||||
TestAndRemoveFile(BINARY_DIR "/Library/prebuild.txt");
|
TestAndRemoveFile("Library/prebuild.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Library/prelink.txt");
|
TestAndRemoveFile("Library/prelink.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Library/postbuild.txt");
|
TestAndRemoveFile("Library/postbuild.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Library/postbuild2.txt");
|
TestAndRemoveFile("Library/postbuild2.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Executable/prebuild.txt");
|
TestAndRemoveFile("Executable/prebuild.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Executable/prelink.txt");
|
TestAndRemoveFile("Executable/prelink.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Executable/postbuild.txt");
|
TestAndRemoveFile("Executable/postbuild.txt");
|
||||||
TestAndRemoveFile(BINARY_DIR "/Executable/postbuild2.txt");
|
TestAndRemoveFile("Executable/postbuild2.txt");
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// A custom target has been created (see Library/).
|
// A custom target has been created (see Library/).
|
||||||
|
@ -733,12 +733,12 @@ int main()
|
||||||
// the file was removed the last time 'complex' was run, and it is
|
// the file was removed the last time 'complex' was run, and it is
|
||||||
// only created during a build.
|
// only created during a build.
|
||||||
|
|
||||||
TestAndRemoveFile(BINARY_DIR "/Library/custom_target1.txt");
|
TestAndRemoveFile("Library/custom_target1.txt");
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// A directory has been created.
|
// A directory has been created.
|
||||||
|
|
||||||
TestDir(BINARY_DIR "/make_dir");
|
TestDir("make_dir");
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// Test OUTPUT_REQUIRED_FILES
|
// Test OUTPUT_REQUIRED_FILES
|
||||||
|
@ -749,7 +749,7 @@ int main()
|
||||||
// the file was removed the last time 'complex' was run, and it is
|
// the file was removed the last time 'complex' was run, and it is
|
||||||
// only created during a build.
|
// only created during a build.
|
||||||
|
|
||||||
TestAndRemoveFile(BINARY_DIR "/Executable/Temp/complex-required.txt");
|
TestAndRemoveFile("Executable/Temp/complex-required.txt");
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// Test FIND_LIBRARY
|
// Test FIND_LIBRARY
|
||||||
|
|
|
@ -164,13 +164,6 @@ add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/not_included.h
|
||||||
${PROJECT_BINARY_DIR}/not_included.h
|
${PROJECT_BINARY_DIR}/not_included.h
|
||||||
)
|
)
|
||||||
|
|
||||||
# Tell the executable where to find not_included.h.
|
|
||||||
configure_file(
|
|
||||||
${PROJECT_SOURCE_DIR}/config.h.in
|
|
||||||
${PROJECT_BINARY_DIR}/config.h
|
|
||||||
@ONLY
|
|
||||||
)
|
|
||||||
|
|
||||||
# add the executable
|
# add the executable
|
||||||
add_executable(CustomCommand
|
add_executable(CustomCommand
|
||||||
${PROJECT_BINARY_DIR}/foo.h
|
${PROJECT_BINARY_DIR}/foo.h
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
#define PROJECT_BINARY_DIR "@PROJECT_BINARY_DIR@"
|
|
|
@ -1,6 +1,5 @@
|
||||||
#include "doc1.h"
|
#include "doc1.h"
|
||||||
#include "foo.h"
|
#include "foo.h"
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
@ -11,7 +10,7 @@ int main ()
|
||||||
{
|
{
|
||||||
if (generated()*wrapped()*doc() == 3*5*7)
|
if (generated()*wrapped()*doc() == 3*5*7)
|
||||||
{
|
{
|
||||||
FILE* fin = fopen(PROJECT_BINARY_DIR "/not_included.h", "r");
|
FILE* fin = fopen("not_included.h", "r");
|
||||||
if(fin)
|
if(fin)
|
||||||
{
|
{
|
||||||
fclose(fin);
|
fclose(fin);
|
||||||
|
|
|
@ -16,13 +16,17 @@ find_program(CONLY_EXE
|
||||||
PATHS ${top}/runtime
|
PATHS ${top}/runtime
|
||||||
NO_DEFAULT_PATH)
|
NO_DEFAULT_PATH)
|
||||||
|
|
||||||
|
file(RELATIVE_PATH TESTC1_LIB_FILE "${top}" "${TESTC1_LIB}")
|
||||||
|
file(RELATIVE_PATH TESTC2_LIB_FILE "${top}" "${TESTC2_LIB}")
|
||||||
|
file(RELATIVE_PATH CONLY_EXE_FILE "${top}" "${CONLY_EXE}")
|
||||||
|
|
||||||
file(WRITE ${top}/OutDir.h "/* Generated by ${CMAKE_CURRENT_LIST_FILE} */
|
file(WRITE ${top}/OutDir.h "/* Generated by ${CMAKE_CURRENT_LIST_FILE} */
|
||||||
#ifndef OutDir_h
|
#ifndef OutDir_h
|
||||||
#define OutDir_h
|
#define OutDir_h
|
||||||
|
|
||||||
#define TESTC1_LIB \"${TESTC1_LIB}\"
|
#define TESTC1_LIB \"${TESTC1_LIB_FILE}\"
|
||||||
#define TESTC2_LIB \"${TESTC2_LIB}\"
|
#define TESTC2_LIB \"${TESTC2_LIB_FILE}\"
|
||||||
#define CONLY_EXE \"${CONLY_EXE}\"
|
#define CONLY_EXE \"${CONLY_EXE_FILE}\"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
")
|
")
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
file(STRINGS ${RunCMake_TEST_BINARY_DIR}/test.txt TEST_TXT)
|
file(STRINGS ${RunCMake_TEST_BINARY_DIR}/test.txt TEST_TXT ENCODING UTF-8)
|
||||||
|
|
||||||
list(GET TEST_TXT 0 PDB_PATH)
|
list(GET TEST_TXT 0 PDB_PATH)
|
||||||
list(GET TEST_TXT 1 PDB_NAME)
|
list(GET TEST_TXT 1 PDB_NAME)
|
||||||
|
|
Loading…
Reference in New Issue