CMake/Tests
Brad King 40b9cd0f61 CMP0022: Fix link language propagation in NEW behavior
The languages used in compiling STATIC libraries need to be propagated
to dependents regardless of the settings of INTERFACE_LINK_LIBRARIES or
CMP0022.  They are independent of the libraries in the link interface.

Prior to commit v2.8.12~192^2~2 (Introduce the INTERFACE_LINK_LIBRARIES
property, 2013-06-04) the cmTarget::ComputeLinkInterface code path for
"explicitLibraries" could never be taken for STATIC libraries, so the
logic to propagate languages existed only in the non-explicitLibraries
code path.  After that commit, INTERFACE_LINK_LIBRARIES could be set for
STATIC libraries to cause the "explicitLibraries" code path to be taken.
The commit also left the old non-explicitLibraries code path conditional
on CMP0022 not being set to NEW.  Thus link language propagation was
left missing from two cases by that commit.

The explicitLibraries code path was fixed to propagate languages by
commit v2.8.12~149^2~1 (cmTarget: Fix iface libraries and languages for
static libraries, 2013-07-26).  However, the non-explicitLibraries case
was never taught to propagate languages when CMP0022 is set to NEW.  Fix
that now.  Factor the logic to propagate link languages out of the link
interface libraries conditions so that it always occurs.  Update
Tests/Fortran to set CMP0022 to NEW to test this case (because the test
passes only if link language propagation works).
2014-05-19 09:11:39 -04:00
..
AliasTarget get_property: Fix testing ALIASED_TARGET target property (#14670) 2014-01-04 11:28:57 +01:00
Architecture Xcode: Fix test architecture selection for Xcode >= 5 2013-10-02 12:48:20 -04:00
ArgumentExpansion Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
Assembler Tests/Assembler: Drop -g when generating sample assembly source 2013-11-01 10:55:58 -04:00
BuildDepends Xcode: Teach BuildDepends test that Xcode >= 5 needs no help 2013-10-08 14:21:25 -04:00
BundleGeneratorTest Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
BundleTest Tests/BundleTest: Drop use of ChangeLog.txt 2014-02-07 13:35:31 -05:00
BundleUtilities Tests: Don't read the LOCATION property from build targets. 2013-11-19 18:07:27 +01:00
CFBundleTest CFBundle test: Add isysroot argument when calling Rez. 2013-11-06 06:42:44 -07:00
CMakeCommands cmTarget: Don't update IMPORTED target compilation properties 2014-01-04 11:28:57 +01:00
CMakeLib cmRST: Add support for the note and productionlist directives 2013-10-30 10:26:29 -04:00
CMakeOnly Merge topic 'CheckStructHasMember_CXX' 2013-10-08 09:53:37 -04:00
CMakeTestAllGenerators Ensure libgmp-10.dll is in the PATH for CMakeTestAllGenerators 2011-07-29 11:13:33 -04:00
CMakeTestBadCommandLines Add test CMakeTestBadCommandLines. Also add --graphviz arg to cmake invoked during the CPackComponents test. The purpose of each is to increase coverage of cmake.cxx. 2009-10-27 12:18:41 -04:00
CMakeTestMultipleConfigures Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
CMakeTests file DOWNLOAD: Test non-zero return status. 2014-01-15 19:43:25 -05:00
COnly Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
CPackComponents Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
CPackComponentsForAll cpack: For DragNDrop generator, add sysroot option when calling Rez. 2013-10-31 20:25:12 -06:00
CPackTestAllGenerators Tests: Use the right path to CPack value for running CPack tests 2012-11-29 15:49:36 -05:00
CPackWiXGenerator CPackWiX: Add support for CPACK_CREATE_DESKTOP_LINKS 2014-02-08 19:19:33 +01:00
CTestBuildCommandProjectInSubdir Tests: Simplify CTest.BuildCommand.ProjectInSubdir configuration 2013-11-18 11:30:49 -05:00
CTestConfig Tests: Add generator toolset support 2013-02-07 11:09:56 -05:00
CTestLimitDashJ Add CTestLimitDashJ test (#12904) 2013-01-03 13:37:50 -05:00
CTestScriptMode Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
CTestTest Fix wording of "the the" typos throughout text 2014-01-03 11:35:32 -05:00
CTestTest2 CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestBadExe CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestBadGenerator ctest_build: Do not crash on bad generator name 2014-05-07 11:02:16 -04:00
CTestTestChecksum CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestConfigFileInBuildDir Tests: Add generator toolset support 2013-02-07 11:09:56 -05:00
CTestTestCostSerial CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestCrash CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestCycle CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestDepends CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestEmptyBinaryDirectory Tests: added test for ctest_empty_binary_directory() 2013-11-01 21:32:16 +01:00
CTestTestFailedSubmits Tests: Add generator toolset support 2013-02-07 11:09:56 -05:00
CTestTestFailure CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestFdSetSize CTest: Add test for running many tests in parallel 2013-03-22 09:02:12 -04:00
CTestTestLaunchers Tests: Add test for CTEST_USE_LAUNCHERS capture of custom commands 2013-10-31 09:29:55 -04:00
CTestTestMemcheck Tests: allow valgrind test to pass with symlinked build dir 2013-12-15 00:31:14 +01:00
CTestTestMissingDependsExe CTest: fix regressions introduced by the ctest-fix-run-serial topic 2013-12-23 15:31:15 +01:00
CTestTestParallel CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestResourceLock CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestRunScript Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
CTestTestScheduler CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestSerialInDepends CTest: fix dashboard issues associated with the ctest-fix-run-serial topic 2013-10-25 21:39:58 +02:00
CTestTestSerialOrder CTest: fix regressions introduced by the ctest-fix-run-serial topic 2013-12-23 15:31:15 +01:00
CTestTestSkipReturnCode allow to mark a test as "Not Run" with a specific return code (#8466) 2014-01-14 23:57:40 +01:00
CTestTestStopTime Tests: use string(TIMESTAMP) instead of system and locale specific date/time 2013-10-26 21:09:37 +02:00
CTestTestSubdir CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestTimeout CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestUpload CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CTestTestZeroTimeout CTestTest*: Update minimum required CMake to 2.4 2013-10-23 08:54:31 -04:00
CheckCompilerRelatedVariables VS12: Add Visual Studio 12 generator (#14251) 2013-06-28 18:13:14 -04:00
CommandLineTest Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
CompatibleInterface Genex: Add EQUAL expression. 2014-01-06 17:25:09 +01:00
CompileCommandOutput Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
CompileDefinitions cmTarget: Deprecate COMPILE_DEFINITIONS_ properties with a policy. 2014-01-08 16:41:34 +01:00
CompileOptions Add generator expressions for compiler versions. 2013-06-28 14:32:58 +02:00
Complex Drop use of configure_file IMMEDIATE option 2013-11-13 10:12:17 -05:00
ComplexOneConfig Drop use of configure_file IMMEDIATE option 2013-11-13 10:12:17 -05:00
Contracts Tests/Contracts: Submit notes with VTK build 2013-12-19 10:01:14 -05:00
CrossCompile Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
CustComDepend Remove trailing whitespace from most CMake and C/C++ code 2012-08-13 14:18:39 -04:00
CustomCommand Tests: Don't read the LOCATION property from build targets. 2013-11-19 18:07:27 +01:00
CustomCommandWorkingDirectory Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
CxxOnly Fix CXX/Fortran MODULE flags when enabled before C (#12929) 2012-02-03 15:45:13 -05:00
Dependency Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
DoubleProject Fix the case where cmake --build failed with two project cmds in one file. 2011-12-20 14:16:25 -05:00
EmptyDepends Watcom: Avoid prompt from wmake about dll with no exports... 2012-11-28 12:11:52 -05:00
EmptyLibrary Add test that CMake errors with empty libs 2010-09-30 11:01:35 -04:00
EmptyProperty set_property: Do not remove a property when APPENDing nothing 2013-07-24 10:50:15 -04:00
Environment ENH: Implement feature request from issue 7885. Allow setting environment variables on a per-test basis for ctest using set_test_properties ENVIRONMENT. 2008-11-26 14:38:43 -05:00
ExportImport install: Support generator expressions in FILES and PROGRAMS mode 2014-02-21 17:05:26 -05:00
ExternalOBJ Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
ExternalProject ExternalProject: Add option GIT_SUBMODULES 2014-01-28 12:51:27 -05:00
ExternalProjectUpdate Tests: Add generator toolset support 2013-02-07 11:09:56 -05:00
FindGTK2 FindGTK2: Add tests for components and targets in gtk and gtkmm modules 2013-10-08 10:47:06 -04:00
FindModulesExecuteAll Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
FindPackageModeMakefileTest Tests: Fix find-package mode test. 2014-01-11 13:58:23 +01:00
FindPackageTest FPHSA: Add FOUND_VAR option to specify _FOUND variable name 2013-02-22 08:31:00 -05:00
ForceInclude Map multiple /FI flags for VS < 10 (#11649) 2011-01-03 10:02:16 -05:00
Fortran CMP0022: Fix link language propagation in NEW behavior 2014-05-19 09:11:39 -04:00
FortranC Tests: Add generator toolset support 2013-02-07 11:09:56 -05:00
FortranOnly Fortran: Add support for free- and fixed-form flags 2011-08-31 10:24:43 -04:00
Framework Remove trailing whitespace from most CMake and C/C++ code 2012-08-13 14:18:39 -04:00
FunctionTest Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
GeneratorExpression Genex: Use case-sensitive comparison for COMPILER_ID. 2014-01-08 16:41:34 +01:00
IPO Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
IncludeDirectories cmTarget: Fix system include annotation propagation. 2014-01-06 17:25:10 +01:00
InterfaceLibrary InterfaceLibrary: Add test requiring MAP_IMPORTED_CONFIG whitelisting 2014-01-09 20:11:42 +01:00
InterfaceLinkLibraries Introduce the INTERFACE_LINK_LIBRARIES property. 2013-07-08 22:39:09 +02:00
JCTest Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
Java Remove trailing whitespace from most CMake and C/C++ code 2012-08-13 14:18:39 -04:00
Jump Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
LibName Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
LinkDirectory Test: Remove obsolete commented code. 2014-01-07 09:38:00 -05:00
LinkFlags Add additonal tests for the linker flags 2013-07-31 08:41:08 -04:00
LinkLanguage Test target link information invalidation 2009-10-05 09:07:09 -04:00
LinkLine Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
LinkLineOrder Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
LinkStatic Test static linking with LINK_SEARCH_START_STATIC 2011-03-04 08:37:57 -05:00
LoadCommand Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
LoadCommandOneConfig Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
MFC Tests: Only really run MFC test if we can build MFC apps (#11213) 2011-12-16 16:30:10 -05:00
MacRuntimePath OS X: Add CMP0042 to enable MACOSX_RPATH by default 2014-01-02 13:41:49 -05:00
MacroTest Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
MakeClean Tests: Don't read the LOCATION property from build targets. 2013-11-19 18:07:27 +01:00
MathTest Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
MissingInstall InstallRules: added new variable to disable generation of install rules 2014-01-08 16:28:14 +01:00
MissingSourceFile Test that missing source mentions directory (#11677) 2011-01-15 08:16:50 -05:00
Module Merge some GenerateExportHeader subtests. 2013-12-15 11:22:19 +01:00
ModuleDefinition Test generated module .def files 2012-04-02 10:54:25 -04:00
MumpsCoverage Update test data to match new coverage format. 2012-05-07 15:46:29 -04:00
NewlineArgs Remove trailing whitespace from most CMake and C/C++ code 2012-08-13 14:18:39 -04:00
ObjC++ Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
ObjectLibrary Make ExportLanguages a subtest of the ObjectLibrary test 2013-10-24 19:05:34 +02:00
OutDir Fix OutDir test on HP, MinGW, and Cygwin 2009-10-29 09:26:17 -04:00
OutOfBinary Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
OutOfSource Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
PDBDirectoryAndName VS: Separate compiler and linker PDB files (#11899, #14062) 2013-04-05 11:25:09 -04:00
PerConfig Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
Plugin Refactor the Plugin test. 2013-10-24 19:03:49 +02:00
Policy0002 Test support for OLD behavior of policy CMP0002 2009-09-28 17:34:34 -04:00
PolicyScope Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
PositionIndependentTargets Add the INTERFACE_LIBRARY target type. 2013-10-07 19:56:31 -04:00
PreOrder Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
PrecompiledHeader Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
Preprocess Test COMPILE_DEFINITIONS target property get/set/get round-trip 2013-07-24 13:25:47 -04:00
Properties Remove CMake multiline block-end command arguments 2012-08-15 16:50:29 -04:00
PythonCoverage Adding support for the Python coverage.py tool. 2013-10-08 09:20:30 -04:00
Qt4And5Automoc FindQt4: Make AUTOMOC work regardless which order Qt 4/5 is found. 2014-01-29 17:02:43 +01:00
Qt4Deploy Remove QtGui dependency in Qt4Deploy test and verify QtSql existance. 2012-02-29 07:55:31 -07:00
Qt4Targets Qt4Macros: Allow specifying a TARGET in invokations of macros. 2013-06-03 10:07:02 +02:00
QtAutoUicInterface QtAutoUic: Add INTERFACE_AUTOUIC_OPTIONS target property. 2013-11-27 19:06:12 +01:00
QtAutogen QtAutogen: Fix AUTOGEN depends on custom command output with VS. 2014-03-10 13:01:29 +01:00
QtAutomocNoQt Automoc: Don't create automoc targets if Qt is not used (#13999) 2013-03-12 17:42:02 -04:00
ReturnTest Fix spelling and typos (affecting binary data / module messages) 2013-05-07 08:39:19 -04:00
RunCMake cmTarget: Evaluate CMP0026 in calling context 2014-05-09 11:12:48 -04:00
RuntimePath Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
SBCS Visual Studio: Allow setting Single Byte Character Set (#12189) 2012-02-17 11:30:23 -05:00
SameName Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
SetLang Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
Simple Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
SimpleCOnly Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
SimpleExclude Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
SimpleInstall Tests: Teach SimpleInstall to use "cmake --build" 2013-11-18 08:26:22 -05:00
SimpleInstallS2 Tests: Teach SimpleInstall to use "cmake --build" 2013-11-18 08:26:22 -05:00
SourceGroups Remove trailing whitespace from most CMake and C/C++ code 2012-08-13 14:18:39 -04:00
StagingPrefix Introduce CMAKE_STAGING_PREFIX variable. 2013-11-21 11:48:03 +01:00
StringFileTest string: Add MAKE_C_IDENTIFIER subcommand 2013-05-21 15:29:34 -04:00
SubDir Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
SubDirSpaces Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
SubProject ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
SwigTest Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
SystemInformation Tests: Remove some trailing black lines. 2014-02-17 18:54:53 +01:00
TarTest Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
TargetName Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
TestDriver Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00
Testing Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
TestsWorkingDirectory Fix XCode -> Xcode typos, notably in man page (#12231) 2011-05-31 09:13:00 -04:00
TryCompile Merge topic 'try_compile-COPY_FILE_ERROR' 2013-07-15 09:33:32 -04:00
Tutorial Tests: Don't read the LOCATION property from build targets. 2013-11-19 18:07:27 +01:00
Unset unset: Add PARENT_SCOPE option 2013-10-08 08:37:50 -04:00
VSExcludeFromDefaultBuild Add tests for EXCLUDE_FROM_DEFAULT_BUILD 2012-11-13 09:08:42 -05:00
VSExternalInclude VS12: Add Visual Studio 12 generator (#14251) 2013-06-28 18:13:14 -04:00
VSGNUFortran Tests/VSGNUFortran: Avoid C++ comment in C code (#13314) 2012-06-18 16:18:27 -04:00
VSMidl VSMidl Test: Use correct include_directories with VS6 (#11461) 2011-01-06 09:12:20 -05:00
VSProjectInSubdir VS: Add test for building MSBuild project in subdir 2013-04-12 11:35:36 -04:00
VSResource Add support for Visual Studio project-specific globals (#8707) 2011-07-29 10:04:36 -04:00
VSWindowsFormsResx VS: Add Resx configuration to the vcxproj file 2013-06-28 09:23:41 -04:00
VariableUnusedViaSet Add test for unused detection via setting it 2010-09-16 13:52:54 -04:00
VariableUnusedViaUnset Fix typo in VariableUnusedViaUnset test 2010-09-17 10:04:18 -04:00
VariableUsage Add tests for unused command line variables 2010-09-02 11:33:57 -04:00
VisibilityInlinesHidden VisibilityInlinesHidden: only apply -fvisibility-inlines-hidden to C++ sources 2014-02-01 09:55:24 +01:00
WarnUnusedCliUnused CLI: Suppress the unused warning if the key value pair is cached. 2013-06-04 12:38:56 +02:00
Wrapping Tests: Don't read the LOCATION property from build targets. 2013-11-19 18:07:27 +01:00
X11 Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
iOSNavApp Xcode: Add test to demonstrate iOS project in Xcode 2011-09-12 15:46:24 -04:00
.NoDartCoverage clean up coverage some 2002-12-03 11:21:12 -05:00
BootstrapTest.cmake Tests: Launch BootstrapTest through cmake instead of ctest 2013-11-18 08:26:22 -05:00
CMakeBuildTest.cmake.in Tests: Add generator toolset support 2013-02-07 11:09:56 -05:00
CMakeCopyright.cmake Copyright.txt: Add test to check year range 2013-11-12 16:35:26 -05:00
CMakeInstall.cmake Tests: Launch CMake.Install test through 'cmake --build' 2013-11-18 08:26:22 -05:00
CMakeLists.txt ctest_build: Do not crash on bad generator name 2014-05-07 11:02:16 -04:00
CTestUpdateBZR.cmake.in Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
CTestUpdateCVS.cmake.in Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
CTestUpdateCommon.cmake ctest_update: Handle P4 unknown revisions more robustly 2014-01-22 08:33:33 -05:00
CTestUpdateGIT.cmake.in CTest: Fix ctest_update with 'HEAD' file in source tree 2013-02-28 11:52:30 -05:00
CTestUpdateGIT.sh.in ctest_update: Support Git upstream branch rewrites 2010-06-08 16:50:17 -04:00
CTestUpdateHG.cmake.in Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
CTestUpdateP4.cmake.in ctest_update: Do not remove the p4 depot name 2013-11-01 08:52:26 -04:00
CTestUpdateSVN.cmake.in Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
CheckFortran.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
EnforceConfig.cmake.in Remove CMake-language block-end command arguments 2012-08-13 14:19:16 -04:00
README Add stronger infrastructure for CMake-only tests 2012-03-12 09:33:21 -04:00
RegexEscapeString.cmake Fix test failures caused by regexp-sensitive characters in the build paths 2013-06-03 16:51:21 +02:00
bootstrap.bat.in Enable BootstrapTest on MSYS 2010-06-11 14:30:44 -04:00
test_clean.cmake.in Convert CMake-language commands to lower case 2012-08-13 14:19:16 -04:00

README

If you think about adding a new testcase then here is a small checklist you
can run through to find a proper place for it. Go through the list from the
beginning and stop once you find something that matches your tests needs,
i.e. if you will test a module and only need the configure mode use the
instructions from section 2, not 3.

1. Your testcase can run in CMake script mode, i.e. "cmake -P something"

Put your test in Tests/CMakeTests/ directory as a .cmake.in file. It will be
put into the test binary directory by configure_file(... @ONLY) and run from
there. Use the AddCMakeTest() macro in Tests/CMakeTests/CMakeLists.txt to add
your test to the test runs.

2. Your test needs CMake to run in configure mode, but will not build anything

This includes tests that will build something using try_compile() and friends,
but nothing that expects add_executable(), add_library(), or add_test() to run.

If the test configures the project only once and it must succeed then put it
into the Tests/CMakeOnly/ directory.  Create a subdirectory named like your
test and write the CMakeLists.txt you need into that subdirectory. Use the
add_CMakeOnly_test() macro from Tests/CMakeOnly/CMakeLists.txt to add your
test to the test runs.

If the test configures the project with multiple variations and verifies
success or failure each time then put it into the Tests/RunCMake/ directory.
Read the instructions in Tests/RunCMake/CMakeLists.txt to add a test.

3. If you are testing something from the Modules directory

Put your test in the Tests/Modules/ directory. Create a subdirectory there
named after your test. Use the ADD_TEST_MACRO macro from Tests/CMakeLists.txt
to add your test to the test run. If you have put your stuff in
Tests/Modules/Foo then you call it using ADD_TEST_MACRO(Module.Foo Foo).

4. You are doing other stuff.

Find a good place ;) In doubt mail to cmake-developers@cmake.org and ask for
advise.