CMake/Tests/RunCMake
Brad King 523c443d13 clang-format.bash: update to clang-format-6.0
Update `.clang-format` with configuration to make the 6.0 format as
close as possible to what 3.8 produced before.  Then revise the style:

* Indent preprocessor directives (a feature new since 3.8)
* Add a newline and indentation before inheritance `:` and `,`

Rename the Git attribute identifying the format to include the
clang-format version number: `format.clang-format-6.0`.  This will aid
external infrastructure in knowing what version of the tool to run.
2018-06-01 09:52:02 -04:00
..
add_custom_command VS: Generate a custom command only in the least dependent target 2018-04-23 13:31:28 +09:00
add_custom_target add_custom_{command,target}: Fix crash on empty expanded command 2018-05-14 11:54:27 -04:00
add_dependencies Add a getter for manually added target dependencies 2017-01-16 22:38:24 +01:00
add_executable Defer check for sources within a target until generation. 2017-10-24 08:14:47 -04:00
add_library Do not produce legacy _LIB_DEPENDS cache entries 2018-03-07 07:48:40 -05:00
add_subdirectory
alias_targets add_library: Restore error on alias of non-global imported target 2018-05-10 09:57:31 -04:00
Android Android: Add support for NDK r17 2018-04-17 11:21:15 -04:00
AndroidMK Android.mk: Fix export of static libraries with PRIVATE dependencies 2018-02-14 11:24:05 -05:00
AndroidTestUtilities AndroidTestUtilities: do not require ExternalData unconditionally 2017-02-04 08:16:24 -05:00
AutoExportDll GENERATOR_IS_MULTI_CONFIG: Use for multi-config checks in Tests 2017-12-30 09:35:56 +11:00
build_command
BuildDepends GENERATOR_IS_MULTI_CONFIG: Use for multi-config checks in Tests 2017-12-30 09:35:56 +11:00
CacheNewline cmCacheManager: Test and document newline truncation behavior 2018-01-15 09:28:32 -05:00
CheckIPOSupported IPO: Consider support for each language separately 2017-06-14 10:36:57 -04:00
CheckModules CheckIncludeFiles: Honor CMAKE_REQUIRED_LIBRARIES 2018-04-18 08:09:56 -04:00
ClangTidy
cmake_minimum_required cmake_minimum_required: Tolerate unknown future arguments 2018-03-26 11:31:08 -04:00
cmake_parse_arguments
CMP0004
CMP0019 Add deprecation warnings for policies CMP0036 and below 2017-04-21 15:04:33 -04:00
CMP0022 Tests: Fix RunCMake.CMP0022 tll case for Debug configuration 2017-05-18 10:18:50 -04:00
CMP0026 Add deprecation warnings for policies CMP0036 and below 2017-04-21 15:04:33 -04:00
CMP0027
CMP0028 Add deprecation warnings for policies CMP0036 and below 2017-04-21 15:04:33 -04:00
CMP0037 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0038 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0039 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0040 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0041 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0042 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0043 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0045 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0046 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0049 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0050 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0051 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0053 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0054 Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
CMP0055
CMP0057
CMP0059
CMP0060 GENERATOR_IS_MULTI_CONFIG: Use for multi-config checks in Tests 2017-12-30 09:35:56 +11:00
CMP0064
CMP0065
CMP0068 Add policy CMP0068 separate install_name and RPATH settings on macOS 2017-02-14 14:28:07 -07:00
CMP0069 IPO: Consider support for each language separately 2017-06-14 10:36:57 -04:00
CommandLine clang-format.bash: update to clang-format-6.0 2018-06-01 09:52:02 -04:00
CommandLineTar
CompatibleInterface
CompileDefinitions
CompileFeatures CompileFeatures: Makes tests work with meta-feature only 2017-05-29 13:51:45 -04:00
CompilerChange
CompilerLauncher Fortran: Add option to run the compiler through launcher tools 2017-11-21 14:44:01 -05:00
CompilerNotFound
Configure
configure_file
continue
CPack Various typo fixes 2018-01-04 06:52:01 +11:00
CPackCommandLine CPack: Fix crash on invalid generator name 2018-04-10 15:00:37 -04:00
CPackConfig
CPackInstallProperties Tests: Use full output paths in file(GENERATE) calls 2017-06-08 13:31:33 -04:00
CPackSymlinks
Cppcheck Clean up iwyu code to not be one big if statement. 2017-09-13 17:44:49 -04:00
Cpplint Update cpplint support to return 0 and mark warnings for CDash. 2017-12-01 16:23:45 -05:00
CrosscompilingEmulator
CSharpCustomCommand Vs: fix CSharp custom command by introducing inline MSBuild <Targets>s 2017-06-22 21:40:48 +02:00
CSharpReferenceImport add tests for using target_link_libraries() with imported managed targets 2018-04-24 07:05:16 +02:00
CTest Revert "Remove CTestTestfile.cmake when BUILD_TESTING is OFF" 2018-03-26 07:44:22 -04:00
ctest_build
ctest_cmake_error
ctest_configure
ctest_coverage
ctest_disabled_test cmCTestTestHandler: indicate why a test did not run 2017-04-24 15:42:40 -04:00
ctest_fixtures CTest: Check failed fixture dependencies before test command and args 2017-11-29 07:27:20 +11:00
ctest_labels_for_subprojects CTest: Weight reported test times by PROCESSORS in summaries 2017-09-08 10:03:01 -04:00
ctest_memcheck ctest_memcheck: Fix sanitizers when MemoryCheckSanitizerOptions is empty 2017-01-23 10:50:38 -05:00
ctest_skipped_test cmCTestTestHandler: indicate why a test did not run 2017-04-24 15:42:40 -04:00
ctest_start ctest_start: read model from TAG file 2018-05-09 08:22:55 -04:00
ctest_submit ctest_submit: Add HTTPHEADER option 2017-05-04 12:21:21 -04:00
ctest_test
ctest_upload
CTestCommandLine CTest: Add options to control test process affinity to CPUs 2018-03-05 09:21:32 -05:00
CTestTimeoutAfterMatch
DisallowedCommands Add deprecation warnings for policies CMP0036 and below 2017-04-21 15:04:33 -04:00
execute_process execute_process: Allow UTF-8 as a synonym for the UTF8 keyword 2017-12-27 21:56:00 +11:00
export Export: allow exporting of additional properties 2018-03-16 09:00:56 -04:00
ExportWithoutLanguage
ExternalData
ExternalProject ExternalProject: Fix cache generation when last args ends with "-NOTFOUND" 2018-03-12 13:45:50 -04:00
FeatureSummary FeatureSummary: Add FeatureSummary_<TYPE>_DESCRIPTION global properties 2017-02-06 14:44:24 -05:00
FetchContent FetchContent: Add tests 2017-10-17 08:10:19 +11:00
file Add tests for file(GLOB) CONFIGURE_DEPENDS flag 2018-04-01 23:16:12 -04:00
File_Generate GENERATOR_IS_MULTI_CONFIG: Use for multi-config checks in Tests 2017-12-30 09:35:56 +11:00
find_dependency Improve find_dependency argument handling 2017-05-22 13:32:43 -04:00
find_file
find_library find_library: Skip 'lib => lib<arch>' searches if one symlinks the other 2017-02-28 14:56:54 -05:00
find_package find_package: Improve CMP0074 warning messages 2018-03-21 07:51:20 -04:00
find_path
find_program
FindBoost FindBoost: Improve messages when a Boost CMake package is found 2017-09-29 10:10:01 -04:00
FindGTK2 FindGTK2: Add unit test to check variables when run twice 2017-01-25 10:20:35 +01:00
FindLua FindLua: Add tests for this module 2018-05-24 11:19:40 -04:00
FindMatlab FindMatlab: Matlab Runtime Compiler support 2018-04-23 10:30:49 -04:00
FindOpenGL FindOpenGL: Add policy CMP0072 to prefer GLVND for legacy GL 2017-11-17 07:17:28 -05:00
FindPkgConfig FindPkgConfig: export the list of found libraries also as variable 2018-05-11 19:35:53 +02:00
foreach Tests: Add test for bad foreach inside a function 2017-11-16 11:10:05 -05:00
FPHSA FPHSA: fix typo in comment 2017-09-14 08:21:38 -04:00
Framework Tests: Fix RunCMake.Framework ios arch for Xcode 9 2017-10-03 09:09:08 -04:00
GenerateExportHeader clang-format.bash: update to clang-format-6.0 2018-06-01 09:52:02 -04:00
GeneratorExpression Genex: Allow COMPILE_LANGUAGE to name a language that is not loaded 2018-05-03 08:34:39 -04:00
GeneratorInstance VS: Select and save a VS 2017 instance persistently 2017-10-19 10:20:12 -04:00
GeneratorPlatform
GeneratorToolset VS: Add option to select the version of the toolset used by VS 2017 2018-05-29 10:12:59 -04:00
get_filename_component get_filename_component: Revise PROGRAM/PROGRAM_ARGS split semantics 2017-09-13 10:47:04 -04:00
get_property Tests management: add TESTS directory property 2018-02-08 19:16:28 +01:00
GetPrerequisites GetPrerequisites: Restore behavior on missing binary of not clearing list 2017-09-26 07:31:33 -04:00
GNUInstallDirs Tests: Fix RunCMake.GNUInstallDirs on BSD platforms 2017-06-02 16:26:30 -04:00
GoogleTest Merge branch 'gtest_discover_tests_timeout' into release-3.11 2018-03-16 07:52:23 -04:00
if cmIfCommand: Reject duplicate else() and misplaced elseif() 2017-03-22 08:42:35 -04:00
IfacePaths Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
include
include_directories
include_external_msproject include_external_msproject: Honor MAP_IMPORTED_CONFIG_<CONFIG> 2017-04-05 13:44:03 -04:00
include_guard include_guard: add tests for the feature 2017-06-22 11:13:26 +03:00
IncludeWhatYouUse
IncompatibleQt
install install: add test for new NAMELINK_COMPONENT parameter 2018-05-03 08:08:42 -04:00
interface_library CUDA: Add cu as default source file extension 2018-01-08 16:16:52 -05:00
Languages
LinkStatic
LinkWhatYouUse
list list: Add TRANSFORM sub-command 2018-04-16 17:11:53 +02:00
Make include_regular_expression: Fix propagation to subdirectories 2018-01-24 08:20:19 -05:00
message Fix trivial typos in text 2017-11-03 10:25:05 -04:00
MultiLint cmcmd: Restore support for running multiple lint tools 2017-10-27 09:26:50 -04:00
Ninja Ninja: Avoid empty phony edges for target ordering 2018-04-26 08:40:57 -04:00
no_install_prefix
ObjectLibrary Tests: Add cases for usage requirements of linked object libs 2018-03-01 09:28:00 -05:00
ObsoleteQtMacros
PolicyScope
PositionIndependentCode
project project: Add HOMEPAGE_URL named parameter 2018-03-17 08:25:48 +11:00
return
RuntimePath GENERATOR_IS_MULTI_CONFIG: Use for multi-config checks in Tests 2017-12-30 09:35:56 +11:00
separate_arguments separgs: Add a NATIVE_COMMAND mode 2017-04-26 20:34:06 +02:00
set
set_property Tests: Add tests for INHERITED property chaining 2018-03-21 21:38:47 +11:00
SourceProperties sourceFile properties: add property INCLUDE_DIRECTORIES 2018-01-24 15:10:10 +01:00
string string: Add JOIN subcommand 2018-02-16 10:04:47 -05:00
Swift
Syntax Add deprecation warnings for policies CMP0054 and below 2017-11-01 11:46:53 -04:00
target_compile_features Teach target_* commands to set INTERFACE properties of IMPORTED targets 2017-10-26 09:11:04 -04:00
target_link_libraries target_link_libraries: Allow use with targets in other directories 2018-05-15 10:22:35 -04:00
TargetObjects Tests: Use full output paths in file(GENERATE) calls 2017-06-08 13:31:33 -04:00
TargetPolicies Do not produce legacy _LIB_DEPENDS cache entries 2018-03-07 07:48:40 -05:00
TargetPropertyGeneratorExpressions Tests: Speed up RunCMake.TargetPropertyGeneratorExpressions 2018-01-25 12:08:13 -05:00
TargetSources VS,Xcode: Add CMakeLists.txt sources without mutating targets 2017-10-18 14:24:07 -04:00
test_include_dirs GENERATOR_IS_MULTI_CONFIG: Use for multi-config checks in Tests 2017-12-30 09:35:56 +11:00
ToolchainFile
try_compile CUDA: Port test cases to Windows with MSVC host compiler 2017-01-12 10:39:04 -05:00
try_run
variable_watch variable_watch: trigger on variables set via PARENT_SCOPE 2018-04-11 15:02:07 -04:00
VisibilityPreset
VS10Project cmVisualStudio10TargetGenerator: issue warning when adding static C# lib 2018-05-07 07:20:46 +02:00
VSSolution VS: Add SolutionGuid to generated .sln files 2017-07-11 10:41:28 -04:00
while
WorkingDirectory cmWorkingDirectory: Check success of current dir changes 2018-03-08 20:07:14 +11:00
WriteCompilerDetectionHeader WCDH: introduce BARE_FEATURES 2018-04-03 20:56:28 +02:00
XcodeProject Restore support for explicitly referenced CMakeLists.txt sources 2018-04-13 09:41:06 -04:00
CMakeLists.txt FindLua: Add tests for this module 2018-05-24 11:19:40 -04:00
exit_code.c execute_process: Add option to get results of every child 2017-06-10 08:03:06 -04:00
pseudo_cppcheck.c Clean up iwyu code to not be one big if statement. 2017-09-13 17:44:49 -04:00
pseudo_cpplint.c Add properties to run the cpplint style checker with the compiler 2017-01-23 14:47:13 -05:00
pseudo_emulator_custom_command.c
pseudo_emulator.c
pseudo_iwyu.c
pseudo_tidy.c
README.rst Tests: Update RunCMake/README.rst to clarify meaning of -result.txt 2017-09-14 14:15:26 -04:00
RunCMake.cmake Drop Visual Studio 8 2005 generator 2018-04-02 10:08:10 -04:00
RunCTest.cmake

