From 3ef776fc38fecff332e568f307dcf4e6f82fbe14 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 9 Mar 2015 08:38:21 -0400 Subject: [PATCH 1/2] configure_file: Do not warn about newline style arguments The unknown argument warning added by commit v3.2.0-rc1~452^2 (configure_file: Warn about unknown arguments, 2014-10-31) failed to account for options handled by the NewLineStyle member instead of directly in the main loop. Simply whitelist them for now. --- Source/cmConfigureFileCommand.cxx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/cmConfigureFileCommand.cxx b/Source/cmConfigureFileCommand.cxx index fa7f486d8..687638863 100644 --- a/Source/cmConfigureFileCommand.cxx +++ b/Source/cmConfigureFileCommand.cxx @@ -100,6 +100,13 @@ bool cmConfigureFileCommand { /* Ignore legacy option. */ } + else if(args[i] == "NEWLINE_STYLE" || + args[i] == "LF" || args[i] == "UNIX" || + args[i] == "CRLF" || args[i] == "WIN32" || + args[i] == "DOS") + { + /* Options handled by NewLineStyle member above. */ + } else { unknown_args += " "; From 024e25e485f8d1dbca40521fbc0bcd61e383f413 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 9 Mar 2015 08:42:02 -0400 Subject: [PATCH 2/2] Tests: Add more signature tests to RunCMake.configure_file test Move the test cases from Tests/CMakeTests/ConfigureFileTest.cmake.in over to use the RunCMake.configure_file infrastructure. This does much more robust verification of CMake output for each test case, and would have caught the regression fixed in our parent commit. --- Tests/CMakeTests/CMakeLists.txt | 1 - .../CMakeTests/ConfigureFile-DirOutput.cmake | 5 ---- Tests/CMakeTests/ConfigureFile-Relative.cmake | 4 --- Tests/CMakeTests/ConfigureFileTest.cmake.in | 28 ------------------- .../RunCMake/configure_file/BadArg-result.txt | 1 + .../RunCMake/configure_file/BadArg-stderr.txt | 4 +++ .../configure_file/BadArg.cmake} | 0 .../configure_file/DirInput-result.txt | 1 + .../configure_file/DirInput-stderr.txt | 8 ++++++ .../configure_file/DirInput.cmake} | 0 .../configure_file/DirOutput-stderr.txt | 1 + Tests/RunCMake/configure_file/DirOutput.cmake | 4 +++ Tests/RunCMake/configure_file/DirOutput.txt | 1 + .../NewLineStyle-COPYONLY-result.txt | 1 + .../NewLineStyle-COPYONLY-stderr.txt | 4 +++ .../NewLineStyle-COPYONLY.cmake} | 2 +- .../NewLineStyle-NoArg-result.txt | 1 + .../NewLineStyle-NoArg-stderr.txt | 5 ++++ .../configure_file/NewLineStyle-NoArg.cmake} | 2 +- .../NewLineStyle-ValidArg.cmake} | 2 +- .../NewLineStyle-WrongArg-result.txt | 1 + .../NewLineStyle-WrongArg-stderr.txt | 5 ++++ .../NewLineStyle-WrongArg.cmake} | 2 +- Tests/RunCMake/configure_file/Relative-In.txt | 1 + .../configure_file/Relative-stderr.txt | 1 + Tests/RunCMake/configure_file/Relative.cmake | 3 ++ .../configure_file/RunCMakeTest.cmake | 8 ++++++ 27 files changed, 54 insertions(+), 42 deletions(-) delete mode 100644 Tests/CMakeTests/ConfigureFile-DirOutput.cmake delete mode 100644 Tests/CMakeTests/ConfigureFile-Relative.cmake delete mode 100644 Tests/CMakeTests/ConfigureFileTest.cmake.in create mode 100644 Tests/RunCMake/configure_file/BadArg-result.txt create mode 100644 Tests/RunCMake/configure_file/BadArg-stderr.txt rename Tests/{CMakeTests/ConfigureFile-BadArg.cmake => RunCMake/configure_file/BadArg.cmake} (100%) create mode 100644 Tests/RunCMake/configure_file/DirInput-result.txt create mode 100644 Tests/RunCMake/configure_file/DirInput-stderr.txt rename Tests/{CMakeTests/ConfigureFile-DirInput.cmake => RunCMake/configure_file/DirInput.cmake} (100%) create mode 100644 Tests/RunCMake/configure_file/DirOutput-stderr.txt create mode 100644 Tests/RunCMake/configure_file/DirOutput.cmake create mode 100644 Tests/RunCMake/configure_file/DirOutput.txt create mode 100644 Tests/RunCMake/configure_file/NewLineStyle-COPYONLY-result.txt create mode 100644 Tests/RunCMake/configure_file/NewLineStyle-COPYONLY-stderr.txt rename Tests/{CMakeTests/ConfigureFile-NewLineStyle-COPYONLY.cmake => RunCMake/configure_file/NewLineStyle-COPYONLY.cmake} (58%) create mode 100644 Tests/RunCMake/configure_file/NewLineStyle-NoArg-result.txt create mode 100644 Tests/RunCMake/configure_file/NewLineStyle-NoArg-stderr.txt rename Tests/{CMakeTests/ConfigureFile-NewLineStyle-NoArg.cmake => RunCMake/configure_file/NewLineStyle-NoArg.cmake} (55%) rename Tests/{CMakeTests/ConfigureFile-NewLineStyle-ValidArg.cmake => RunCMake/configure_file/NewLineStyle-ValidArg.cmake} (85%) create mode 100644 Tests/RunCMake/configure_file/NewLineStyle-WrongArg-result.txt create mode 100644 Tests/RunCMake/configure_file/NewLineStyle-WrongArg-stderr.txt rename Tests/{CMakeTests/ConfigureFile-NewLineStyle-WrongArg.cmake => RunCMake/configure_file/NewLineStyle-WrongArg.cmake} (56%) create mode 100644 Tests/RunCMake/configure_file/Relative-In.txt create mode 100644 Tests/RunCMake/configure_file/Relative-stderr.txt create mode 100644 Tests/RunCMake/configure_file/Relative.cmake diff --git a/Tests/CMakeTests/CMakeLists.txt b/Tests/CMakeTests/CMakeLists.txt index ce3683041..d5524c3ca 100644 --- a/Tests/CMakeTests/CMakeLists.txt +++ b/Tests/CMakeTests/CMakeLists.txt @@ -19,7 +19,6 @@ AddCMakeTest(GetFilenameComponentRealpath "") AddCMakeTest(Version "") AddCMakeTest(Message "") AddCMakeTest(File "") -AddCMakeTest(ConfigureFile "") AddCMakeTest(SeparateArguments "") AddCMakeTest(ImplicitLinkInfo "") AddCMakeTest(ModuleNotices "") diff --git a/Tests/CMakeTests/ConfigureFile-DirOutput.cmake b/Tests/CMakeTests/ConfigureFile-DirOutput.cmake deleted file mode 100644 index d682a2d85..000000000 --- a/Tests/CMakeTests/ConfigureFile-DirOutput.cmake +++ /dev/null @@ -1,5 +0,0 @@ -file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/ConfigureFile-DirOutput.txt "DirOutput test file\n") -file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ConfigureFile-DirOutput) -configure_file(ConfigureFile-DirOutput.txt ConfigureFile-DirOutput) -file(READ ${CMAKE_CURRENT_BINARY_DIR}/ConfigureFile-DirOutput/ConfigureFile-DirOutput.txt out) -message("${out}") diff --git a/Tests/CMakeTests/ConfigureFile-Relative.cmake b/Tests/CMakeTests/ConfigureFile-Relative.cmake deleted file mode 100644 index 532580a21..000000000 --- a/Tests/CMakeTests/ConfigureFile-Relative.cmake +++ /dev/null @@ -1,4 +0,0 @@ -file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/ConfigureFile-Relative-In.txt "Relative test file\n") -configure_file(ConfigureFile-Relative-In.txt ConfigureFile-Relative-Out.txt) -file(READ ${CMAKE_CURRENT_BINARY_DIR}/ConfigureFile-Relative-Out.txt out) -message("${out}") diff --git a/Tests/CMakeTests/ConfigureFileTest.cmake.in b/Tests/CMakeTests/ConfigureFileTest.cmake.in deleted file mode 100644 index 6cc61d90c..000000000 --- a/Tests/CMakeTests/ConfigureFileTest.cmake.in +++ /dev/null @@ -1,28 +0,0 @@ -set(DirInput-RESULT 1) -set(DirInput-STDERR "is a directory") -set(DirOutput-RESULT 0) -set(DirOutput-STDERR "DirOutput test file") -set(Relative-RESULT 0) -set(Relative-STDERR "Relative test file") -set(BadArg-RESULT 1) -set(BadArg-STDERR "called with incorrect number of arguments") -set(NewLineStyle-NoArg-RESULT 1) -set(NewLineStyle-NoArg-STDERR "NEWLINE_STYLE must set a style:") -set(NewLineStyle-WrongArg-RESULT 1) -set(NewLineStyle-WrongArg-STDERR "NEWLINE_STYLE sets an unknown style") -set(NewLineStyle-ValidArg-RESULT 0) -set(NewLineStyle-ValidArg-STDERR ) -set(NewLineStyle-COPYONLY-RESULT 1) -set(NewLineStyle-COPYONLY-STDERR "COPYONLY could not be used in combination") - -include("@CMAKE_CURRENT_SOURCE_DIR@/CheckCMakeTest.cmake") -check_cmake_test(ConfigureFile - DirInput - DirOutput - Relative - BadArg - NewLineStyle-NoArg - NewLineStyle-WrongArg - NewLineStyle-ValidArg - NewLineStyle-COPYONLY - ) diff --git a/Tests/RunCMake/configure_file/BadArg-result.txt b/Tests/RunCMake/configure_file/BadArg-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/configure_file/BadArg-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/configure_file/BadArg-stderr.txt b/Tests/RunCMake/configure_file/BadArg-stderr.txt new file mode 100644 index 000000000..4567d3f9f --- /dev/null +++ b/Tests/RunCMake/configure_file/BadArg-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at BadArg.cmake:[0-9]+ \(configure_file\): + configure_file called with incorrect number of arguments, expected 2 +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/CMakeTests/ConfigureFile-BadArg.cmake b/Tests/RunCMake/configure_file/BadArg.cmake similarity index 100% rename from Tests/CMakeTests/ConfigureFile-BadArg.cmake rename to Tests/RunCMake/configure_file/BadArg.cmake diff --git a/Tests/RunCMake/configure_file/DirInput-result.txt b/Tests/RunCMake/configure_file/DirInput-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/configure_file/DirInput-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/configure_file/DirInput-stderr.txt b/Tests/RunCMake/configure_file/DirInput-stderr.txt new file mode 100644 index 000000000..2e0cd144c --- /dev/null +++ b/Tests/RunCMake/configure_file/DirInput-stderr.txt @@ -0,0 +1,8 @@ +CMake Error at DirInput.cmake:[0-9]+ \(configure_file\): + configure_file input location + + .*/Tests/RunCMake/configure_file/. + + is a directory but a file was expected. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/CMakeTests/ConfigureFile-DirInput.cmake b/Tests/RunCMake/configure_file/DirInput.cmake similarity index 100% rename from Tests/CMakeTests/ConfigureFile-DirInput.cmake rename to Tests/RunCMake/configure_file/DirInput.cmake diff --git a/Tests/RunCMake/configure_file/DirOutput-stderr.txt b/Tests/RunCMake/configure_file/DirOutput-stderr.txt new file mode 100644 index 000000000..d051f7c20 --- /dev/null +++ b/Tests/RunCMake/configure_file/DirOutput-stderr.txt @@ -0,0 +1 @@ +^DirOutput test file$ diff --git a/Tests/RunCMake/configure_file/DirOutput.cmake b/Tests/RunCMake/configure_file/DirOutput.cmake new file mode 100644 index 000000000..aa0fadfe6 --- /dev/null +++ b/Tests/RunCMake/configure_file/DirOutput.cmake @@ -0,0 +1,4 @@ +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DirOutput) +configure_file(DirOutput.txt DirOutput) +file(READ ${CMAKE_CURRENT_BINARY_DIR}/DirOutput/DirOutput.txt out) +message("${out}") diff --git a/Tests/RunCMake/configure_file/DirOutput.txt b/Tests/RunCMake/configure_file/DirOutput.txt new file mode 100644 index 000000000..16388a6b5 --- /dev/null +++ b/Tests/RunCMake/configure_file/DirOutput.txt @@ -0,0 +1 @@ +DirOutput test file diff --git a/Tests/RunCMake/configure_file/NewLineStyle-COPYONLY-result.txt b/Tests/RunCMake/configure_file/NewLineStyle-COPYONLY-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/configure_file/NewLineStyle-COPYONLY-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/configure_file/NewLineStyle-COPYONLY-stderr.txt b/Tests/RunCMake/configure_file/NewLineStyle-COPYONLY-stderr.txt new file mode 100644 index 000000000..3f66909d1 --- /dev/null +++ b/Tests/RunCMake/configure_file/NewLineStyle-COPYONLY-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at NewLineStyle-COPYONLY.cmake:[0-9]+ \(configure_file\): + configure_file COPYONLY could not be used in combination with NEWLINE_STYLE +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/CMakeTests/ConfigureFile-NewLineStyle-COPYONLY.cmake b/Tests/RunCMake/configure_file/NewLineStyle-COPYONLY.cmake similarity index 58% rename from Tests/CMakeTests/ConfigureFile-NewLineStyle-COPYONLY.cmake rename to Tests/RunCMake/configure_file/NewLineStyle-COPYONLY.cmake index 3b09eb0c3..c07b8f582 100644 --- a/Tests/CMakeTests/ConfigureFile-NewLineStyle-COPYONLY.cmake +++ b/Tests/RunCMake/configure_file/NewLineStyle-COPYONLY.cmake @@ -1,3 +1,3 @@ -set(file_name ${CMAKE_CURRENT_SOURCE_DIR}/ConfigureFile-NewLineStyle.txt) +set(file_name ${CMAKE_CURRENT_BINARY_DIR}/NewLineStyle.txt) file(WRITE ${file_name} "Data\n") configure_file(${file_name} ${file_name}.out COPYONLY NEWLINE_STYLE DOS) diff --git a/Tests/RunCMake/configure_file/NewLineStyle-NoArg-result.txt b/Tests/RunCMake/configure_file/NewLineStyle-NoArg-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/configure_file/NewLineStyle-NoArg-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/configure_file/NewLineStyle-NoArg-stderr.txt b/Tests/RunCMake/configure_file/NewLineStyle-NoArg-stderr.txt new file mode 100644 index 000000000..365265715 --- /dev/null +++ b/Tests/RunCMake/configure_file/NewLineStyle-NoArg-stderr.txt @@ -0,0 +1,5 @@ +CMake Error at NewLineStyle-NoArg.cmake:[0-9]+ \(configure_file\): + configure_file NEWLINE_STYLE must set a style: LF, CRLF, UNIX, DOS, or + WIN32 +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/CMakeTests/ConfigureFile-NewLineStyle-NoArg.cmake b/Tests/RunCMake/configure_file/NewLineStyle-NoArg.cmake similarity index 55% rename from Tests/CMakeTests/ConfigureFile-NewLineStyle-NoArg.cmake rename to Tests/RunCMake/configure_file/NewLineStyle-NoArg.cmake index 133a67a8a..b35bde11b 100644 --- a/Tests/CMakeTests/ConfigureFile-NewLineStyle-NoArg.cmake +++ b/Tests/RunCMake/configure_file/NewLineStyle-NoArg.cmake @@ -1,3 +1,3 @@ -set(file_name ${CMAKE_CURRENT_SOURCE_DIR}/ConfigureFile-NewLineStyle.txt) +set(file_name ${CMAKE_CURRENT_BINARY_DIR}/NewLineStyle.txt) file(WRITE ${file_name} "Data\n") configure_file(${file_name} ${file_name}.out NEWLINE_STYLE) diff --git a/Tests/CMakeTests/ConfigureFile-NewLineStyle-ValidArg.cmake b/Tests/RunCMake/configure_file/NewLineStyle-ValidArg.cmake similarity index 85% rename from Tests/CMakeTests/ConfigureFile-NewLineStyle-ValidArg.cmake rename to Tests/RunCMake/configure_file/NewLineStyle-ValidArg.cmake index b7e619ca2..8d9f47448 100644 --- a/Tests/CMakeTests/ConfigureFile-NewLineStyle-ValidArg.cmake +++ b/Tests/RunCMake/configure_file/NewLineStyle-ValidArg.cmake @@ -1,4 +1,4 @@ -set(file_name ${CMAKE_CURRENT_SOURCE_DIR}/ConfigureFile-NewLineStyle.txt) +set(file_name ${CMAKE_CURRENT_BINARY_DIR}/NewLineStyle.txt) function(test_eol style in out) file(WRITE ${file_name} "${in}") diff --git a/Tests/RunCMake/configure_file/NewLineStyle-WrongArg-result.txt b/Tests/RunCMake/configure_file/NewLineStyle-WrongArg-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/configure_file/NewLineStyle-WrongArg-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/configure_file/NewLineStyle-WrongArg-stderr.txt b/Tests/RunCMake/configure_file/NewLineStyle-WrongArg-stderr.txt new file mode 100644 index 000000000..0d6855f82 --- /dev/null +++ b/Tests/RunCMake/configure_file/NewLineStyle-WrongArg-stderr.txt @@ -0,0 +1,5 @@ +CMake Error at NewLineStyle-WrongArg.cmake:[0-9]+ \(configure_file\): + configure_file NEWLINE_STYLE sets an unknown style, only LF, CRLF, UNIX, + DOS, and WIN32 are supported +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/CMakeTests/ConfigureFile-NewLineStyle-WrongArg.cmake b/Tests/RunCMake/configure_file/NewLineStyle-WrongArg.cmake similarity index 56% rename from Tests/CMakeTests/ConfigureFile-NewLineStyle-WrongArg.cmake rename to Tests/RunCMake/configure_file/NewLineStyle-WrongArg.cmake index e8887c127..3ae906dba 100644 --- a/Tests/CMakeTests/ConfigureFile-NewLineStyle-WrongArg.cmake +++ b/Tests/RunCMake/configure_file/NewLineStyle-WrongArg.cmake @@ -1,3 +1,3 @@ -set(file_name ${CMAKE_CURRENT_SOURCE_DIR}/ConfigureFile-NewLineStyle.txt) +set(file_name ${CMAKE_CURRENT_BINARY_DIR}/NewLineStyle.txt) file(WRITE ${file_name} "Data\n") configure_file(${file_name} ${file_name}.out NEWLINE_STYLE FOO) diff --git a/Tests/RunCMake/configure_file/Relative-In.txt b/Tests/RunCMake/configure_file/Relative-In.txt new file mode 100644 index 000000000..572fe532d --- /dev/null +++ b/Tests/RunCMake/configure_file/Relative-In.txt @@ -0,0 +1 @@ +Relative test file diff --git a/Tests/RunCMake/configure_file/Relative-stderr.txt b/Tests/RunCMake/configure_file/Relative-stderr.txt new file mode 100644 index 000000000..b94de0dce --- /dev/null +++ b/Tests/RunCMake/configure_file/Relative-stderr.txt @@ -0,0 +1 @@ +^Relative test file$ diff --git a/Tests/RunCMake/configure_file/Relative.cmake b/Tests/RunCMake/configure_file/Relative.cmake new file mode 100644 index 000000000..085991c72 --- /dev/null +++ b/Tests/RunCMake/configure_file/Relative.cmake @@ -0,0 +1,3 @@ +configure_file(Relative-In.txt Relative-Out.txt) +file(READ ${CMAKE_CURRENT_BINARY_DIR}/Relative-Out.txt out) +message("${out}") diff --git a/Tests/RunCMake/configure_file/RunCMakeTest.cmake b/Tests/RunCMake/configure_file/RunCMakeTest.cmake index 489652b18..de144682c 100644 --- a/Tests/RunCMake/configure_file/RunCMakeTest.cmake +++ b/Tests/RunCMake/configure_file/RunCMakeTest.cmake @@ -7,6 +7,14 @@ run_cmake(UTF16BE-BOM) run_cmake(UTF32LE-BOM) run_cmake(UTF32BE-BOM) run_cmake(UnknownArg) +run_cmake(DirInput) +run_cmake(DirOutput) +run_cmake(Relative) +run_cmake(BadArg) +run_cmake(NewLineStyle-NoArg) +run_cmake(NewLineStyle-WrongArg) +run_cmake(NewLineStyle-ValidArg) +run_cmake(NewLineStyle-COPYONLY) if(RunCMake_GENERATOR MATCHES "Make") # Use a single build tree for a few tests without cleaning.