summaryrefslogtreecommitdiff
path: root/Tests
diff options
context:
space:
mode:
Diffstat (limited to 'Tests')
-rw-r--r--Tests/CMakeGUI/CMakeGUITest.cxx27
-rw-r--r--Tests/CMakeGUI/QCMakePresetComboBoxTest.cxx6
-rw-r--r--Tests/CMakeGUI/QCMakePresetItemModelTest.cxx12
-rw-r--r--Tests/CMakeGUI/QCMakePresetTest.cxx11
-rw-r--r--Tests/ConfigSources/CMakeLists.txt13
-rw-r--r--Tests/RunCMake/CMP0111/CMP0111-WARN-stderr.txt21
-rw-r--r--Tests/RunCMake/CMakeLists.txt2
-rw-r--r--Tests/RunCMake/CMakePresets/ArchToolsetStrategyDefault-result.txt (renamed from Tests/RunCMake/CMakePresets/CMakeGeneratorConfigDefault-result.txt)0
-rw-r--r--Tests/RunCMake/CMakePresets/ArchToolsetStrategyDefault-stderr.txt (renamed from Tests/RunCMake/CMakePresets/CMakeGeneratorConfigDefault-stderr.txt)0
-rw-r--r--Tests/RunCMake/CMakePresets/ArchToolsetStrategyIgnore.cmake (renamed from Tests/RunCMake/CMakePresets/CMakeGeneratorConfigIgnore.cmake)0
-rw-r--r--Tests/RunCMake/CMakePresets/ArchToolsetStrategyNone-result.txt (renamed from Tests/RunCMake/CMakePresets/CMakeGeneratorConfigNone-result.txt)0
-rw-r--r--Tests/RunCMake/CMakePresets/ArchToolsetStrategyNone-stderr.txt (renamed from Tests/RunCMake/CMakePresets/CMakeGeneratorConfigNone-stderr.txt)0
-rw-r--r--Tests/RunCMake/CMakePresets/CMakePresets.json.in82
-rw-r--r--Tests/RunCMake/CMakePresets/DocumentationExample.cmake4
-rw-r--r--Tests/RunCMake/CMakePresets/EmptyEnv-stderr.txt3
-rw-r--r--Tests/RunCMake/CMakePresets/EmptyEnv.json.in (renamed from Tests/RunCMake/CMakePresets/InvalidCMakeGeneratorConfig.json.in)6
-rw-r--r--Tests/RunCMake/CMakePresets/EmptyPenv-stderr.txt3
-rw-r--r--Tests/RunCMake/CMakePresets/EmptyPenv.json.in (renamed from Tests/RunCMake/CMakePresets/UnknownCMakeGeneratorConfig.json.in)6
-rw-r--r--Tests/RunCMake/CMakePresets/EnvCycle-stderr.txt3
-rw-r--r--Tests/RunCMake/CMakePresets/EnvCycle.json.in14
-rw-r--r--Tests/RunCMake/CMakePresets/Good-stdout.txt7
-rw-r--r--Tests/RunCMake/CMakePresets/Good.cmake7
-rw-r--r--Tests/RunCMake/CMakePresets/InvalidArchitectureStrategy-result.txt (renamed from Tests/RunCMake/CMakePresets/InvalidCMakeGeneratorConfig-result.txt)0
-rw-r--r--Tests/RunCMake/CMakePresets/InvalidArchitectureStrategy-stderr.txt2
-rw-r--r--Tests/RunCMake/CMakePresets/InvalidArchitectureStrategy.json.in13
-rw-r--r--Tests/RunCMake/CMakePresets/InvalidCMakeGeneratorConfig-stderr.txt2
-rw-r--r--Tests/RunCMake/CMakePresets/InvalidToolsetStrategy-result.txt (renamed from Tests/RunCMake/CMakePresets/UnknownCMakeGeneratorConfig-result.txt)0
-rw-r--r--Tests/RunCMake/CMakePresets/InvalidToolsetStrategy-stderr.txt2
-rw-r--r--Tests/RunCMake/CMakePresets/InvalidToolsetStrategy.json.in13
-rw-r--r--Tests/RunCMake/CMakePresets/ListPresets.json.in2
-rw-r--r--Tests/RunCMake/CMakePresets/NoSuchMacro-stderr.txt3
-rw-r--r--Tests/RunCMake/CMakePresets/NoSuchMacro.json.in10
-rw-r--r--Tests/RunCMake/CMakePresets/RunCMakeTest.cmake52
-rw-r--r--Tests/RunCMake/CMakePresets/UnclosedMacro-stderr.txt3
-rw-r--r--Tests/RunCMake/CMakePresets/UnclosedMacro.json.in10
-rw-r--r--Tests/RunCMake/CMakePresets/UnknownArchitectureStrategy-result.txt (renamed from Tests/RunCMake/File_Configure/BadArgGeneratorExpressionContent-result.txt)0
-rw-r--r--Tests/RunCMake/CMakePresets/UnknownArchitectureStrategy-stderr.txt2
-rw-r--r--Tests/RunCMake/CMakePresets/UnknownArchitectureStrategy.json.in13
-rw-r--r--Tests/RunCMake/CMakePresets/UnknownCMakeGeneratorConfig-stderr.txt2
-rw-r--r--Tests/RunCMake/CMakePresets/UnknownToolsetStrategy-result.txt1
-rw-r--r--Tests/RunCMake/CMakePresets/UnknownToolsetStrategy-stderr.txt2
-rw-r--r--Tests/RunCMake/CMakePresets/UnknownToolsetStrategy.json.in13
-rw-r--r--Tests/RunCMake/CMakePresets/check.cmake15
-rw-r--r--Tests/RunCMake/CMakePresets/validate_schema.py17
-rw-r--r--Tests/RunCMake/CTest/RunCMakeTest.cmake11
-rw-r--r--Tests/RunCMake/CTest/SingleConfig-test-stdout.txt8
-rw-r--r--Tests/RunCMake/CTest/SingleConfig.cmake6
-rw-r--r--Tests/RunCMake/CheckSourceCompiles/RunCMakeTest.cmake1
-rw-r--r--Tests/RunCMake/CheckSourceCompiles/UnknownArgument-result.txt1
-rw-r--r--Tests/RunCMake/CheckSourceCompiles/UnknownArgument-stderr.txt9
-rw-r--r--Tests/RunCMake/CheckSourceCompiles/UnknownArgument.cmake5
-rw-r--r--Tests/RunCMake/CheckSourceRuns/RunCMakeTest.cmake1
-rw-r--r--Tests/RunCMake/CheckSourceRuns/UnknownArgument-result.txt1
-rw-r--r--Tests/RunCMake/CheckSourceRuns/UnknownArgument-stderr.txt9
-rw-r--r--Tests/RunCMake/CheckSourceRuns/UnknownArgument.cmake5
-rw-r--r--Tests/RunCMake/CommandLine/.gitattributes2
-rw-r--r--Tests/RunCMake/CommandLine/E_cat_binary_files/binary.objbin0 -> 124 bytes
-rw-r--r--Tests/RunCMake/CommandLine/E_cat_good_binary_cat-stdout.txtbin0 -> 248 bytes
-rw-r--r--Tests/RunCMake/CommandLine/RunCMakeTest.cmake3
-rw-r--r--Tests/RunCMake/File_Configure/AngleBracketsContent-stderr.txt1
-rw-r--r--Tests/RunCMake/File_Configure/AngleBracketsContent.cmake6
-rw-r--r--Tests/RunCMake/File_Configure/BadArgGeneratorExpressionContent-stderr.txt5
-rw-r--r--Tests/RunCMake/File_Configure/BadArgGeneratorExpressionContent.cmake4
-rw-r--r--Tests/RunCMake/File_Configure/RunCMakeTest.cmake2
-rw-r--r--Tests/RunCMake/separate_arguments/NativeCommand.cmake5
-rw-r--r--Tests/RunCMake/separate_arguments/UnixCommand.cmake5
-rw-r--r--Tests/RunCMake/separate_arguments/WindowsCommand.cmake5
67 files changed, 381 insertions, 118 deletions
diff --git a/Tests/CMakeGUI/CMakeGUITest.cxx b/Tests/CMakeGUI/CMakeGUITest.cxx
index 5a6bec36f6..2b5d9730f5 100644
--- a/Tests/CMakeGUI/CMakeGUITest.cxx
+++ b/Tests/CMakeGUI/CMakeGUITest.cxx
@@ -356,16 +356,14 @@ void CMakeGUITest::changingPresets()
QCOMPARE(this->m_window->Preset->presetName(), QString{});
QCOMPARE(this->m_window->Preset->presets().size(), 0);
QCOMPARE(this->m_window->BinaryDirectory->currentText(), "");
- QCOMPARE(this->m_window->Preset->isHidden(), true);
- QCOMPARE(this->m_window->PresetLabel->isHidden(), true);
+ QCOMPARE(this->m_window->Preset->isEnabled(), false);
writePresets("build1", { "preset" });
loopSleep(1500);
QCOMPARE(this->m_window->Preset->presetName(), QString{});
QCOMPARE(this->m_window->Preset->presets().size(), 1);
QCOMPARE(this->m_window->BinaryDirectory->currentText(), "");
- QCOMPARE(this->m_window->Preset->isHidden(), false);
- QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+ QCOMPARE(this->m_window->Preset->isEnabled(), true);
this->m_window->Preset->setPresetName("preset");
loopSleep();
@@ -373,8 +371,7 @@ void CMakeGUITest::changingPresets()
QCOMPARE(this->m_window->Preset->presets().size(), 1);
QCOMPARE(this->m_window->BinaryDirectory->currentText(),
CMakeGUITest_BINARY_DIR "/changingPresets/src/build1/preset");
- QCOMPARE(this->m_window->Preset->isHidden(), false);
- QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+ QCOMPARE(this->m_window->Preset->isEnabled(), true);
writePresets("build2", { "preset2", "preset" });
loopSleep(1500);
@@ -382,8 +379,7 @@ void CMakeGUITest::changingPresets()
QCOMPARE(this->m_window->Preset->presets().size(), 2);
QCOMPARE(this->m_window->BinaryDirectory->currentText(),
CMakeGUITest_BINARY_DIR "/changingPresets/src/build1/preset");
- QCOMPARE(this->m_window->Preset->isHidden(), false);
- QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+ QCOMPARE(this->m_window->Preset->isEnabled(), true);
writePresets("build3", { "preset2" });
loopSleep(1500);
@@ -391,8 +387,7 @@ void CMakeGUITest::changingPresets()
QCOMPARE(this->m_window->Preset->presets().size(), 1);
QCOMPARE(this->m_window->BinaryDirectory->currentText(),
CMakeGUITest_BINARY_DIR "/changingPresets/src/build1/preset");
- QCOMPARE(this->m_window->Preset->isHidden(), false);
- QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+ QCOMPARE(this->m_window->Preset->isEnabled(), true);
this->m_window->Preset->setPresetName("preset2");
loopSleep();
@@ -400,8 +395,7 @@ void CMakeGUITest::changingPresets()
QCOMPARE(this->m_window->Preset->presets().size(), 1);
QCOMPARE(this->m_window->BinaryDirectory->currentText(),
CMakeGUITest_BINARY_DIR "/changingPresets/src/build3/preset2");
- QCOMPARE(this->m_window->Preset->isHidden(), false);
- QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+ QCOMPARE(this->m_window->Preset->isEnabled(), true);
QDir::root().mkpath(CMakeGUITest_BINARY_DIR "/changingPresets/src2");
QFile::copy(CMakeGUITest_BINARY_DIR "/changingPresets/src/CMakePresets.json",
@@ -414,8 +408,7 @@ void CMakeGUITest::changingPresets()
QCOMPARE(this->m_window->Preset->presets().size(), 1);
QCOMPARE(this->m_window->BinaryDirectory->currentText(),
CMakeGUITest_BINARY_DIR "/changingPresets/src/build3/preset2");
- QCOMPARE(this->m_window->Preset->isHidden(), false);
- QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+ QCOMPARE(this->m_window->Preset->isEnabled(), true);
this->m_window->Preset->setPresetName("preset2");
loopSleep();
@@ -423,8 +416,7 @@ void CMakeGUITest::changingPresets()
QCOMPARE(this->m_window->Preset->presets().size(), 1);
QCOMPARE(this->m_window->BinaryDirectory->currentText(),
CMakeGUITest_BINARY_DIR "/changingPresets/src2/build3/preset2");
- QCOMPARE(this->m_window->Preset->isHidden(), false);
- QCOMPARE(this->m_window->PresetLabel->isHidden(), false);
+ QCOMPARE(this->m_window->Preset->isEnabled(), true);
QFile(CMakeGUITest_BINARY_DIR "/changingPresets/src2/CMakePresets.json")
.remove();
@@ -433,8 +425,7 @@ void CMakeGUITest::changingPresets()
QCOMPARE(this->m_window->Preset->presets().size(), 0);
QCOMPARE(this->m_window->BinaryDirectory->currentText(),
CMakeGUITest_BINARY_DIR "/changingPresets/src2/build3/preset2");
- QCOMPARE(this->m_window->Preset->isHidden(), true);
- QCOMPARE(this->m_window->PresetLabel->isHidden(), true);
+ QCOMPARE(this->m_window->Preset->isEnabled(), false);
}
void SetupDefaultQSettings()
diff --git a/Tests/CMakeGUI/QCMakePresetComboBoxTest.cxx b/Tests/CMakeGUI/QCMakePresetComboBoxTest.cxx
index 6ee55c3e32..a95d008bba 100644
--- a/Tests/CMakeGUI/QCMakePresetComboBoxTest.cxx
+++ b/Tests/CMakeGUI/QCMakePresetComboBoxTest.cxx
@@ -24,8 +24,9 @@ void QCMakePresetComboBoxTest::changePresets()
/*description=*/"",
/*generator=*/"Ninja",
/*architecture=*/"",
+ /*setArchitecture=*/true,
/*toolset=*/"",
- /*setGenConfig=*/true,
+ /*setToolset=*/true,
/*enabled=*/true,
},
});
@@ -48,8 +49,9 @@ void QCMakePresetComboBoxTest::changePresets()
/*description=*/"",
/*generator=*/"Ninja Multi-Config",
/*architecture=*/"",
+ /*setArchitecture=*/true,
/*toolset=*/"",
- /*setGenConfig=*/true,
+ /*setToolset=*/true,
/*enabled=*/true,
},
});
diff --git a/Tests/CMakeGUI/QCMakePresetItemModelTest.cxx b/Tests/CMakeGUI/QCMakePresetItemModelTest.cxx
index ee45d39230..97dbb30fd2 100644
--- a/Tests/CMakeGUI/QCMakePresetItemModelTest.cxx
+++ b/Tests/CMakeGUI/QCMakePresetItemModelTest.cxx
@@ -32,8 +32,9 @@ void QCMakePresetItemModelTest::initTestCase_data()
/*description=*/"",
/*generator=*/"",
/*architecture=*/"",
+ /*setArchitecture=*/true,
/*toolset=*/"",
- /*setGenConfig=*/true,
+ /*setToolset=*/true,
/*enabled=*/true,
},
QCMakePreset{
@@ -42,8 +43,9 @@ void QCMakePresetItemModelTest::initTestCase_data()
/*description=*/"",
/*generator=*/"",
/*architecture=*/"",
+ /*setArchitecture=*/true,
/*toolset=*/"",
- /*setGenConfig=*/true,
+ /*setToolset=*/true,
/*enabled=*/true,
},
QCMakePreset{
@@ -52,8 +54,9 @@ void QCMakePresetItemModelTest::initTestCase_data()
/*description=*/"Long Description",
/*generator=*/"",
/*architecture=*/"",
+ /*setArchitecture=*/true,
/*toolset=*/"",
- /*setGenConfig=*/true,
+ /*setToolset=*/true,
/*enabled=*/true,
},
QCMakePreset{
@@ -62,8 +65,9 @@ void QCMakePresetItemModelTest::initTestCase_data()
/*description=*/"",
/*generator=*/"",
/*architecture=*/"",
+ /*setArchitecture=*/true,
/*toolset=*/"",
- /*setGenConfig=*/true,
+ /*setToolset=*/true,
/*enabled=*/false,
},
};
diff --git a/Tests/CMakeGUI/QCMakePresetTest.cxx b/Tests/CMakeGUI/QCMakePresetTest.cxx
index 8fd07e73bb..20810558ee 100644
--- a/Tests/CMakeGUI/QCMakePresetTest.cxx
+++ b/Tests/CMakeGUI/QCMakePresetTest.cxx
@@ -16,8 +16,9 @@ QCMakePreset makePreset()
/*description=*/"description",
/*generator=*/"generator",
/*architecture=*/"architecture",
+ /*setArchitecture=*/true,
/*toolset=*/"toolset",
- /*setGenConfig=*/true,
+ /*setToolset=*/true,
/*enabled=*/true,
};
}
@@ -69,12 +70,14 @@ void QCMakePresetTest::equality_data()
QTest::newRow("architecture")
<< makePreset(&QCMakePreset::architecture, "other-architecture") << false
<< true << false;
+ QTest::newRow("setArchitecture")
+ << makePreset(&QCMakePreset::setArchitecture, false) << false << false
+ << true;
QTest::newRow("toolset") << makePreset(&QCMakePreset::toolset,
"other-toolset")
<< false << false << true;
- QTest::newRow("setGenConfig")
- << makePreset(&QCMakePreset::setGenConfig, false) << false << false
- << true;
+ QTest::newRow("setToolset")
+ << makePreset(&QCMakePreset::setToolset, false) << false << false << true;
QTest::newRow("enabled") << makePreset(&QCMakePreset::enabled, false)
<< false << false << true;
}
diff --git a/Tests/ConfigSources/CMakeLists.txt b/Tests/ConfigSources/CMakeLists.txt
index 7b1a312c03..1db00cc8af 100644
--- a/Tests/ConfigSources/CMakeLists.txt
+++ b/Tests/ConfigSources/CMakeLists.txt
@@ -91,3 +91,16 @@ target_compile_definitions(ObjLibFromGeneratedSources PRIVATE OBJ_SHARED)
target_sources(ObjLibFromGeneratedSources PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/config_$<CONFIG>.cpp)
add_library(SharedLibFromObjLibFromGeneratedSources SHARED shared.cpp)
target_link_libraries(SharedLibFromObjLibFromGeneratedSources PRIVATE ObjLibFromGeneratedSources)
+
+
+# ---------------------------------------------------------------------------
+# Make sure that additional build-events do not confuse CMake when using generated files.
+add_library(SharedLibFromGeneratedSources SHARED)
+set_property(TARGET SharedLibFromGeneratedSources PROPERTY POSITION_INDEPENDENT_CODE 1)
+target_sources(SharedLibFromGeneratedSources PRIVATE
+ shared.cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/config_$<CONFIG>.cpp
+ )
+add_custom_command(TARGET SharedLibFromGeneratedSources POST_BUILD
+ COMMAND "${CMAKE_COMMAND}" "-E" "echo" "$<TARGET_FILE:SharedLibFromGeneratedSources>"
+ )
diff --git a/Tests/RunCMake/CMP0111/CMP0111-WARN-stderr.txt b/Tests/RunCMake/CMP0111/CMP0111-WARN-stderr.txt
index 2fe6cc8ab4..3abca0ab05 100644
--- a/Tests/RunCMake/CMP0111/CMP0111-WARN-stderr.txt
+++ b/Tests/RunCMake/CMP0111/CMP0111-WARN-stderr.txt
@@ -1,25 +1,28 @@
CMake Warning \(dev\) in CMakeLists.txt:
- Policy CMP0111 is not set: An imported target with a missing location fails
- during generation. Run "cmake --help-policy CMP0111" for policy details.
- Use the cmake_policy command to set the policy and suppress this warning.
+ Policy CMP0111 is not set: An imported target missing its location property
+ fails during generation. Run "cmake --help-policy CMP0111" for policy
+ details. Use the cmake_policy command to set the policy and suppress this
+ warning.
IMPORTED_LOCATION not set for imported target "unknown_lib"( configuration
".+")?.
This warning is for project developers. Use -Wno-dev to suppress it.
+
CMake Warning \(dev\) in CMakeLists.txt:
- Policy CMP0111 is not set: An imported target with a missing location fails
- during generation. Run "cmake --help-policy CMP0111" for policy details.
- Use the cmake_policy command to set the policy and suppress this warning.
+ Policy CMP0111 is not set: An imported target missing its location property
+ fails during generation. Run "cmake --help-policy CMP0111" for policy
+ details. Use the cmake_policy command to set the policy and suppress this
+ warning.
IMPORTED_LOCATION not set for imported target "static_lib"( configuration
".+")?.
This warning is for project developers. Use -Wno-dev to suppress it.
+
CMake Warning \(dev\) in CMakeLists.txt:
- Policy CMP0111 is not set: An imported target with a missing location fails
- during generation. Run "cmake --help-policy CMP0111" for policy details.
- Use the cmake_policy command to set the policy and suppress this warning.
+ Policy CMP0111 is not set: An imported target missing its location property
+ fails during generation. Run "cmake --help-policy CMP0111" for policy
+ details. Use the cmake_policy command to set the policy and suppress this
+ warning.
IMPORTED_IMPLIB not set for imported target "shared_lib"( configuration
".+")?.
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 63738d78a4..7b85061d26 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -769,7 +769,7 @@ add_RunCMake_test(PrecompileHeaders -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID}
-DCMAKE_C_COMPILER_VERSION=${CMAKE_C_COMPILER_VERSION})
add_RunCMake_test("UnityBuild")
-add_RunCMake_test(CMakePresets)
+add_RunCMake_test(CMakePresets -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DCMake_TEST_JSON_SCHEMA=${CMake_TEST_JSON_SCHEMA})
if(WIN32)
add_RunCMake_test(Win32GenEx)
diff --git a/Tests/RunCMake/CMakePresets/CMakeGeneratorConfigDefault-result.txt b/Tests/RunCMake/CMakePresets/ArchToolsetStrategyDefault-result.txt
index d00491fd7e..d00491fd7e 100644
--- a/Tests/RunCMake/CMakePresets/CMakeGeneratorConfigDefault-result.txt
+++ b/Tests/RunCMake/CMakePresets/ArchToolsetStrategyDefault-result.txt
diff --git a/Tests/RunCMake/CMakePresets/CMakeGeneratorConfigDefault-stderr.txt b/Tests/RunCMake/CMakePresets/ArchToolsetStrategyDefault-stderr.txt
index a3b79b6380..a3b79b6380 100644
--- a/Tests/RunCMake/CMakePresets/CMakeGeneratorConfigDefault-stderr.txt
+++ b/Tests/RunCMake/CMakePresets/ArchToolsetStrategyDefault-stderr.txt
diff --git a/Tests/RunCMake/CMakePresets/CMakeGeneratorConfigIgnore.cmake b/Tests/RunCMake/CMakePresets/ArchToolsetStrategyIgnore.cmake
index e69de29bb2..e69de29bb2 100644
--- a/Tests/RunCMake/CMakePresets/CMakeGeneratorConfigIgnore.cmake
+++ b/Tests/RunCMake/CMakePresets/ArchToolsetStrategyIgnore.cmake
diff --git a/Tests/RunCMake/CMakePresets/CMakeGeneratorConfigNone-result.txt b/Tests/RunCMake/CMakePresets/ArchToolsetStrategyNone-result.txt
index d00491fd7e..d00491fd7e 100644
--- a/Tests/RunCMake/CMakePresets/CMakeGeneratorConfigNone-result.txt
+++ b/Tests/RunCMake/CMakePresets/ArchToolsetStrategyNone-result.txt
diff --git a/Tests/RunCMake/CMakePresets/CMakeGeneratorConfigNone-stderr.txt b/Tests/RunCMake/CMakePresets/ArchToolsetStrategyNone-stderr.txt
index a3b79b6380..a3b79b6380 100644
--- a/Tests/RunCMake/CMakePresets/CMakeGeneratorConfigNone-stderr.txt
+++ b/Tests/RunCMake/CMakePresets/ArchToolsetStrategyNone-stderr.txt
diff --git a/Tests/RunCMake/CMakePresets/CMakePresets.json.in b/Tests/RunCMake/CMakePresets/CMakePresets.json.in
index 8bfc602082..a8f89ff81f 100644
--- a/Tests/RunCMake/CMakePresets/CMakePresets.json.in
+++ b/Tests/RunCMake/CMakePresets/CMakePresets.json.in
@@ -46,6 +46,22 @@
"type": "BOOL",
"value": "OFF"
},
+ "TEST_BOOL_TRUE": true,
+ "TEST_BOOL_FALSE": false,
+ "TEST_TYPED_BOOL_TRUE": {
+ "type": "STRING",
+ "value": true
+ },
+ "TEST_TYPED_BOOL_FALSE": {
+ "type": "STRING",
+ "value": false
+ },
+ "TEST_UNTYPED_BOOL_TRUE": {
+ "value": true
+ },
+ "TEST_UNTYPED_BOOL_FALSE": {
+ "value": false
+ },
"TEST_PRESET_NAME": {
"type": "STRING",
"value": "x${presetName}x"
@@ -56,6 +72,7 @@
"TEST_DOLLAR": {
"value": "${dollar}"
},
+ "TEST_SOURCE_DIR_NAME": "${sourceDirName}",
"TEST_ENV_REF": "$env{TEST_ENV_REF}",
"TEST_ENV": "$env{TEST_ENV}",
"TEST_D_ENV_REF": "$env{TEST_D_ENV_REF}",
@@ -306,16 +323,6 @@
"binaryDir": "${sourceDir}/build"
},
{
- "name": "UnclosedMacro",
- "generator": "@RunCMake_GENERATOR@",
- "binaryDir": "${sourceDir"
- },
- {
- "name": "NoSuchMacro",
- "generator": "@RunCMake_GENERATOR@",
- "binaryDir": "${noexist}"
- },
- {
"name": "VendorMacro",
"generator": "@RunCMake_GENERATOR@",
"binaryDir": "$vendor{unknown.unknownMacro}"
@@ -326,31 +333,6 @@
"binaryDir": "${sourceDir}/build"
},
{
- "name": "EnvCycle",
- "generator": "@RunCMake_GENERATOR@",
- "binaryDir": "${sourceDir}/build",
- "environment": {
- "ENV_1": "$env{ENV_2}",
- "ENV_2": "$env{ENV_1}"
- }
- },
- {
- "name": "EmptyEnv",
- "generator": "@RunCMake_GENERATOR@",
- "binaryDir": "${sourceDir}/build",
- "cacheVariables": {
- "MY_VAR": "$env{}"
- }
- },
- {
- "name": "EmptyPenv",
- "generator": "@RunCMake_GENERATOR@",
- "binaryDir": "${sourceDir}/build",
- "cacheVariables": {
- "MY_VAR": "$penv{}"
- }
- },
- {
"name": "UseHiddenPreset",
"generator": "@RunCMake_GENERATOR@",
"binaryDir": "${sourceDir}/build",
@@ -470,28 +452,38 @@
"binaryDir": "${sourceDir}/build"
},
{
- "name": "CMakeGeneratorConfigNone",
+ "name": "ArchToolsetStrategyNone",
"generator": "@RunCMake_GENERATOR@",
"architecture": "a",
"toolset": "a",
"binaryDir": "${sourceDir}/build"
},
{
- "name": "CMakeGeneratorConfigBase",
+ "name": "ArchToolsetStrategyBase",
"generator": "@RunCMake_GENERATOR@",
- "architecture": "a",
- "toolset": "a",
- "cmakeGeneratorConfig": "ignore",
+ "architecture": {
+ "value": "a",
+ "strategy": "external"
+ },
+ "toolset": {
+ "value": "a",
+ "strategy": "external"
+ },
"binaryDir": "${sourceDir}/build"
},
{
- "name": "CMakeGeneratorConfigDefault",
- "inherits": "CMakeGeneratorConfigBase",
- "cmakeGeneratorConfig": "default"
+ "name": "ArchToolsetStrategyDefault",
+ "inherits": "ArchToolsetStrategyBase",
+ "architecture": {
+ "strategy": "set"
+ },
+ "toolset": {
+ "strategy": "set"
+ }
},
{
- "name": "CMakeGeneratorConfigIgnore",
- "inherits": "CMakeGeneratorConfigBase"
+ "name": "ArchToolsetStrategyIgnore",
+ "inherits": "ArchToolsetStrategyBase"
}
]
}
diff --git a/Tests/RunCMake/CMakePresets/DocumentationExample.cmake b/Tests/RunCMake/CMakePresets/DocumentationExample.cmake
index 1f2fc002df..d459e9e23a 100644
--- a/Tests/RunCMake/CMakePresets/DocumentationExample.cmake
+++ b/Tests/RunCMake/CMakePresets/DocumentationExample.cmake
@@ -1,3 +1,5 @@
include(${CMAKE_CURRENT_LIST_DIR}/TestVariable.cmake)
-test_variable(MY_CACHE_VARIABLE "BOOL" "OFF")
+test_variable(FIRST_CACHE_VARIABLE "BOOL" "OFF")
+test_variable(SECOND_CACHE_VARIABLE "UNINITIALIZED" "ON")
+test_environment_variable(MY_ENVIRONMENT_VARIABLE "Test")
diff --git a/Tests/RunCMake/CMakePresets/EmptyEnv-stderr.txt b/Tests/RunCMake/CMakePresets/EmptyEnv-stderr.txt
index 9c9c0252b7..723ac2161b 100644
--- a/Tests/RunCMake/CMakePresets/EmptyEnv-stderr.txt
+++ b/Tests/RunCMake/CMakePresets/EmptyEnv-stderr.txt
@@ -1 +1,2 @@
-^CMake Error: Could not evaluate preset "EmptyEnv": Invalid macro expansion$
+^CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresets/EmptyEnv: Invalid macro expansion$
diff --git a/Tests/RunCMake/CMakePresets/InvalidCMakeGeneratorConfig.json.in b/Tests/RunCMake/CMakePresets/EmptyEnv.json.in
index 1479c667ad..ef0d5758b2 100644
--- a/Tests/RunCMake/CMakePresets/InvalidCMakeGeneratorConfig.json.in
+++ b/Tests/RunCMake/CMakePresets/EmptyEnv.json.in
@@ -2,10 +2,12 @@
"version": 1,
"configurePresets": [
{
- "name": "InvalidCMakeGeneratorConfig",
+ "name": "EmptyEnv",
"generator": "@RunCMake_GENERATOR@",
"binaryDir": "${sourceDir}/build",
- "cmakeGeneratorConfig": {}
+ "cacheVariables": {
+ "MY_VAR": "$env{}"
+ }
}
]
}
diff --git a/Tests/RunCMake/CMakePresets/EmptyPenv-stderr.txt b/Tests/RunCMake/CMakePresets/EmptyPenv-stderr.txt
index 395c7b4cfd..880cee6516 100644
--- a/Tests/RunCMake/CMakePresets/EmptyPenv-stderr.txt
+++ b/Tests/RunCMake/CMakePresets/EmptyPenv-stderr.txt
@@ -1 +1,2 @@
-^CMake Error: Could not evaluate preset "EmptyPenv": Invalid macro expansion$
+^CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresets/EmptyPenv: Invalid macro expansion$
diff --git a/Tests/RunCMake/CMakePresets/UnknownCMakeGeneratorConfig.json.in b/Tests/RunCMake/CMakePresets/EmptyPenv.json.in
index 900c6dfc4a..9081fe5138 100644
--- a/Tests/RunCMake/CMakePresets/UnknownCMakeGeneratorConfig.json.in
+++ b/Tests/RunCMake/CMakePresets/EmptyPenv.json.in
@@ -2,10 +2,12 @@
"version": 1,
"configurePresets": [
{
- "name": "UnknownCMakeGeneratorConfig",
+ "name": "EmptyPenv",
"generator": "@RunCMake_GENERATOR@",
"binaryDir": "${sourceDir}/build",
- "cmakeGeneratorConfig": "unknown"
+ "cacheVariables": {
+ "MY_VAR": "$penv{}"
+ }
}
]
}
diff --git a/Tests/RunCMake/CMakePresets/EnvCycle-stderr.txt b/Tests/RunCMake/CMakePresets/EnvCycle-stderr.txt
index c8568f1dc2..1d22b87232 100644
--- a/Tests/RunCMake/CMakePresets/EnvCycle-stderr.txt
+++ b/Tests/RunCMake/CMakePresets/EnvCycle-stderr.txt
@@ -1 +1,2 @@
-^CMake Error: Could not evaluate preset "EnvCycle": Invalid macro expansion$
+^CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresets/EnvCycle: Invalid macro expansion$
diff --git a/Tests/RunCMake/CMakePresets/EnvCycle.json.in b/Tests/RunCMake/CMakePresets/EnvCycle.json.in
new file mode 100644
index 0000000000..25a1349652
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/EnvCycle.json.in
@@ -0,0 +1,14 @@
+{
+ "version": 1,
+ "configurePresets": [
+ {
+ "name": "EnvCycle",
+ "generator": "@RunCMake_GENERATOR@",
+ "binaryDir": "${sourceDir}/build",
+ "environment": {
+ "ENV_1": "$env{ENV_2}",
+ "ENV_2": "$env{ENV_1}"
+ }
+ }
+ ]
+}
diff --git a/Tests/RunCMake/CMakePresets/Good-stdout.txt b/Tests/RunCMake/CMakePresets/Good-stdout.txt
index ce6189ef0e..75003c770d 100644
--- a/Tests/RunCMake/CMakePresets/Good-stdout.txt
+++ b/Tests/RunCMake/CMakePresets/Good-stdout.txt
@@ -1,5 +1,7 @@
Preset CMake variables:
+ TEST_BOOL_FALSE:BOOL="FALSE"
+ TEST_BOOL_TRUE:BOOL="TRUE"
TEST_DOLLAR="\$"
TEST_D_ENV_REF="xEnvironment variablex"
TEST_D_ENV_REF_P=""
@@ -24,6 +26,7 @@ Preset CMake variables:
TEST_PRESET_NAME:STRING="xGoodx"
TEST_SOURCE_DIR:PATH="[^
]*/Tests/RunCMake/CMakePresets/Good"
+ TEST_SOURCE_DIR_NAME="Good"
TEST_SOURCE_LIST:FILEPATH="[^
]*/Tests/RunCMake/CMakePresets/Good/CMakeLists\.txt"
TEST_SOURCE_PARENT_DIR:PATH="[^
@@ -32,6 +35,10 @@ Preset CMake variables:
TEST_TRAILING_DOLLAR="a \$"
TEST_TRAILING_UNKNOWN_NAMESPACE="\$unknown{namespace"
TEST_TRUE:BOOL="TRUE"
+ TEST_TYPED_BOOL_FALSE:STRING="FALSE"
+ TEST_TYPED_BOOL_TRUE:STRING="TRUE"
+ TEST_UNTYPED_BOOL_FALSE="FALSE"
+ TEST_UNTYPED_BOOL_TRUE="TRUE"
Preset environment variables:
diff --git a/Tests/RunCMake/CMakePresets/Good.cmake b/Tests/RunCMake/CMakePresets/Good.cmake
index d8e3e2dcaf..73a618d548 100644
--- a/Tests/RunCMake/CMakePresets/Good.cmake
+++ b/Tests/RunCMake/CMakePresets/Good.cmake
@@ -8,9 +8,16 @@ test_variable(TEST_SOURCE_PARENT_DIR "PATH" "${_parent_dir}")
test_variable(TEST_SOURCE_LIST "FILEPATH" "${CMAKE_SOURCE_DIR}/CMakeLists.txt")
test_variable(TEST_TRUE "BOOL" "TRUE")
test_variable(TEST_OFF "BOOL" "OFF")
+test_variable(TEST_BOOL_TRUE "BOOL" "TRUE")
+test_variable(TEST_BOOL_FALSE "BOOL" "FALSE")
+test_variable(TEST_TYPED_BOOL_TRUE "STRING" "TRUE")
+test_variable(TEST_TYPED_BOOL_FALSE "STRING" "FALSE")
+test_variable(TEST_UNTYPED_BOOL_TRUE "UNINITIALIZED" "TRUE")
+test_variable(TEST_UNTYPED_BOOL_FALSE "UNINITIALIZED" "FALSE")
test_variable(TEST_PRESET_NAME "STRING" "xGoodx")
test_variable(TEST_GENERATOR "UNINITIALIZED" "x${CMAKE_GENERATOR}x")
test_variable(TEST_DOLLAR "UNINITIALIZED" "$")
+test_variable(TEST_SOURCE_DIR_NAME "UNINITIALIZED" "Good")
test_variable(TEST_ENV_REF "UNINITIALIZED" "Environment variable")
test_variable(TEST_ENV "UNINITIALIZED" "Environment variable")
test_variable(TEST_D_ENV_REF "UNINITIALIZED" "xEnvironment variablex")
diff --git a/Tests/RunCMake/CMakePresets/InvalidCMakeGeneratorConfig-result.txt b/Tests/RunCMake/CMakePresets/InvalidArchitectureStrategy-result.txt
index d00491fd7e..d00491fd7e 100644
--- a/Tests/RunCMake/CMakePresets/InvalidCMakeGeneratorConfig-result.txt
+++ b/Tests/RunCMake/CMakePresets/InvalidArchitectureStrategy-result.txt
diff --git a/Tests/RunCMake/CMakePresets/InvalidArchitectureStrategy-stderr.txt b/Tests/RunCMake/CMakePresets/InvalidArchitectureStrategy-stderr.txt
new file mode 100644
index 0000000000..4a4d4ce70c
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/InvalidArchitectureStrategy-stderr.txt
@@ -0,0 +1,2 @@
+^CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresets/InvalidArchitectureStrategy: Invalid preset$
diff --git a/Tests/RunCMake/CMakePresets/InvalidArchitectureStrategy.json.in b/Tests/RunCMake/CMakePresets/InvalidArchitectureStrategy.json.in
new file mode 100644
index 0000000000..9ec2cee2ee
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/InvalidArchitectureStrategy.json.in
@@ -0,0 +1,13 @@
+{
+ "version": 1,
+ "configurePresets": [
+ {
+ "name": "InvalidArchitectureStrategy",
+ "generator": "@RunCMake_GENERATOR@",
+ "binaryDir": "${sourceDir}/build",
+ "architecture": {
+ "strategy": {}
+ }
+ }
+ ]
+}
diff --git a/Tests/RunCMake/CMakePresets/InvalidCMakeGeneratorConfig-stderr.txt b/Tests/RunCMake/CMakePresets/InvalidCMakeGeneratorConfig-stderr.txt
deleted file mode 100644
index 72a20d54f1..0000000000
--- a/Tests/RunCMake/CMakePresets/InvalidCMakeGeneratorConfig-stderr.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-^CMake Error: Could not read presets from [^
-]*/Tests/RunCMake/CMakePresets/InvalidCMakeGeneratorConfig: Invalid preset$
diff --git a/Tests/RunCMake/CMakePresets/UnknownCMakeGeneratorConfig-result.txt b/Tests/RunCMake/CMakePresets/InvalidToolsetStrategy-result.txt
index d00491fd7e..d00491fd7e 100644
--- a/Tests/RunCMake/CMakePresets/UnknownCMakeGeneratorConfig-result.txt
+++ b/Tests/RunCMake/CMakePresets/InvalidToolsetStrategy-result.txt
diff --git a/Tests/RunCMake/CMakePresets/InvalidToolsetStrategy-stderr.txt b/Tests/RunCMake/CMakePresets/InvalidToolsetStrategy-stderr.txt
new file mode 100644
index 0000000000..fab3766200
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/InvalidToolsetStrategy-stderr.txt
@@ -0,0 +1,2 @@
+^CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresets/InvalidToolsetStrategy: Invalid preset$
diff --git a/Tests/RunCMake/CMakePresets/InvalidToolsetStrategy.json.in b/Tests/RunCMake/CMakePresets/InvalidToolsetStrategy.json.in
new file mode 100644
index 0000000000..7d2ab1f355
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/InvalidToolsetStrategy.json.in
@@ -0,0 +1,13 @@
+{
+ "version": 1,
+ "configurePresets": [
+ {
+ "name": "InvalidToolsetStrategy",
+ "generator": "@RunCMake_GENERATOR@",
+ "binaryDir": "${sourceDir}/build",
+ "toolset": {
+ "strategy": {}
+ }
+ }
+ ]
+}
diff --git a/Tests/RunCMake/CMakePresets/ListPresets.json.in b/Tests/RunCMake/CMakePresets/ListPresets.json.in
index c7646c6a42..2ef3797daf 100644
--- a/Tests/RunCMake/CMakePresets/ListPresets.json.in
+++ b/Tests/RunCMake/CMakePresets/ListPresets.json.in
@@ -26,7 +26,7 @@
{
"name": "invalid-macro",
"generator": "@RunCMake_GENERATOR@",
- "binaryDir": "${noexist}"
+ "binaryDir": "$vendor{noexist}"
},
{
"name": "ListPresetsHidden",
diff --git a/Tests/RunCMake/CMakePresets/NoSuchMacro-stderr.txt b/Tests/RunCMake/CMakePresets/NoSuchMacro-stderr.txt
index 08fa87bb2d..7dafe623df 100644
--- a/Tests/RunCMake/CMakePresets/NoSuchMacro-stderr.txt
+++ b/Tests/RunCMake/CMakePresets/NoSuchMacro-stderr.txt
@@ -1 +1,2 @@
-^CMake Error: Could not evaluate preset "NoSuchMacro": Invalid macro expansion$
+^CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresets/NoSuchMacro: Invalid macro expansion$
diff --git a/Tests/RunCMake/CMakePresets/NoSuchMacro.json.in b/Tests/RunCMake/CMakePresets/NoSuchMacro.json.in
new file mode 100644
index 0000000000..94d0b764b8
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/NoSuchMacro.json.in
@@ -0,0 +1,10 @@
+{
+ "version": 1,
+ "configurePresets": [
+ {
+ "name": "NoSuchMacro",
+ "generator": "@RunCMake_GENERATOR@",
+ "binaryDir": "${noexist}"
+ }
+ ]
+}
diff --git a/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake b/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake
index 18ea093504..bd845105d0 100644
--- a/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake
@@ -7,6 +7,24 @@ if(RunCMake_GENERATOR MATCHES "^(Visual Studio [0-9]+ [0-9]+) ")
set(RunCMake_GENERATOR "${CMAKE_MATCH_1}")
endif()
+set(RunCMake-check-file check.cmake)
+
+function(validate_schema file expected_result)
+ execute_process(
+ COMMAND "${PYTHON_EXECUTABLE}" "${RunCMake_SOURCE_DIR}/validate_schema.py" "${file}"
+ RESULT_VARIABLE _result
+ OUTPUT_VARIABLE _output
+ ERROR_VARIABLE _error
+ )
+ if(NOT _result STREQUAL expected_result)
+ string(REPLACE "\n" "\n" _output_p "${_output}")
+ string(REPLACE "\n" "\n" _error_p "${_error}")
+ string(APPEND RunCMake_TEST_FAILED "Expected result of validating ${file}: ${expected_result}\nActual result: ${_result}\nOutput:\n${_output_p}\nError:\n${_error_p}")
+ endif()
+
+ set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
+endfunction()
+
function(run_cmake_presets name)
set(RunCMake_TEST_SOURCE_DIR "${RunCMake_BINARY_DIR}/${name}")
set(_source_arg "${RunCMake_TEST_SOURCE_DIR}")
@@ -57,6 +75,7 @@ function(run_cmake_presets name)
endfunction()
# Test CMakePresets.json errors
+set(CMakePresets_SCHEMA_EXPECTED_RESULT 1)
run_cmake_presets(NoCMakePresets)
run_cmake_presets(JSONParseError)
run_cmake_presets(InvalidRoot)
@@ -65,15 +84,21 @@ run_cmake_presets(InvalidVersion)
run_cmake_presets(LowVersion)
run_cmake_presets(HighVersion)
run_cmake_presets(InvalidVendor)
+set(CMakePresets_SCHEMA_EXPECTED_RESULT 0)
run_cmake_presets(NoPresets)
+set(CMakePresets_SCHEMA_EXPECTED_RESULT 1)
run_cmake_presets(InvalidPresets)
run_cmake_presets(PresetNotObject)
run_cmake_presets(NoPresetName)
run_cmake_presets(InvalidPresetName)
run_cmake_presets(EmptyPresetName)
+set(CMakePresets_SCHEMA_EXPECTED_RESULT 0)
run_cmake_presets(NoPresetGenerator)
+set(CMakePresets_SCHEMA_EXPECTED_RESULT 1)
run_cmake_presets(InvalidPresetGenerator)
+set(CMakePresets_SCHEMA_EXPECTED_RESULT 0)
run_cmake_presets(NoPresetBinaryDir)
+set(CMakePresets_SCHEMA_EXPECTED_RESULT 1)
run_cmake_presets(InvalidPresetBinaryDir)
run_cmake_presets(InvalidVariables)
run_cmake_presets(VariableNotObject)
@@ -83,6 +108,7 @@ run_cmake_presets(ExtraRootField)
run_cmake_presets(ExtraPresetField)
run_cmake_presets(ExtraVariableField)
run_cmake_presets(InvalidPresetVendor)
+set(CMakePresets_SCHEMA_EXPECTED_RESULT 0)
run_cmake_presets(DuplicatePresets)
run_cmake_presets(CyclicInheritance0)
run_cmake_presets(CyclicInheritance1)
@@ -90,13 +116,24 @@ run_cmake_presets(CyclicInheritance2)
run_cmake_presets(InvalidInheritance)
run_cmake_presets(ErrorNoWarningDev)
run_cmake_presets(ErrorNoWarningDeprecated)
-run_cmake_presets(InvalidCMakeGeneratorConfig)
-run_cmake_presets(UnknownCMakeGeneratorConfig)
+set(CMakePresets_SCHEMA_EXPECTED_RESULT 1)
+run_cmake_presets(InvalidArchitectureStrategy)
+run_cmake_presets(UnknownArchitectureStrategy)
+run_cmake_presets(InvalidToolsetStrategy)
+run_cmake_presets(UnknownToolsetStrategy)
run_cmake_presets(EmptyCacheKey)
run_cmake_presets(EmptyEnvKey)
+set(CMakePresets_SCHEMA_EXPECTED_RESULT 0)
+run_cmake_presets(UnclosedMacro)
+run_cmake_presets(NoSuchMacro)
+run_cmake_presets(EnvCycle)
+run_cmake_presets(EmptyEnv)
+run_cmake_presets(EmptyPenv)
+set(CMakePresets_SCHEMA_EXPECTED_RESULT 1)
# Test cmakeMinimumRequired field
run_cmake_presets(MinimumRequiredInvalid)
+set(CMakePresets_SCHEMA_EXPECTED_RESULT 0)
run_cmake_presets(MinimumRequiredEmpty)
run_cmake_presets(MinimumRequiredMajor)
run_cmake_presets(MinimumRequiredMinor)
@@ -142,13 +179,8 @@ run_cmake_presets(GoodInheritanceMultiSecond)
run_cmake_presets(GoodInheritanceMacro)
# Test bad preset arguments
-run_cmake_presets(UnclosedMacro)
-run_cmake_presets(NoSuchMacro)
run_cmake_presets(VendorMacro)
run_cmake_presets(InvalidGenerator)
-run_cmake_presets(EnvCycle)
-run_cmake_presets(EmptyEnv)
-run_cmake_presets(EmptyPenv)
# Test Visual Studio-specific stuff
if(RunCMake_GENERATOR MATCHES "^Visual Studio ")
@@ -166,9 +198,9 @@ if(RunCMake_GENERATOR MATCHES "^Visual Studio ")
run_cmake_presets(VisualStudioInheritanceMultiSecond)
endif()
else()
- run_cmake_presets(CMakeGeneratorConfigNone)
- run_cmake_presets(CMakeGeneratorConfigDefault)
- run_cmake_presets(CMakeGeneratorConfigIgnore)
+ run_cmake_presets(ArchToolsetStrategyNone)
+ run_cmake_presets(ArchToolsetStrategyDefault)
+ run_cmake_presets(ArchToolsetStrategyIgnore)
endif()
# Test bad command line arguments
diff --git a/Tests/RunCMake/CMakePresets/UnclosedMacro-stderr.txt b/Tests/RunCMake/CMakePresets/UnclosedMacro-stderr.txt
index 248510d3c7..f9481f091d 100644
--- a/Tests/RunCMake/CMakePresets/UnclosedMacro-stderr.txt
+++ b/Tests/RunCMake/CMakePresets/UnclosedMacro-stderr.txt
@@ -1 +1,2 @@
-^CMake Error: Could not evaluate preset "UnclosedMacro": Invalid macro expansion$
+^CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresets/UnclosedMacro: Invalid macro expansion$
diff --git a/Tests/RunCMake/CMakePresets/UnclosedMacro.json.in b/Tests/RunCMake/CMakePresets/UnclosedMacro.json.in
new file mode 100644
index 0000000000..ad6cf7dc9b
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/UnclosedMacro.json.in
@@ -0,0 +1,10 @@
+{
+ "version": 1,
+ "configurePresets": [
+ {
+ "name": "UnclosedMacro",
+ "generator": "@RunCMake_GENERATOR@",
+ "binaryDir": "${sourceDir"
+ }
+ ]
+}
diff --git a/Tests/RunCMake/File_Configure/BadArgGeneratorExpressionContent-result.txt b/Tests/RunCMake/CMakePresets/UnknownArchitectureStrategy-result.txt
index d00491fd7e..d00491fd7e 100644
--- a/Tests/RunCMake/File_Configure/BadArgGeneratorExpressionContent-result.txt
+++ b/Tests/RunCMake/CMakePresets/UnknownArchitectureStrategy-result.txt
diff --git a/Tests/RunCMake/CMakePresets/UnknownArchitectureStrategy-stderr.txt b/Tests/RunCMake/CMakePresets/UnknownArchitectureStrategy-stderr.txt
new file mode 100644
index 0000000000..cf17881d7a
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/UnknownArchitectureStrategy-stderr.txt
@@ -0,0 +1,2 @@
+^CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresets/UnknownArchitectureStrategy: Invalid preset$
diff --git a/Tests/RunCMake/CMakePresets/UnknownArchitectureStrategy.json.in b/Tests/RunCMake/CMakePresets/UnknownArchitectureStrategy.json.in
new file mode 100644
index 0000000000..a3bf7c814b
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/UnknownArchitectureStrategy.json.in
@@ -0,0 +1,13 @@
+{
+ "version": 1,
+ "configurePresets": [
+ {
+ "name": "UnknownArchitectureStrategy",
+ "generator": "@RunCMake_GENERATOR@",
+ "binaryDir": "${sourceDir}/build",
+ "architecture": {
+ "strategy": "unknown"
+ }
+ }
+ ]
+}
diff --git a/Tests/RunCMake/CMakePresets/UnknownCMakeGeneratorConfig-stderr.txt b/Tests/RunCMake/CMakePresets/UnknownCMakeGeneratorConfig-stderr.txt
deleted file mode 100644
index b1759b0fd2..0000000000
--- a/Tests/RunCMake/CMakePresets/UnknownCMakeGeneratorConfig-stderr.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-^CMake Error: Could not read presets from [^
-]*/Tests/RunCMake/CMakePresets/UnknownCMakeGeneratorConfig: Invalid preset$
diff --git a/Tests/RunCMake/CMakePresets/UnknownToolsetStrategy-result.txt b/Tests/RunCMake/CMakePresets/UnknownToolsetStrategy-result.txt
new file mode 100644
index 0000000000..d00491fd7e
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/UnknownToolsetStrategy-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CMakePresets/UnknownToolsetStrategy-stderr.txt b/Tests/RunCMake/CMakePresets/UnknownToolsetStrategy-stderr.txt
new file mode 100644
index 0000000000..8f9be2998d
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/UnknownToolsetStrategy-stderr.txt
@@ -0,0 +1,2 @@
+^CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresets/UnknownToolsetStrategy: Invalid preset$
diff --git a/Tests/RunCMake/CMakePresets/UnknownToolsetStrategy.json.in b/Tests/RunCMake/CMakePresets/UnknownToolsetStrategy.json.in
new file mode 100644
index 0000000000..166870073a
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/UnknownToolsetStrategy.json.in
@@ -0,0 +1,13 @@
+{
+ "version": 1,
+ "configurePresets": [
+ {
+ "name": "UnknownToolsetStrategy",
+ "generator": "@RunCMake_GENERATOR@",
+ "binaryDir": "${sourceDir}/build",
+ "toolset": {
+ "strategy": "unknown"
+ }
+ }
+ ]
+}
diff --git a/Tests/RunCMake/CMakePresets/check.cmake b/Tests/RunCMake/CMakePresets/check.cmake
new file mode 100644
index 0000000000..bf43c7ea37
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/check.cmake
@@ -0,0 +1,15 @@
+if(PYTHON_EXECUTABLE AND CMake_TEST_JSON_SCHEMA)
+ if(NOT CMakePresets_SCHEMA_EXPECTED_RESULT)
+ set(CMakePresets_SCHEMA_EXPECTED_RESULT 0)
+ endif()
+ if(EXISTS "${RunCMake_TEST_SOURCE_DIR}/CMakePresets.json")
+ validate_schema("${RunCMake_TEST_SOURCE_DIR}/CMakePresets.json" "${CMakePresets_SCHEMA_EXPECTED_RESULT}")
+ endif()
+
+ if(NOT CMakeUserPresets_SCHEMA_EXPECTED_RESULT)
+ set(CMakeUserPresets_SCHEMA_EXPECTED_RESULT 0)
+ endif()
+ if(EXISTS "${RunCMake_TEST_SOURCE_DIR}/CMakeUserPresets.json")
+ validate_schema("${RunCMake_TEST_SOURCE_DIR}/CMakeUserPresets.json" "${CMakeUserPresets_SCHEMA_EXPECTED_RESULT}")
+ endif()
+endif()
diff --git a/Tests/RunCMake/CMakePresets/validate_schema.py b/Tests/RunCMake/CMakePresets/validate_schema.py
new file mode 100644
index 0000000000..c9f84ee176
--- /dev/null
+++ b/Tests/RunCMake/CMakePresets/validate_schema.py
@@ -0,0 +1,17 @@
+import jsmin
+import json
+import jsonschema
+import os.path
+import sys
+
+
+with open(sys.argv[1], "rb") as f:
+ contents = json.loads(jsmin.jsmin(f.read().decode("utf-8-sig")))
+
+schema_file = os.path.join(
+ os.path.dirname(__file__),
+ "..", "..", "..", "Help", "manual", "presets", "schema.json")
+with open(schema_file) as f:
+ schema = json.load(f)
+
+jsonschema.validate(contents, schema)
diff --git a/Tests/RunCMake/CTest/RunCMakeTest.cmake b/Tests/RunCMake/CTest/RunCMakeTest.cmake
index 62606f862d..ffc8f78937 100644
--- a/Tests/RunCMake/CTest/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CTest/RunCMakeTest.cmake
@@ -27,3 +27,14 @@ function(run_TestfileErrors)
run_cmake_command(TestfileErrors-test ${CMAKE_CTEST_COMMAND} -C Debug)
endfunction()
run_TestfileErrors()
+
+function(run_SingleConfig)
+ set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/SingleConfig-build)
+ run_cmake(SingleConfig)
+ set(RunCMake_TEST_NO_CLEAN 1)
+ run_cmake_command(SingleConfig-build ${CMAKE_COMMAND} --build .)
+ run_cmake_command(SingleConfig-test ${CMAKE_CTEST_COMMAND}) # No -C Debug required for single-config.
+endfunction()
+if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
+ run_SingleConfig()
+endif()
diff --git a/Tests/RunCMake/CTest/SingleConfig-test-stdout.txt b/Tests/RunCMake/CTest/SingleConfig-test-stdout.txt
new file mode 100644
index 0000000000..1c39ea1567
--- /dev/null
+++ b/Tests/RunCMake/CTest/SingleConfig-test-stdout.txt
@@ -0,0 +1,8 @@
+^Test project [^
+]*/Tests/RunCMake/CTest/SingleConfig-build
+ Start 1: SingleConfig
+1/1 Test #1: SingleConfig \.+ +Passed +[0-9.]+ sec
++
+100% tests passed, 0 tests failed out of 1
++
+Total Test time \(real\) = +[0-9.]+ sec$
diff --git a/Tests/RunCMake/CTest/SingleConfig.cmake b/Tests/RunCMake/CTest/SingleConfig.cmake
new file mode 100644
index 0000000000..7c10e06be7
--- /dev/null
+++ b/Tests/RunCMake/CTest/SingleConfig.cmake
@@ -0,0 +1,6 @@
+include(CTest)
+
+# This should be ignored by single-config generators.
+set(CMAKE_CONFIGURATION_TYPES "Release;Debug" CACHE INTERNAL "Supported configuration types")
+
+add_test(NAME SingleConfig COMMAND ${CMAKE_COMMAND} -E echo SingleConfig)
diff --git a/Tests/RunCMake/CheckSourceCompiles/RunCMakeTest.cmake b/Tests/RunCMake/CheckSourceCompiles/RunCMakeTest.cmake
index 22cb4661b9..6e9088f824 100644
--- a/Tests/RunCMake/CheckSourceCompiles/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CheckSourceCompiles/RunCMakeTest.cmake
@@ -2,6 +2,7 @@ include(RunCMake)
run_cmake(NotEnabledLanguage)
run_cmake(NonExistentLanguage)
+run_cmake(UnknownArgument)
run_cmake(CheckCSourceCompiles)
run_cmake(CheckCXXSourceCompiles)
diff --git a/Tests/RunCMake/CheckSourceCompiles/UnknownArgument-result.txt b/Tests/RunCMake/CheckSourceCompiles/UnknownArgument-result.txt
new file mode 100644
index 0000000000..d00491fd7e
--- /dev/null
+++ b/Tests/RunCMake/CheckSourceCompiles/UnknownArgument-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CheckSourceCompiles/UnknownArgument-stderr.txt b/Tests/RunCMake/CheckSourceCompiles/UnknownArgument-stderr.txt
new file mode 100644
index 0000000000..eed581af3f
--- /dev/null
+++ b/Tests/RunCMake/CheckSourceCompiles/UnknownArgument-stderr.txt
@@ -0,0 +1,9 @@
+^CMake Error at [^
+]*/Modules/CheckSourceCompiles.cmake:[0-9]+ \(message\):
+ Unknown argument:
+
+ BAD
+
+Call Stack \(most recent call first\):
+ UnknownArgument.cmake:[0-9]+ \(check_source_compiles\)
+ CMakeLists.txt:[0-9]+ \(include\)$
diff --git a/Tests/RunCMake/CheckSourceCompiles/UnknownArgument.cmake b/Tests/RunCMake/CheckSourceCompiles/UnknownArgument.cmake
new file mode 100644
index 0000000000..3b861da7f3
--- /dev/null
+++ b/Tests/RunCMake/CheckSourceCompiles/UnknownArgument.cmake
@@ -0,0 +1,5 @@
+
+enable_language (C)
+include(CheckSourceCompiles)
+
+check_source_compiles(C "int main() {return 0;}" SHOULD_BUILD SRC_EXT C BAD)
diff --git a/Tests/RunCMake/CheckSourceRuns/RunCMakeTest.cmake b/Tests/RunCMake/CheckSourceRuns/RunCMakeTest.cmake
index b27b08daa2..c99ac8be29 100644
--- a/Tests/RunCMake/CheckSourceRuns/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CheckSourceRuns/RunCMakeTest.cmake
@@ -2,6 +2,7 @@ include(RunCMake)
run_cmake(NotEnabledLanguage)
run_cmake(NonExistentLanguage)
+run_cmake(UnknownArgument)
run_cmake(CheckCSourceRuns)
run_cmake(CheckCXXSourceRuns)
diff --git a/Tests/RunCMake/CheckSourceRuns/UnknownArgument-result.txt b/Tests/RunCMake/CheckSourceRuns/UnknownArgument-result.txt
new file mode 100644
index 0000000000..d00491fd7e
--- /dev/null
+++ b/Tests/RunCMake/CheckSourceRuns/UnknownArgument-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CheckSourceRuns/UnknownArgument-stderr.txt b/Tests/RunCMake/CheckSourceRuns/UnknownArgument-stderr.txt
new file mode 100644
index 0000000000..8ae1ea1ffb
--- /dev/null
+++ b/Tests/RunCMake/CheckSourceRuns/UnknownArgument-stderr.txt
@@ -0,0 +1,9 @@
+^CMake Error at [^
+]*/Modules/CheckSourceRuns.cmake:[0-9]+ \(message\):
+ Unknown argument:
+
+ BAD
+
+Call Stack \(most recent call first\):
+ UnknownArgument.cmake:[0-9]+ \(check_source_runs\)
+ CMakeLists.txt:[0-9]+ \(include\)$
diff --git a/Tests/RunCMake/CheckSourceRuns/UnknownArgument.cmake b/Tests/RunCMake/CheckSourceRuns/UnknownArgument.cmake
new file mode 100644
index 0000000000..6e50fa7f9a
--- /dev/null
+++ b/Tests/RunCMake/CheckSourceRuns/UnknownArgument.cmake
@@ -0,0 +1,5 @@
+
+enable_language (C)
+include(CheckSourceRuns)
+
+check_source_runs(C "int main() {return 0;}" SHOULD_BUILD SRC_EXT C BAD)
diff --git a/Tests/RunCMake/CommandLine/.gitattributes b/Tests/RunCMake/CommandLine/.gitattributes
new file mode 100644
index 0000000000..b0b0588cb3
--- /dev/null
+++ b/Tests/RunCMake/CommandLine/.gitattributes
@@ -0,0 +1,2 @@
+E_cat_binary_files/binary.obj -text
+E_cat_good_binary_cat-stdout.txt -text -whitespace
diff --git a/Tests/RunCMake/CommandLine/E_cat_binary_files/binary.obj b/Tests/RunCMake/CommandLine/E_cat_binary_files/binary.obj
new file mode 100644
index 0000000000..73f1749a8e
--- /dev/null
+++ b/Tests/RunCMake/CommandLine/E_cat_binary_files/binary.obj
Binary files differ
diff --git a/Tests/RunCMake/CommandLine/E_cat_good_binary_cat-stdout.txt b/Tests/RunCMake/CommandLine/E_cat_good_binary_cat-stdout.txt
new file mode 100644
index 0000000000..0951d85b3d
--- /dev/null
+++ b/Tests/RunCMake/CommandLine/E_cat_good_binary_cat-stdout.txt
Binary files differ
diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
index 2a5d5d3d4e..b23c8c26d9 100644
--- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
@@ -563,6 +563,9 @@ run_cmake_command(E_cat_good_cat
${CMAKE_COMMAND} -E cat "${out}/first_file.txt" "${out}/second_file.txt" "${out}/unicode_file.txt")
unset(out)
+run_cmake_command(E_cat_good_binary_cat
+ ${CMAKE_COMMAND} -E cat "${RunCMake_SOURCE_DIR}/E_cat_binary_files/binary.obj" "${RunCMake_SOURCE_DIR}/E_cat_binary_files/binary.obj")
+
run_cmake_command(E_env-no-command0 ${CMAKE_COMMAND} -E env)
run_cmake_command(E_env-no-command1 ${CMAKE_COMMAND} -E env TEST_ENV=1)
run_cmake_command(E_env-bad-arg1 ${CMAKE_COMMAND} -E env -bad-arg1)
diff --git a/Tests/RunCMake/File_Configure/AngleBracketsContent-stderr.txt b/Tests/RunCMake/File_Configure/AngleBracketsContent-stderr.txt
new file mode 100644
index 0000000000..08c2adabb2
--- /dev/null
+++ b/Tests/RunCMake/File_Configure/AngleBracketsContent-stderr.txt
@@ -0,0 +1 @@
+^foo-\$<CONFIG>$
diff --git a/Tests/RunCMake/File_Configure/AngleBracketsContent.cmake b/Tests/RunCMake/File_Configure/AngleBracketsContent.cmake
new file mode 100644
index 0000000000..04c63bb63c
--- /dev/null
+++ b/Tests/RunCMake/File_Configure/AngleBracketsContent.cmake
@@ -0,0 +1,6 @@
+file(CONFIGURE
+ OUTPUT "file.txt"
+ CONTENT "foo-$<CONFIG>"
+)
+file(READ ${CMAKE_CURRENT_BINARY_DIR}/file.txt out)
+message("${out}")
diff --git a/Tests/RunCMake/File_Configure/BadArgGeneratorExpressionContent-stderr.txt b/Tests/RunCMake/File_Configure/BadArgGeneratorExpressionContent-stderr.txt
deleted file mode 100644
index acda6541a2..0000000000
--- a/Tests/RunCMake/File_Configure/BadArgGeneratorExpressionContent-stderr.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-CMake Error at BadArgGeneratorExpressionContent.cmake:[0-9]+ \(file\):
- file CONFIGURE called with CONTENT containing a "<". This character is not
- allowed.
-Call Stack \(most recent call first\):
- CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/File_Configure/BadArgGeneratorExpressionContent.cmake b/Tests/RunCMake/File_Configure/BadArgGeneratorExpressionContent.cmake
deleted file mode 100644
index 75fe9e5d16..0000000000
--- a/Tests/RunCMake/File_Configure/BadArgGeneratorExpressionContent.cmake
+++ /dev/null
@@ -1,4 +0,0 @@
-file(CONFIGURE
- OUTPUT "file.txt"
- CONTENT "foo-$<CONFIG>"
-)
diff --git a/Tests/RunCMake/File_Configure/RunCMakeTest.cmake b/Tests/RunCMake/File_Configure/RunCMakeTest.cmake
index 0337014eba..e79de795f6 100644
--- a/Tests/RunCMake/File_Configure/RunCMakeTest.cmake
+++ b/Tests/RunCMake/File_Configure/RunCMakeTest.cmake
@@ -1,7 +1,7 @@
include(RunCMake)
+run_cmake(AngleBracketsContent)
run_cmake(BadArg)
-run_cmake(BadArgGeneratorExpressionContent)
run_cmake(BadArgGeneratorExpressionOutput)
run_cmake(DirOutput)
run_cmake(NewLineStyle-NoArg)
diff --git a/Tests/RunCMake/separate_arguments/NativeCommand.cmake b/Tests/RunCMake/separate_arguments/NativeCommand.cmake
index 1cb009e9f0..0051a79383 100644
--- a/Tests/RunCMake/separate_arguments/NativeCommand.cmake
+++ b/Tests/RunCMake/separate_arguments/NativeCommand.cmake
@@ -17,3 +17,8 @@ if(NOT "${native_out}" STREQUAL "${native_exp}")
message(FATAL_ERROR "separate_arguments native-style failed. "
"Expected\n [${native_exp}]\nbut got\n [${native_out}]\n")
endif()
+
+separate_arguments(empty_out NATIVE_COMMAND)
+if(NOT empty_out STREQUAL "")
+ message(FATAL_ERROR "separate_arguments native-style failed on no arguments")
+endif()
diff --git a/Tests/RunCMake/separate_arguments/UnixCommand.cmake b/Tests/RunCMake/separate_arguments/UnixCommand.cmake
index 0b5767ac5b..c56cd632dc 100644
--- a/Tests/RunCMake/separate_arguments/UnixCommand.cmake
+++ b/Tests/RunCMake/separate_arguments/UnixCommand.cmake
@@ -6,3 +6,8 @@ if(NOT "${unix_out}" STREQUAL "${unix_exp}")
message(FATAL_ERROR "separate_arguments unix-style failed. "
"Expected\n [${unix_exp}]\nbut got\n [${unix_out}]\n")
endif()
+
+separate_arguments(empty_out UNIX_COMMAND)
+if(NOT empty_out STREQUAL "")
+ message(FATAL_ERROR "separate_arguments unix-style failed on no arguments")
+endif()
diff --git a/Tests/RunCMake/separate_arguments/WindowsCommand.cmake b/Tests/RunCMake/separate_arguments/WindowsCommand.cmake
index 86aa14ad06..cd07494874 100644
--- a/Tests/RunCMake/separate_arguments/WindowsCommand.cmake
+++ b/Tests/RunCMake/separate_arguments/WindowsCommand.cmake
@@ -6,3 +6,8 @@ if(NOT "${windows_out}" STREQUAL "${windows_exp}")
message(FATAL_ERROR "separate_arguments windows-style failed. "
"Expected\n [${windows_exp}]\nbut got\n [${windows_out}]\n")
endif()
+
+separate_arguments(empty_out WINDOWS_COMMAND)
+if(NOT empty_out STREQUAL "")
+ message(FATAL_ERROR "separate_arguments windows-style failed on no arguments")
+endif()