This directory contains tests that run CMake to configure a project
but do not actually build anything.  To add a test:

1. Add a subdirectory named for the test, say ``<Test>/``.

2. In ``./CMakeLists.txt`` call ``add_RunCMake_test`` and pass the
   test directory name ``<Test>``.

3. Create script ``<Test>/RunCMakeTest.cmake`` in the directory containing::

    include(RunCMake)
    run_cmake(SubTest1)
    ...
    run_cmake(SubTestN)

   where ``SubTest1`` through ``SubTestN`` are sub-test names each
   corresponding to an independent CMake run and project configuration.

   One may also add calls of the form::

    run_cmake_command(SubTestI ${CMAKE_COMMAND} ...)

   to fully customize the test case command-line.

   Alternatively, if the test is to cover running ``ctest -S`` then use::

    include(RunCTest)
    run_ctest(SubTest1)
    ...
    run_ctest(SubTestN)

   and create ``test.cmake.in``, ``CTestConfig.cmake.in``, and
   ``CMakeLists.txt.in`` files to be configured for each case.

4. Create file ``<Test>/CMakeLists.txt`` in the directory containing::

    cmake_minimum_required(...)
    project(${RunCMake_TEST} NONE) # or languages needed
    include(${RunCMake_TEST}.cmake)

   where ``${RunCMake_TEST}`` is literal.  A value for ``RunCMake_TEST``
   will be passed to CMake by the ``run_cmake`` macro when running each
   sub-test.

5. Create a ``<Test>/<SubTest>.cmake`` file for each sub-test named
   above containing the actual test code.  Optionally create files
   containing expected test results:

   ``<SubTest>-result.txt``
    Regex matching expected process result, if not ``0``
   ``<SubTest>-stdout.txt``
    Regex matching expected stdout content
   ``<SubTest>-stderr.txt``
    Regex matching expected stderr content, if not ``^$``
   ``<SubTest>-check.cmake``
    Custom result check.

   Note that trailing newlines will be stripped from actual and expected
   test output before matching against the stdout and stderr expressions.
   The code in ``<SubTest>-check.cmake`` may use variables

   ``RunCMake_TEST_SOURCE_DIR``
    Top of test source tree
   ``RunCMake_TEST_BINARY_DIR``
    Top of test binary tree

   and an failure must store a message in ``RunCMake_TEST_FAILED``.