aboutsummaryrefslogtreecommitdiff
path: root/tests/ECMGenerateHeadersTest
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ECMGenerateHeadersTest')
-rw-r--r--tests/ECMGenerateHeadersTest/CMakeLists.txt6
-rw-r--r--tests/ECMGenerateHeadersTest/headsubdir/headtest2.h0
-rw-r--r--tests/ECMGenerateHeadersTest/headsubdir/headtest3.h0
-rw-r--r--tests/ECMGenerateHeadersTest/headtest1.h0
-rw-r--r--tests/ECMGenerateHeadersTest/headtest2.h0
-rw-r--r--tests/ECMGenerateHeadersTest/run_test.cmake.config247
6 files changed, 253 insertions, 0 deletions
diff --git a/tests/ECMGenerateHeadersTest/CMakeLists.txt b/tests/ECMGenerateHeadersTest/CMakeLists.txt
new file mode 100644
index 00000000..9f407cb0
--- /dev/null
+++ b/tests/ECMGenerateHeadersTest/CMakeLists.txt
@@ -0,0 +1,6 @@
+set(MODULES_DIR "${extra-cmake-modules_SOURCE_DIR}/modules")
+configure_file(run_test.cmake.config "${CMAKE_CURRENT_BINARY_DIR}/run_test.cmake" @ONLY)
+
+add_test(
+ NAME ECMGenerateHeaders
+ COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/run_test.cmake")
diff --git a/tests/ECMGenerateHeadersTest/headsubdir/headtest2.h b/tests/ECMGenerateHeadersTest/headsubdir/headtest2.h
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/ECMGenerateHeadersTest/headsubdir/headtest2.h
diff --git a/tests/ECMGenerateHeadersTest/headsubdir/headtest3.h b/tests/ECMGenerateHeadersTest/headsubdir/headtest3.h
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/ECMGenerateHeadersTest/headsubdir/headtest3.h
diff --git a/tests/ECMGenerateHeadersTest/headtest1.h b/tests/ECMGenerateHeadersTest/headtest1.h
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/ECMGenerateHeadersTest/headtest1.h
diff --git a/tests/ECMGenerateHeadersTest/headtest2.h b/tests/ECMGenerateHeadersTest/headtest2.h
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/ECMGenerateHeadersTest/headtest2.h
diff --git a/tests/ECMGenerateHeadersTest/run_test.cmake.config b/tests/ECMGenerateHeadersTest/run_test.cmake.config
new file mode 100644
index 00000000..0a2425fe
--- /dev/null
+++ b/tests/ECMGenerateHeadersTest/run_test.cmake.config
@@ -0,0 +1,247 @@
+set(CMAKE_MODULE_PATH "@MODULES_DIR@")
+set(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@")
+set(CMAKE_CURRENT_BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@")
+
+include(ECMGenerateHeaders)
+include(CMakeParseArguments)
+
+function (check_files)
+ set(options)
+ set(oneValueArgs GENERATED ORIGINALS)
+ set(multiValueArgs)
+ cmake_parse_arguments(CF "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+ list(LENGTH CF_GENERATED count)
+ foreach(i RANGE ${count})
+ list(GET CF_GENERATED 0 generated_file)
+ list(GET CF_ORIGINALS 0 original_file)
+ if (NOT EXISTS "${generated_file}")
+ message(FATAL_ERROR "${generated_file} was not generated")
+ endif()
+ file(READ "${generated_file}" file_contents)
+ string(STRIP "${file_contents}" file_contents)
+ set (exp_contents "#include \"${original_file}\"")
+ if (NOT "${file_contents}" STREQUAL "${exp_contents}")
+ message(FATAL_ERROR "${generated_file} contains '${file_contents}' instead of '${exp_contents}'")
+ endif()
+ endforeach()
+endfunction()
+
+###########################################################
+
+message(STATUS "Test 1: no optional arguments")
+set(camelcase_headers)
+set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest1"
+ "${CMAKE_CURRENT_BINARY_DIR}/HeadTest2")
+set(origfiles headtest1.h headtest2.h)
+file(REMOVE ${expfiles})
+ecm_generate_headers(
+ camelcase_headers
+ HEADER_NAMES HeadTest1 HeadTest2
+)
+if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
+ message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
+endif()
+check_files(GENERATED ${expfiles}
+ ORIGINALS ${origfiles})
+
+
+###########################################################
+
+message(STATUS "Test 2: RELATIVE")
+set(camelcase_headers)
+set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest2"
+ "${CMAKE_CURRENT_BINARY_DIR}/HeadTest3")
+set(origfiles headtest2.h headtest3.h)
+file(REMOVE ${expfiles})
+ecm_generate_headers(
+ camelcase_headers
+ HEADER_NAMES HeadTest2 HeadTest3
+ RELATIVE headsubdir
+)
+if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
+ message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
+endif()
+check_files(GENERATED ${expfiles}
+ ORIGINALS ${origfiles})
+
+
+###########################################################
+
+message(STATUS "Test 3: OUTPUT_DIR")
+set(camelcase_headers)
+set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/testdir/HeadTest1"
+ "${CMAKE_CURRENT_BINARY_DIR}/testdir/HeadTest2")
+set(origfiles headtest1.h headtest2.h)
+file(REMOVE ${expfiles})
+ecm_generate_headers(
+ camelcase_headers
+ HEADER_NAMES HeadTest1 HeadTest2
+ OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/testdir"
+)
+if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
+ message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
+endif()
+check_files(GENERATED ${expfiles}
+ ORIGINALS ${origfiles})
+
+
+###########################################################
+
+message(STATUS "Test 4: PREFIX")
+set(camelcase_headers)
+set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/Module/HeadTest1"
+ "${CMAKE_CURRENT_BINARY_DIR}/Module/HeadTest2")
+set(intermediatefiles module/headtest1.h module/headtest2.h)
+set(origfiles "${CMAKE_CURRENT_SOURCE_DIR}/headtest1.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/headtest2.h")
+file(REMOVE ${expfiles} ${intermediatefiles})
+ecm_generate_headers(
+ camelcase_headers
+ HEADER_NAMES HeadTest1 HeadTest2
+ PREFIX Module
+)
+if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
+ message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
+endif()
+check_files(GENERATED ${expfiles}
+ ORIGINALS ${intermediatefiles})
+check_files(GENERATED ${expfiles}
+ ORIGINALS ${intermediatefiles})
+
+
+###########################################################
+
+message(STATUS "Test 5: REQUIRED_HEADERS")
+set(camelcase_headers)
+set(req_headers)
+set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest1"
+ "${CMAKE_CURRENT_BINARY_DIR}/HeadTest2")
+set(origfiles headtest1.h headtest2.h)
+set(origpaths "${CMAKE_CURRENT_SOURCE_DIR}/headtest1.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/headtest2.h")
+file(REMOVE ${expfiles})
+ecm_generate_headers(
+ camelcase_headers
+ HEADER_NAMES HeadTest1 HeadTest2
+ REQUIRED_HEADERS req_headers
+)
+if (NOT "${origpaths}" STREQUAL "${req_headers}")
+ message(FATAL_ERROR "REQUIRED_HEADERS var was set to \"${req_headers}\" instead of \"${origpaths}\"")
+endif()
+if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
+ message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
+endif()
+check_files(GENERATED ${expfiles}
+ ORIGINALS ${origfiles})
+
+
+###########################################################
+
+message(STATUS "Test 6: RELATIVE and REQUIRED_HEADERS")
+set(camelcase_headers)
+set(req_headers)
+set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest2"
+ "${CMAKE_CURRENT_BINARY_DIR}/HeadTest3")
+set(origfiles headtest2.h headtest3.h)
+set(origpaths "${CMAKE_CURRENT_SOURCE_DIR}/headsubdir/headtest2.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/headsubdir/headtest3.h")
+file(REMOVE ${expfiles})
+ecm_generate_headers(
+ camelcase_headers
+ HEADER_NAMES HeadTest2 HeadTest3
+ RELATIVE headsubdir
+ REQUIRED_HEADERS req_headers
+)
+if (NOT "${origpaths}" STREQUAL "${req_headers}")
+ message(FATAL_ERROR "REQUIRED_HEADERS var was set to \"${req_headers}\" instead of \"${origpaths}\"")
+endif()
+if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
+ message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
+endif()
+check_files(GENERATED ${expfiles}
+ ORIGINALS ${origfiles})
+
+
+###########################################################
+
+message(STATUS "Test 7: OUTPUT_DIR and REQUIRED_HEADERS")
+set(camelcase_headers)
+set(req_headers)
+set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/testdir/HeadTest1"
+ "${CMAKE_CURRENT_BINARY_DIR}/testdir/HeadTest2")
+set(origfiles headtest1.h headtest2.h)
+set(origpaths "${CMAKE_CURRENT_SOURCE_DIR}/headtest1.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/headtest2.h")
+file(REMOVE ${expfiles})
+ecm_generate_headers(
+ camelcase_headers
+ HEADER_NAMES HeadTest1 HeadTest2
+ OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/testdir"
+ REQUIRED_HEADERS req_headers
+)
+if (NOT "${origpaths}" STREQUAL "${req_headers}")
+ message(FATAL_ERROR "REQUIRED_HEADERS var was set to \"${req_headers}\" instead of \"${origpaths}\"")
+endif()
+if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
+ message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
+endif()
+check_files(GENERATED ${expfiles}
+ ORIGINALS ${origfiles})
+
+
+###########################################################
+
+message(STATUS "Test 8: PREFIX and REQUIRED_HEADERS")
+set(camelcase_headers)
+set(req_headers)
+set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/Module/HeadTest1"
+ "${CMAKE_CURRENT_BINARY_DIR}/Module/HeadTest2")
+set(intermediatefiles module/headtest1.h module/headtest2.h)
+set(origfiles "${CMAKE_CURRENT_SOURCE_DIR}/headtest1.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/headtest2.h")
+set(origpaths ${origfiles})
+file(REMOVE ${expfiles} ${intermediatefiles})
+ecm_generate_headers(
+ camelcase_headers
+ HEADER_NAMES HeadTest1 HeadTest2
+ PREFIX Module
+ REQUIRED_HEADERS req_headers
+)
+if (NOT "${origpaths}" STREQUAL "${req_headers}")
+ message(FATAL_ERROR "REQUIRED_HEADERS var was set to \"${req_headers}\" instead of \"${origpaths}\"")
+endif()
+if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
+ message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
+endif()
+check_files(GENERATED ${expfiles}
+ ORIGINALS ${intermediatefiles})
+check_files(GENERATED ${expfiles}
+ ORIGINALS ${intermediatefiles})
+
+
+###########################################################
+
+message(STATUS "Test 9: REQUIRED_HEADERS (duplicate var)")
+set(all_headers)
+set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest1"
+ "${CMAKE_CURRENT_BINARY_DIR}/HeadTest2")
+set(origfiles headtest1.h headtest2.h)
+set(origpaths "${CMAKE_CURRENT_SOURCE_DIR}/headtest1.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/headtest2.h")
+file(REMOVE ${expfiles})
+ecm_generate_headers(
+ all_headers
+ HEADER_NAMES HeadTest1 HeadTest2
+ REQUIRED_HEADERS all_headers
+)
+list(SORT all_headers)
+set(exp_headers ${expfiles} ${origpaths})
+list(SORT exp_headers)
+if (NOT "${exp_headers}" STREQUAL "${all_headers}")
+ message(FATAL_ERROR "combined headers var was set to \"${all_headers}\" instead of \"${exp_headers}\"")
+endif()
+check_files(GENERATED ${expfiles}
+ ORIGINALS ${origfiles})
+
+
+# vim:ft=cmake