mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-23 07:28:51 -06:00
CMakePresets.json: Ensure configurePreset is reachable from current file
This commit is contained in:
@@ -108,7 +108,7 @@ ReadFileResult VisitPreset(
|
||||
|
||||
auto& parentPreset = parent->second.Unexpanded;
|
||||
if (!preset.OriginFile->ReachableFiles.count(parentPreset.OriginFile)) {
|
||||
return ReadFileResult::PRESET_UNREACHABLE_FROM_FILE;
|
||||
return ReadFileResult::INHERITED_PRESET_UNREACHABLE_FROM_FILE;
|
||||
}
|
||||
|
||||
auto result = VisitPreset(parentPreset, presets, cycleStatus, graph);
|
||||
@@ -925,6 +925,10 @@ cmCMakePresetsGraph::ReadProjectPresetsInternal(bool allowNoFiles)
|
||||
if (configurePreset == this->ConfigurePresets.end()) {
|
||||
return ReadFileResult::INVALID_CONFIGURE_PRESET;
|
||||
}
|
||||
if (!it.second.Unexpanded.OriginFile->ReachableFiles.count(
|
||||
configurePreset->second.Unexpanded.OriginFile)) {
|
||||
return ReadFileResult::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE;
|
||||
}
|
||||
|
||||
if (it.second.Unexpanded.InheritConfigureEnvironment.value_or(true)) {
|
||||
it.second.Unexpanded.Environment.insert(
|
||||
@@ -945,6 +949,10 @@ cmCMakePresetsGraph::ReadProjectPresetsInternal(bool allowNoFiles)
|
||||
if (configurePreset == this->ConfigurePresets.end()) {
|
||||
return ReadFileResult::INVALID_CONFIGURE_PRESET;
|
||||
}
|
||||
if (!it.second.Unexpanded.OriginFile->ReachableFiles.count(
|
||||
configurePreset->second.Unexpanded.OriginFile)) {
|
||||
return ReadFileResult::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE;
|
||||
}
|
||||
|
||||
if (it.second.Unexpanded.InheritConfigureEnvironment.value_or(true)) {
|
||||
it.second.Unexpanded.Environment.insert(
|
||||
@@ -992,8 +1000,10 @@ const char* cmCMakePresetsGraph::ResultToString(ReadFileResult result)
|
||||
return "Duplicate presets";
|
||||
case ReadFileResult::CYCLIC_PRESET_INHERITANCE:
|
||||
return "Cyclic preset inheritance";
|
||||
case ReadFileResult::PRESET_UNREACHABLE_FROM_FILE:
|
||||
case ReadFileResult::INHERITED_PRESET_UNREACHABLE_FROM_FILE:
|
||||
return "Inherited preset is unreachable from preset's file";
|
||||
case ReadFileResult::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE:
|
||||
return "Configure preset is unreachable from preset's file";
|
||||
case ReadFileResult::INVALID_MACRO_EXPANSION:
|
||||
return "Invalid macro expansion";
|
||||
case ReadFileResult::BUILD_TEST_PRESETS_UNSUPPORTED:
|
||||
|
||||
@@ -35,7 +35,8 @@ public:
|
||||
INVALID_VARIABLE,
|
||||
DUPLICATE_PRESETS,
|
||||
CYCLIC_PRESET_INHERITANCE,
|
||||
PRESET_UNREACHABLE_FROM_FILE,
|
||||
INHERITED_PRESET_UNREACHABLE_FROM_FILE,
|
||||
CONFIGURE_PRESET_UNREACHABLE_FROM_FILE,
|
||||
INVALID_MACRO_EXPANSION,
|
||||
BUILD_TEST_PRESETS_UNSUPPORTED,
|
||||
INCLUDE_UNSUPPORTED,
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
1
|
||||
@@ -0,0 +1,2 @@
|
||||
^CMake Error: Could not read presets from [^
|
||||
]*/Tests/RunCMake/CMakePresetsBuild/ConfigurePresetUnreachable: Configure preset is unreachable from preset's file$
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"version": 4,
|
||||
"buildPresets": [
|
||||
{
|
||||
"name": "x",
|
||||
"configurePreset": "x"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"version": 4,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "x"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -83,4 +83,6 @@ set(CMakePresets_SCHEMA_EXPECTED_RESULT 1)
|
||||
run_cmake_build_presets(PresetsUnsupported "x" "x")
|
||||
run_cmake_build_presets(ConditionFuture "x" "conditionFuture")
|
||||
set(CMakePresets_SCHEMA_EXPECTED_RESULT 0)
|
||||
|
||||
run_cmake_build_presets(ConfigurePresetUnreachable "x" "x")
|
||||
set(CMakePresetsBuild_BUILD_ONLY 0)
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
1
|
||||
@@ -0,0 +1,2 @@
|
||||
^CMake Error: Could not read presets from [^
|
||||
]*/Tests/RunCMake/CMakePresetsTest/ConfigurePresetUnreachable: Configure preset is unreachable from preset's file$
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"version": 4,
|
||||
"testPresets": [
|
||||
{
|
||||
"name": "x",
|
||||
"configurePreset": "x"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"version": 4,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "x"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -106,6 +106,7 @@ set(CMakePresets_SCHEMA_EXPECTED_RESULT 1)
|
||||
run_cmake_test_presets(PresetsUnsupported "" "" "x")
|
||||
run_cmake_test_presets(ConditionFuture "" "" "x")
|
||||
set(CMakePresets_SCHEMA_EXPECTED_RESULT 0)
|
||||
run_cmake_test_presets(ConfigurePresetUnreachable "" "" "x")
|
||||
set(CMakePresetsTest_NO_CONFIGURE 0)
|
||||
|
||||
set(CMakePresetsTest_NO_BUILD 0)
|
||||
|
||||
Reference in New Issue
Block a user