Coverage Report

Created: 2026-09-14 06:43

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
28.4k
{
27
28.4k
  if (!value) {
28
0
    cmCMakePresetsErrors::INVALID_PRESET(value, state);
29
0
    return false;
30
0
  }
31
32
28.4k
  std::string workflowType;
33
28.4k
  if (!cmCMakePresetsGraphInternal::PresetStringHelper(workflowType, value,
34
28.4k
                                                       state)) {
35
3
    return false;
36
3
  }
37
38
28.4k
  if (workflowType == "configure") {
39
5.70k
    out = WorkflowPreset::WorkflowStep::Type::Configure;
40
5.70k
    return true;
41
5.70k
  }
42
43
22.7k
  if (workflowType == "build") {
44
2.38k
    out = WorkflowPreset::WorkflowStep::Type::Build;
45
2.38k
    return true;
46
2.38k
  }
47
48
20.3k
  if (workflowType == "test") {
49
3.88k
    out = WorkflowPreset::WorkflowStep::Type::Test;
50
3.88k
    return true;
51
3.88k
  }
52
53
16.5k
  if (workflowType == "package") {
54
2.36k
    out = WorkflowPreset::WorkflowStep::Type::Package;
55
2.36k
    return true;
56
2.36k
  }
57
58
14.1k
  cmCMakePresetsErrors::INVALID_PRESET(value, state);
59
14.1k
  return false;
60
16.5k
}
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
26.6k
{
95
26.6k
  static auto const helper = cmJSONHelperBuilder::Vector<WorkflowPreset>(
96
26.6k
    cmCMakePresetsErrors::INVALID_PRESETS, WorkflowPresetHelper);
97
98
26.6k
  return helper(out, value, state);
99
26.6k
}
100
}