Coverage Report

Created: 2026-02-09 06:05

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 <cm3p/json/value.h>
11
12
#include "cmCMakePresetsErrors.h"
13
#include "cmCMakePresetsGraph.h"
14
#include "cmCMakePresetsGraphInternal.h"
15
#include "cmJSONHelpers.h"
16
17
class cmJSONState;
18
19
namespace {
20
using WorkflowPreset = cmCMakePresetsGraph::WorkflowPreset;
21
22
bool WorkflowStepTypeHelper(WorkflowPreset::WorkflowStep::Type& out,
23
                            Json::Value const* value, cmJSONState* state)
24
0
{
25
0
  if (!value) {
26
0
    cmCMakePresetsErrors::INVALID_PRESET(value, state);
27
0
    return false;
28
0
  }
29
30
0
  if (!value->isString()) {
31
0
    return false;
32
0
  }
33
34
0
  if (value->asString() == "configure") {
35
0
    out = WorkflowPreset::WorkflowStep::Type::Configure;
36
0
    return true;
37
0
  }
38
39
0
  if (value->asString() == "build") {
40
0
    out = WorkflowPreset::WorkflowStep::Type::Build;
41
0
    return true;
42
0
  }
43
44
0
  if (value->asString() == "test") {
45
0
    out = WorkflowPreset::WorkflowStep::Type::Test;
46
0
    return true;
47
0
  }
48
49
0
  if (value->asString() == "package") {
50
0
    out = WorkflowPreset::WorkflowStep::Type::Package;
51
0
    return true;
52
0
  }
53
54
0
  cmCMakePresetsErrors::INVALID_PRESET(value, state);
55
0
  return false;
56
0
}
57
58
auto const WorkflowStepHelper =
59
  cmJSONHelperBuilder::Object<WorkflowPreset::WorkflowStep>(
60
    JsonErrors::INVALID_OBJECT, false)
61
    .Bind("type"_s, &WorkflowPreset::WorkflowStep::PresetType,
62
          WorkflowStepTypeHelper)
63
    .Bind("name"_s, &WorkflowPreset::WorkflowStep::PresetName,
64
          cmCMakePresetsGraphInternal::PresetStringHelper);
65
66
auto const WorkflowStepsHelper =
67
  cmJSONHelperBuilder::Vector<WorkflowPreset::WorkflowStep>(
68
    cmCMakePresetsErrors::INVALID_PRESET, WorkflowStepHelper);
69
70
auto const WorkflowPresetHelper =
71
  cmJSONHelperBuilder::Object<WorkflowPreset>(
72
    cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)
73
    .Bind("name"_s, &WorkflowPreset::Name,
74
          cmCMakePresetsGraphInternal::PresetNameHelper)
75
    .Bind<std::nullptr_t>("vendor"_s, nullptr,
76
                          cmCMakePresetsGraphInternal::VendorHelper(
77
                            cmCMakePresetsErrors::INVALID_PRESET),
78
                          false)
79
    .Bind("displayName"_s, &WorkflowPreset::DisplayName,
80
          cmCMakePresetsGraphInternal::PresetStringHelper, false)
81
    .Bind("description"_s, &WorkflowPreset::Description,
82
          cmCMakePresetsGraphInternal::PresetStringHelper, false)
83
    .Bind("steps"_s, &WorkflowPreset::Steps, WorkflowStepsHelper);
84
}
85
86
namespace cmCMakePresetsGraphInternal {
87
bool WorkflowPresetsHelper(
88
  std::vector<cmCMakePresetsGraph::WorkflowPreset>& out,
89
  Json::Value const* value, cmJSONState* state)
90
0
{
91
0
  static auto const helper = cmJSONHelperBuilder::Vector<WorkflowPreset>(
92
0
    cmCMakePresetsErrors::INVALID_PRESETS, WorkflowPresetHelper);
93
94
0
  return helper(out, value, state);
95
0
}
96
}