From 6e89bd5d5560e60c03d4dec31b1d91aebfd31551 Mon Sep 17 00:00:00 2001 From: Kyle Williams Date: Sat, 11 Jul 2026 21:54:32 -0500 Subject: [PATCH] Presets: Forward presets-file to workflow steps - Forward the '--presets-file ' arguments to each workflow step. - Ensure tests do not auto-set CMakePresets.json - Fix typos in test names Fixes: 27932 --- Source/cmake.cxx | 38 +++++++++++-------- ...ePresetsFileListPresets-test-x-stdout.txt} | 0 .../CMakePresetsWorkflow/RunCMakeTest.cmake | 4 +- 3 files changed, 26 insertions(+), 16 deletions(-) rename Tests/RunCMake/CMakePresetsTest/{OtherCMakePresetsFileListPresets-text-x-stdout.txt => OtherCMakePresetsFileListPresets-test-x-stdout.txt} (100%) diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 362adf1cd3..4e9c451b9e 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -4386,6 +4386,15 @@ int cmake::Workflow(cmCMakePresetsWorkflowArgs const& args) } }; + auto buildPresetCommand = [&args](std::vector cmd, + std::string const& presetName) { + cmd.insert(cmd.end(), { "--preset", presetName }); + if (!args.PresetsFile.empty()) { + cmd.insert(cmd.end(), { "--presets-file", args.PresetsFile }); + } + return cmd; + }; + std::vector steps; steps.reserve(expandedPreset->Steps.size()); int stepNumber = 1; @@ -4399,9 +4408,8 @@ int cmake::Workflow(cmCMakePresetsWorkflowArgs const& args) if (!configurePreset) { return 1; } - std::vector configureCmdArgs{ - cmSystemTools::GetCMakeCommand(), "--preset", step.PresetName - }; + std::vector configureCmdArgs = buildPresetCommand( + { cmSystemTools::GetCMakeCommand() }, step.PresetName); if (args.Fresh) { configureCmdArgs.emplace_back("--fresh"); } @@ -4414,10 +4422,10 @@ int cmake::Workflow(cmCMakePresetsWorkflowArgs const& args) if (!buildPreset) { return 1; } - steps.emplace_back( - stepNumber, "build"_s, step.PresetName, - buildWorkflowStep({ cmSystemTools::GetCMakeCommand(), "--build", - "--preset", step.PresetName })); + std::vector buildCmdArgs = buildPresetCommand( + { cmSystemTools::GetCMakeCommand(), "--build" }, step.PresetName); + steps.emplace_back(stepNumber, "build"_s, step.PresetName, + buildWorkflowStep(buildCmdArgs)); } break; case cmCMakePresetsGraph::WorkflowPreset::WorkflowStep::Type::Test: { auto const* testPreset = this->FindPresetForWorkflow( @@ -4425,10 +4433,10 @@ int cmake::Workflow(cmCMakePresetsWorkflowArgs const& args) if (!testPreset) { return 1; } - steps.emplace_back( - stepNumber, "test"_s, step.PresetName, - buildWorkflowStep({ cmSystemTools::GetCTestCommand(), "--preset", - step.PresetName })); + std::vector testCmdArgs = buildPresetCommand( + { cmSystemTools::GetCTestCommand() }, step.PresetName); + steps.emplace_back(stepNumber, "test"_s, step.PresetName, + buildWorkflowStep(testCmdArgs)); } break; case cmCMakePresetsGraph::WorkflowPreset::WorkflowStep::Type::Package: { auto const* packagePreset = this->FindPresetForWorkflow( @@ -4436,10 +4444,10 @@ int cmake::Workflow(cmCMakePresetsWorkflowArgs const& args) if (!packagePreset) { return 1; } - steps.emplace_back( - stepNumber, "package"_s, step.PresetName, - buildWorkflowStep({ cmSystemTools::GetCPackCommand(), "--preset", - step.PresetName })); + std::vector packageCmdArgs = buildPresetCommand( + { cmSystemTools::GetCPackCommand() }, step.PresetName); + steps.emplace_back(stepNumber, "package"_s, step.PresetName, + buildWorkflowStep(packageCmdArgs)); } break; } stepNumber++; diff --git a/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFileListPresets-text-x-stdout.txt b/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFileListPresets-test-x-stdout.txt similarity index 100% rename from Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFileListPresets-text-x-stdout.txt rename to Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFileListPresets-test-x-stdout.txt diff --git a/Tests/RunCMake/CMakePresetsWorkflow/RunCMakeTest.cmake b/Tests/RunCMake/CMakePresetsWorkflow/RunCMakeTest.cmake index e121b1c459..304d6cad59 100644 --- a/Tests/RunCMake/CMakePresetsWorkflow/RunCMakeTest.cmake +++ b/Tests/RunCMake/CMakePresetsWorkflow/RunCMakeTest.cmake @@ -86,9 +86,11 @@ unset(CMakePresets_FILE) unset(CMakeUserPresets_FILE) unset(CMakePresets_ASSETS) +set(CMakePresets_FILE "${RunCMake_SOURCE_DIR}/DoesNotExist.json.in") set(CMakePresets_FILE_ARG "OtherCMakePresetsFile.json") run_cmake_workflow_presets(OtherCMakePresetsFile) -run_cmake_workflow_presets(OtherCMakePresetsFileListPreset --list-presets) +run_cmake_workflow_presets(OtherCMakePresetsFileListPresets --list-presets) +unset(CMakePresets_FILE) unset(CMakePresets_FILE_ARG) run_cmake_workflow_presets(ListPresets --list-presets)