Tests: Add coverage for special characters in include directories

We have tests for special characters in preprocessor definitions and
custom command line arguments.  Add such a test for include directories.
Currently the Makefiles generators do not escape paths in `depend.make`
in all cases, so leave a FIXME comment and skip the test for those.

Issue: #20555
This commit is contained in:
Brad King
2020-04-09 15:35:33 -04:00
parent dc0dc974a9
commit 9be48c4d0b
2 changed files with 29 additions and 0 deletions

View File

@@ -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)

View File

@@ -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;