Coverage Report

Created: 2026-10-28 06:38

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/CMake/Source/cmCMakePresetsGraphReadJSONWorkflowPresets.cxx
Line
Count
Source
1
/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2
   file LICENSE.rst or https://cmake.org/licensing for details.  */
3
#include <cstddef>
4
#include <functional>
5
#include <string>
6
#include <vector>
7
8
#include <cmext/string_view>
9
10
#include "cmCMakePresetsErrors.h"
11
#include "cmCMakePresetsGraph.h"
12
#include "cmCMakePresetsGraphInternal.h"
13
#include "cmJSONHelpers.h"
14
15
class cmJSONState;
16
17
namespace Json {
18
class Value;
19
}
20
21
namespace {
22
using WorkflowPreset = cmCMakePresetsGraph::WorkflowPreset;
23
24
bool WorkflowStepTypeHelper(WorkflowPreset::WorkflowStep::Type& out,
25
                            Json::Value const* value, cmJSONState* state)
26
32.8k
{
27
32.8k
  if (!value) {
28
0
    cmCMakePresetsErrors::INVALID_PRESET(value, state);
29
0
    return false;
30
0
  }
31
32
32.8k
  std::string workflowType;
33
32.8k
  if (!cmCMakePresetsGraphInternal::PresetStringHelper(workflowType, value,
34
32.8k
                                                       state)) {
35
204
    return false;
36
204
  }
37
38
32.6k
  if (workflowType == "configure") {
39
6.55k
    out = WorkflowPreset::WorkflowStep::Type::Configure;
40
6.55k
    return true;
41
6.55k
  }
42
43
26.0k
  if (workflowType == "build") {
44
1.87k
    out = WorkflowPreset::WorkflowStep::Type::Build;
45
1.87k
    return true;
46
1.87k
  }
47
48
24.1k
  if (workflowType == "test") {
49
9.43k
    out = WorkflowPreset::WorkflowStep::Type::Test;
50
9.43k
    return true;
51
9.43k
  }
52
53
14.7k
  if (workflowType == "package") {
54
1.79k
    out = WorkflowPreset::WorkflowStep::Type::Package;
55
1.79k
    return true;
56
1.79k
  }
57
58
12.9k
  cmCMakePresetsErrors::INVALID_PRESET(value, state);
59
12.9k
  return false;
60
14.7k
}
61
62
auto const WorkflowStepHelper =
63
  cmJSONHelperBuilder::Object<WorkflowPreset::WorkflowStep>(
64
    JsonErrors::INVALID_OBJECT, false)
65
    .Bind("type"_s, &WorkflowPreset::WorkflowStep::PresetType,
66
          WorkflowStepTypeHelper)
67
    .Bind("name"_s, &WorkflowPreset::WorkflowStep::PresetName,
68
          cmCMakePresetsGraphInternal::PresetStringHelper);
69
70
auto const WorkflowStepsHelper =
71
  cmJSONHelperBuilder::Vector<WorkflowPreset::WorkflowStep>(
72
    cmCMakePresetsErrors::INVALID_PRESET, WorkflowStepHelper);
73
74
auto const WorkflowPresetHelper =
75
  cmJSONHelperBuilder::Object<WorkflowPreset>(
76
    cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)
77
    .Bind("name"_s, &WorkflowPreset::Name,
78
          cmCMakePresetsGraphInternal::PresetNameHelper)
79
    .Bind<std::nullptr_t>("vendor"_s, nullptr,
80
                          cmCMakePresetsGraphInternal::VendorHelper(
81
                            cmCMakePresetsErrors::INVALID_PRESET),
82
                          false)
83
    .Bind("displayName"_s, &WorkflowPreset::DisplayName,
84
          cmCMakePresetsGraphInternal::PresetStringHelper, false)
85
    .Bind("description"_s, &WorkflowPreset::Description,
86
          cmCMakePresetsGraphInternal::PresetStringHelper, false)
87
    .Bind("steps"_s, &WorkflowPreset::Steps, WorkflowStepsHelper);
88
}
89
90
namespace cmCMakePresetsGraphInternal {
91
bool WorkflowPresetsHelper(
92
  std::vector<cmCMakePresetsGraph::WorkflowPreset>& out,
93
  Json::Value const* value, cmJSONState* state)
94
37.0k
{
95
37.0k
  static auto const helper = cmJSONHelperBuilder::Vector<WorkflowPreset>(
96
37.0k
    cmCMakePresetsErrors::INVALID_PRESETS, WorkflowPresetHelper);
97
98
37.0k
  return helper(out, value, state);
99
37.0k
}
100
}