CMake/Tests/RunCMake
Alexis Murzeau 42db2ebc75 Ninja: Use binary dir for `$subdir/all` targets
The targets added by commit v3.6.0-rc1~240^2~2 (Ninja: Add `$subdir/all`
targets, 2016-03-11) use as `$subdir` the relative path from the top of
the source tree to the current source directory.  This is not correct
when using `add_subdirectory(test test_bin)`.  Instead we need to use
the relative path from the top of the binary tree to the current binary
directory as was done for related targets by commit v3.7.0-rc1~268^2
(Ninja: Add `$subdir/{test,install,package}` targets, 2016-08-05).
2016-10-24 09:49:23 -04:00
..
Android Android: Fix support for cxxabi.h with libc++ 2016-10-07 09:53:51 -04:00
AndroidMK Android: Record use of C++ by static libs in exported Android.mk files 2016-10-07 15:02:42 -04:00
AndroidTestUtilities AndroidTestUtilities: Add module to help drive Android device tests 2016-09-30 13:49:47 -04:00
AutoExportDll VS: Fix WINDOWS_EXPORT_ALL_SYMBOLS for object libraries 2016-07-21 11:05:22 -04:00
BuildDepends Use string(APPEND) in Tests 2016-07-28 00:43:04 +02:00
CMP0004
CMP0019 cmMakefile: Remove special handling of LINK_DIRECTORIES property. 2015-07-18 13:56:48 +02:00
CMP0022 Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CMP0026 Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CMP0027
CMP0028 RunCMake: Remove unneeded files. 2015-02-09 19:15:04 +01:00
CMP0037 Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CMP0038 Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CMP0039 RunCMake: Remove unneeded files. 2015-02-09 19:15:04 +01:00
CMP0040 Tests: Fix RunCMake.CMP0040 custom command syntax 2016-08-24 10:56:57 -04:00
CMP0041 Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CMP0042 Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CMP0043 Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CMP0045 Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CMP0046 Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CMP0049 Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CMP0050 Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CMP0051 Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CMP0053
CMP0054 Use string(APPEND) in Tests 2016-07-28 00:43:04 +02:00
CMP0055 RunCMake: Remove unneeded files. 2015-02-09 19:15:04 +01:00
CMP0057 if: Implement new IN_LIST operator 2015-04-30 10:21:19 -04:00
CMP0059 CMP0059: Fix typo in policy description 2016-05-02 15:16:07 -04:00
CMP0060 Link libraries by full path even in implicit directories 2015-04-09 11:29:18 -04:00
CMP0064 CMP0064: Fix recorded version of introduction to be 3.4 2015-09-21 10:05:02 -04:00
CMP0065 Fix typos. 2016-07-10 11:05:56 +02:00
COMPILE_LANGUAGE-genex Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CPack Tests: Add newline to RunCMake.CPack_RPM SOURCE_PACKAGE case 2016-09-28 09:07:42 -04:00
CPackConfig Introduction of CPACK_VERBATIM_VARIABLES variable 2015-09-20 23:39:03 +02:00
CPackInstallProperties Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CPackSymlinks Tests: Add case for CPack source package with symlinks 2015-04-06 08:52:54 -04:00
CTest Tests: Fix RunCMake.CTest output match to tolerate line number changes 2016-09-27 15:04:27 -04:00
CTestCommandLine CTest: Fix regression in handling of a RUN_SERIAL test that fails 2015-10-23 09:55:25 -04:00
CTestTimeoutAfterMatch CTest: Optionally use a secondary test timeout after matching output 2016-03-22 11:17:55 -04:00
CheckModules RunCMake: Expect empty output by default. 2014-12-31 16:34:34 +01:00
ClangTidy Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CommandLine server-mode: Introduce cmServerConnection 2016-09-22 08:06:38 -04:00
CommandLineTar Tests: Consolidate, refactor and extend -E tar tests 2015-04-10 08:32:32 -04:00
CompatibleInterface Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CompileDefinitions CompileDefinitions: Add unit test for setting empty content. 2015-07-22 21:23:49 +02:00
CompileFeatures Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CompilerChange
CompilerLauncher Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
CompilerNotFound nmake/jom: Only warn about bad VS environment if compiler not found. 2015-08-06 17:32:43 +00:00
Configure cmMakefile: Restore nested error logic use of cmExecutionStatus 2016-09-06 16:20:39 -04:00
CrosscompilingEmulator Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
DisallowedCommands RunCMake: Remove unneeded files. 2015-02-09 19:15:04 +01:00
ExportWithoutLanguage Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
ExternalData ExternalData: Add option to recursively match under directories 2015-03-27 14:44:54 -04:00
ExternalProject ExternalProject: Fix regression in passing list to CMAKE_CACHE_ARGS 2016-10-10 14:40:12 -04:00
FPHSA RunCMake: Expect empty output by default. 2014-12-31 16:34:34 +01:00
FeatureSummary FeatureSummary: Print each feature info only once 2015-02-23 11:39:17 -05:00
File_Generate Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
FindMatlab Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
FindPkgConfig Teach find_library and find_package to search lib32 paths (#11260) 2016-06-10 11:09:16 -04:00
Framework Tests: Fix RunCMake.Framework on case sensitive file systems. 2016-08-09 16:00:27 -04:00
GNUInstallDirs GNUInstallDirs: Add special cases for certain prefixes 2015-06-18 08:59:34 -04:00
GenerateExportHeader Tests: Refactor GenerateExportHeader test code 2016-09-12 10:29:20 -04:00
GeneratorExpression Genex: Diagnose invalid LINK_ONLY usage instead of crashing 2016-09-05 09:06:00 -04:00
GeneratorPlatform VS15: Add Visual Studio 15 generator 2016-09-07 15:49:08 -04:00
GeneratorToolset VS15: Add Visual Studio 15 generator 2016-09-07 15:49:08 -04:00
IfacePaths Tests: Fix failures when running under the default install prefix (#15566) 2015-05-14 10:07:37 -04:00
IncludeWhatYouUse Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
IncompatibleQt Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
Languages Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
LinkStatic Tests: Move LINK_SEARCH_{START,END}_STATIC case to dedicated test 2015-09-02 16:11:29 -04:00
LinkWhatYouUse Add options to run `ldd -u -r` as a "link-what-you-use" tool 2016-06-17 10:56:40 -04:00
Make add_custom_command: Add DEPFILE option for Ninja 2016-08-30 09:05:18 -04:00
Ninja Ninja: Use binary dir for `$subdir/all` targets 2016-10-24 09:49:23 -04:00
ObjectLibrary Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
ObsoleteQtMacros Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
PolicyScope cmListFileBacktrace: Refactor storage to provide efficient value semantics 2016-04-18 09:21:19 -04:00
PositionIndependentCode Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
Swift Swift: Remove positive Swift language tests 2015-09-06 18:14:35 +02:00
Syntax Improve error message on unexpected end of file 2016-08-30 13:53:15 -04:00
TargetObjects
TargetPolicies Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
TargetPropertyGeneratorExpressions Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
TargetSources Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
ToolchainFile Honor CMAKE_*_LINKER_FLAGS[_<CONFIG>]_INIT set in toolchain files 2016-07-14 15:47:32 -04:00
VS10Project Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
VSSolution VS: Fix default target support for targets nested inside a folder 2016-03-23 13:22:15 -04:00
VisibilityPreset CMP0063: Split unit test by target type. 2015-10-20 23:58:48 +02:00
WriteCompilerDetectionHeader
XcodeProject Fix XCODE_ATTRIBUTE_..._LOCATION target property lookup 2016-09-22 11:29:52 -04:00
add_custom_command Make the add_custom_command output more predictable 2016-09-19 08:49:46 -04:00
add_custom_target Ninja: Fix inter-target order-only dependencies of custom commands 2016-07-20 13:12:24 -04:00
add_dependencies
add_subdirectory Xcode: Add targets marked as EXCLUDE_FROM_ALL to project (#16101) 2016-08-31 09:16:44 -04:00
alias_targets Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
build_command CTest: Stop telling 'make' to ignore errors with -i 2015-05-12 09:06:49 -04:00
cmake_minimum_required
cmake_parse_arguments cmake_parse_arguments: Add additional unit tests 2016-09-28 15:20:42 -04:00
configure_file Tests: Add more signature tests to RunCMake.configure_file test 2015-03-09 09:17:59 -04:00
continue Use string(APPEND) in Tests 2016-07-28 00:43:04 +02:00
ctest_build CTest: Optionally add a ChangeId attribute on XML Site tags 2015-07-17 10:26:28 -04:00
ctest_cmake_error CTest: Add CAPTURE_CMAKE_ERROR val to `ctest_*` commands 2016-09-20 13:14:20 -04:00
ctest_configure ctest_configure: Add QUIET option 2015-02-23 10:01:59 -05:00
ctest_coverage ctest_coverage: Add QUIET option 2015-02-23 10:02:00 -05:00
ctest_fixtures CTest: Add support for test fixtures 2016-09-20 14:37:38 -04:00
ctest_memcheck Tests: Guard more CTest tests against parallel execution. 2015-04-27 22:03:40 +02:00
ctest_start Tests: Move CTestTestConfigFileInBuildDir into RunCMake.ctest_start 2015-07-14 09:32:53 -04:00
ctest_submit Tests: Extend ctest_submit host lookup failure matching (#15958) 2016-02-08 09:25:21 -05:00
ctest_test Tests: Disable parallel test execution while running ctest_test 2015-10-27 21:44:04 +01:00
ctest_upload ctest_upload: Add QUIET option 2015-02-23 10:02:00 -05:00
execute_process execute_process: Improve stdout/stderr merging 2015-05-07 14:40:38 -04:00
export export: Reject custom target exports earlier (#15657) 2015-07-21 14:39:10 -04:00
file Merge topic 'file-curl-httpheader' 2016-09-16 10:21:23 -04:00
find_dependency
find_file Drop find_(library|file|path) prefixes from PATH on non-Windows 2016-05-09 12:58:08 -04:00
find_library Drop find_(library|file|path) prefixes from PATH on non-Windows 2016-05-09 12:58:08 -04:00
find_package cmListFileBacktrace: Refactor storage to provide efficient value semantics 2016-04-18 09:21:19 -04:00
find_path find_path: Fix location of <dir/header.h> in a framework on OS X 2016-06-07 09:04:35 -04:00
find_program Merge topic 'fix-find_program-regression' 2015-11-02 09:09:46 -05:00
get_filename_component Tests: Use upper-case drive letters in RunCMake.get_filename_component 2016-09-15 08:39:18 -04:00
get_property Add directory properties to get source and binary directories 2016-09-19 14:00:50 -04:00
if Use string(APPEND) in Tests 2016-07-28 00:43:04 +02:00
include Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
include_directories include_directories: Fix regression in BEFORE option (#15693) 2015-08-21 15:21:37 -04:00
include_external_msproject Use string(APPEND) in Tests 2016-07-28 00:43:04 +02:00
install Use string(APPEND) in Tests 2016-07-28 00:43:04 +02:00
interface_library Allow add_dependencies() on INTERFACE libraries (#15414) 2015-03-27 16:25:09 -04:00
list list: Add FILTER subcommand (#3986) 2016-02-03 11:13:17 -05:00
message cmake: Issue message independent of cmMakefile definition 2016-06-12 18:38:33 +02:00
no_install_prefix RunCMake: Remove unneeded files. 2015-02-09 19:15:04 +01:00
project project: Fix support for explicit RC language 2016-09-28 10:34:57 -04:00
return
set
set_property Tests: Cover set_property for buildsystem directory properties 2015-09-11 19:13:25 +02:00
string string: add APPEND subcommand 2015-07-07 09:23:21 -04:00
target_compile_features Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
target_link_libraries Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
try_compile try_compile: Add policy CMP0066 to honor CMAKE_<LANG>_FLAGS_<CONFIG> 2016-06-29 09:11:02 -04:00
try_run Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
variable_watch
while cmListFileBacktrace: Refactor storage to provide efficient value semantics 2016-04-18 09:21:19 -04:00
CMakeLists.txt Merge topic 'add-setup-projects-tests-module' 2016-10-01 08:20:27 -04:00
README.rst Tests: Split RunCTest helper out of RunCMake.CTest(Submit|Memcheck) 2015-02-19 11:26:44 -05:00
RunCMake.cmake Use string(APPEND) in Tests 2016-07-28 00:43:04 +02:00
RunCTest.cmake Tests: Split RunCTest helper out of RunCMake.CTest(Submit|Memcheck) 2015-02-19 11:26:44 -05:00
pseudo_emulator.c Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
pseudo_emulator_custom_command.c Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00
pseudo_iwyu.c Add options to run include-what-you-use with the compiler 2015-05-19 13:16:29 -04:00
pseudo_tidy.c Revise C++ coding style using clang-format 2016-05-16 16:05:19 -04:00

README.rst

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``
    Process result expected 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``.