• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

MeindertN / RoboClerk / 19481929392

18 Nov 2025 10:05PM UTC coverage: 72.65% (+0.3%) from 72.366%
19481929392

push

github

MeindertN
Fixed failing test

2217 of 3233 branches covered (68.57%)

Branch coverage included in aggregate %.

4 of 4 new or added lines in 1 file covered. (100.0%)

526 existing lines in 15 files now uncovered.

6894 of 9308 relevant lines covered (74.07%)

96.09 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.11
/RoboClerk.Core/DataSources/DataSourcesBase.cs
1
using RoboClerk.Core.Configuration;
2
using System;
3
using System.Collections.Generic;
4
using System.IO;
5
using System.IO.Abstractions;
6
using System.Linq;
7
using System.Text.Json;
8

9
namespace RoboClerk
10
{
11
    public abstract class DataSourcesBase : IDataSources
12
    {
13
        protected readonly IConfiguration configuration;
14
        protected readonly IFileProviderPlugin fileSystem;
15
        protected static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
1✔
16

17
        public DataSourcesBase(IConfiguration configuration, IFileProviderPlugin fileSystem)
51✔
18
        {
51✔
19
            this.configuration = configuration;
51✔
20
            this.fileSystem = fileSystem;
51✔
21
        }
51✔
22

23
        public abstract void RefreshDataSources();
24

25
        public abstract List<SOUPItem> GetAllSOUP();
26

27
        public abstract List<EliminatedSOUPItem> GetAllEliminatedSOUP();
28

29
        public abstract List<RiskItem> GetAllRisks();
30

31
        public abstract List<EliminatedRiskItem> GetAllEliminatedRisks();
32

33
        public abstract List<ExternalDependency> GetAllExternalDependencies();
34

35
        public abstract List<TestResult> GetAllTestResults();
36

37
        public abstract List<EliminatedTestResult> GetAllEliminatedTestResults();
38

39
        public abstract List<UnitTestItem> GetAllUnitTests();
40

41
        public abstract List<EliminatedUnitTestItem> GetAllEliminatedUnitTests();
42

43
        public abstract List<RequirementItem> GetAllSoftwareRequirements();
44

45
        public abstract List<EliminatedRequirementItem> GetAllEliminatedSoftwareRequirements();
46

47
        public abstract List<RequirementItem> GetAllSystemRequirements();
48

49
        public abstract List<EliminatedRequirementItem> GetAllEliminatedSystemRequirements();
50

51
        public abstract List<RequirementItem> GetAllDocumentationRequirements();
52

53
        public abstract List<EliminatedRequirementItem> GetAllEliminatedDocumentationRequirements();
54

55
        public abstract List<DocContentItem> GetAllDocContents();
56

57
        public abstract List<EliminatedDocContentItem> GetAllEliminatedDocContents();
58

59
        public abstract List<SoftwareSystemTestItem> GetAllSoftwareSystemTests();
60

61
        public abstract List<EliminatedSoftwareSystemTestItem> GetAllEliminatedSoftwareSystemTests();
62

63
        public abstract List<AnomalyItem> GetAllAnomalies();
64

65
        public abstract List<EliminatedAnomalyItem> GetAllEliminatedAnomalies();
66

67
        public List<LinkedItem> GetItems(TraceEntity te)
68
        {
24✔
69
            if (te.ID == "SystemRequirement")
24✔
70
            {
7✔
71
                return [.. GetAllSystemRequirements().Cast<LinkedItem>()];
7✔
72
            }
73
            else if (te.ID == "SoftwareRequirement")
17✔
74
            {
6✔
75
                return [.. GetAllSoftwareRequirements().Cast<LinkedItem>()];
6✔
76
            }
77
            else if (te.ID == "SoftwareSystemTest")
11✔
78
            {
1✔
79
                return [.. GetAllSoftwareSystemTests().Cast<LinkedItem>()];
1✔
80
            }
81
            else if (te.ID == "UnitTest")
10✔
82
            {
1✔
83
                return [.. GetAllUnitTests().Cast<LinkedItem>()];
1✔
84
            }
85
            else if (te.ID == "TestResult")
9!
UNCOV
86
            {
×
UNCOV
87
                return GetAllTestResults().Cast<LinkedItem>().ToList();
×
88
            }
89
            else if (te.ID == "Risk")
9✔
90
            {
1✔
91
                return [.. GetAllRisks().Cast<LinkedItem>()];
1✔
92
            }
93
            else if (te.ID == "SOUP")
8✔
94
            {
1✔
95
                return [.. GetAllSOUP().Cast<LinkedItem>()];
1✔
96
            }
97
            else if (te.ID == "Anomaly")
7✔
98
            {
1✔
99
                return [.. GetAllAnomalies().Cast<LinkedItem>()];
1✔
100
            }
101
            else if (te.ID == "DocumentationRequirement")
6✔
102
            {
2✔
103
                return [.. GetAllDocumentationRequirements().Cast<LinkedItem>()];
2✔
104
            }
105
            else if (te.ID == "DocContent")
4✔
106
            {
2✔
107
                return [.. GetAllDocContents().Cast<LinkedItem>()];
2✔
108
            }
109
            else if (te.ID == "Eliminated")
2✔
110
            {
1✔
111
                return
1✔
112
                [
1✔
113
                    .. GetAllEliminatedRisks().Cast<LinkedItem>()
1✔
114
,
1✔
115
                    .. GetAllEliminatedSystemRequirements(),
1✔
116
                    .. GetAllEliminatedSoftwareRequirements(),
1✔
117
                    .. GetAllEliminatedDocumentationRequirements(),
1✔
118
                    .. GetAllEliminatedSoftwareSystemTests(),
1✔
119
                    .. GetAllEliminatedAnomalies(),
1✔
120
                    .. GetAllEliminatedDocContents(),
1✔
121
                    .. GetAllEliminatedSOUP(),
1✔
122
                ];
1✔
123
            }
124
            else
125
            {
1✔
126
                throw new Exception($"No datasource available for unknown trace entity: {te.ID}");
1✔
127
            }
128
        }
23✔
129

130
        public SOUPItem GetSOUP(string id)
131
        {
3✔
132
            List<SOUPItem> list = GetAllSOUP();
3✔
133
            return list.Find(f => (f.ItemID == id));
6✔
134
        }
3✔
135

136
        public EliminatedSOUPItem GetEliminatedSOUP(string id)
137
        {
1✔
138
            List<EliminatedSOUPItem> list = GetAllEliminatedSOUP();
1✔
139
            return list.Find(f => (f.ItemID == id));
2✔
140
        }
1✔
141

142
        public RiskItem GetRisk(string id)
143
        {
3✔
144
            List<RiskItem> list = GetAllRisks();
3✔
145
            return list.Find(f => (f.ItemID == id));
6✔
146
        }
3✔
147

148
        public EliminatedRiskItem GetEliminatedRisk(string id)
149
        {
1✔
150
            List<EliminatedRiskItem> list = GetAllEliminatedRisks();
1✔
151
            return list.Find(f => (f.ItemID == id));
2✔
152
        }
1✔
153

154
        public UnitTestItem GetUnitTest(string id)
155
        {
3✔
156
            var items = GetAllUnitTests();
3✔
157
            return items.Find(f => (f.ItemID == id));
7✔
158
        }
3✔
159

160
        public EliminatedUnitTestItem GetEliminatedUnitTest(string id)
UNCOV
161
        {
×
UNCOV
162
            var items = GetAllEliminatedUnitTests();
×
UNCOV
163
            return items.Find(f => (f.ItemID == id));
×
UNCOV
164
        }
×
165

166
        public RequirementItem GetSoftwareRequirement(string id)
167
        {
3✔
168
            var reqs = GetAllSoftwareRequirements();
3✔
169
            return reqs.Find(f => (f.ItemID == id));
6✔
170
        }
3✔
171

172
        public EliminatedRequirementItem GetEliminatedSoftwareRequirement(string id)
173
        {
1✔
174
            var reqs = GetAllEliminatedSoftwareRequirements();
1✔
175
            return reqs.Find(f => (f.ItemID == id));
2✔
176
        }
1✔
177

178
        public RequirementItem GetSystemRequirement(string id)
179
        {
3✔
180
            var reqs = GetAllSystemRequirements();
3✔
181
            return reqs.Find(f => (f.ItemID == id));
6✔
182
        }
3✔
183

184
        public EliminatedRequirementItem GetEliminatedSystemRequirement(string id)
185
        {
1✔
186
            var reqs = GetAllEliminatedSystemRequirements();
1✔
187
            return reqs.Find(f => (f.ItemID == id));
2✔
188
        }
1✔
189

190
        public RequirementItem GetDocumentationRequirement(string id)
191
        {
3✔
192
            var reqs = GetAllDocumentationRequirements();
3✔
193
            return reqs.Find(f => (f.ItemID == id));
6✔
194
        }
3✔
195

196
        public EliminatedRequirementItem GetEliminatedDocumentationRequirement(string id)
197
        {
1✔
198
            var reqs = GetAllEliminatedDocumentationRequirements();
1✔
199
            return reqs.Find(f => (f.ItemID == id));
2✔
200
        }
1✔
201

202
        public DocContentItem GetDocContent(string id)
203
        {
3✔
204
            var items = GetAllDocContents();
3✔
205
            return items.Find(f => (f.ItemID == id));
6✔
206
        }
3✔
207

208
        public EliminatedDocContentItem GetEliminatedDocContent(string id)
209
        {
1✔
210
            var items = GetAllEliminatedDocContents();
1✔
211
            return items.Find(f => (f.ItemID == id));
2✔
212
        }
1✔
213

214
        public SoftwareSystemTestItem GetSoftwareSystemTest(string id)
215
        {
3✔
216
            var items = GetAllSoftwareSystemTests();
3✔
217
            return items.Find(f => (f.ItemID == id));
6✔
218
        }
3✔
219

220
        public EliminatedSoftwareSystemTestItem GetEliminatedSoftwareSystemTestItem(string id)
221
        {
1✔
222
            var items = GetAllEliminatedSoftwareSystemTests();
1✔
223
            return items.Find(f => (f.ItemID == id));
2✔
224
        }
1✔
225

226
        public AnomalyItem GetAnomaly(string id)
227
        {
3✔
228
            var items = GetAllAnomalies();
3✔
229
            return items.Find(f => (f.ItemID == id));
6✔
230
        }
3✔
231

232
        public EliminatedAnomalyItem GetEliminatedAnomaly(string id)
233
        {
1✔
234
            var items = GetAllEliminatedAnomalies();
1✔
235
            return items.Find(f => (f.ItemID == id));
2✔
236
        }
1✔
237

238
        public Item? GetItem(string id) //this will not return eliminated items
239
        {
21✔
240
            var sreq = GetAllSoftwareRequirements();
21✔
241
            int idx = -1;
21✔
242
            if ((idx = sreq.FindIndex(o => o.ItemID == id)) >= 0)
62✔
243
            {
1✔
244
                return sreq[idx];
1✔
245
            }
246
            sreq = GetAllSystemRequirements();
20✔
247
            if ((idx = sreq.FindIndex(o => o.ItemID == id)) >= 0)
56✔
248
            {
11✔
249
                return sreq[idx];
11✔
250
            }
251
            sreq = GetAllDocumentationRequirements();
9✔
252
            if ((idx = sreq.FindIndex(o => o.ItemID == id)) >= 0)
26✔
253
            {
1✔
254
                return sreq[idx];
1✔
255
            }
256
            var dcont = GetAllDocContents();
8✔
257
            if ((idx = dcont.FindIndex(o => o.ItemID == id)) >= 0)
23✔
258
            {
1✔
259
                return dcont[idx];
1✔
260
            }
261
            var tcase = GetAllSoftwareSystemTests();
7✔
262
            if ((idx = tcase.FindIndex(o => o.ItemID == id)) >= 0)
20✔
263
            {
1✔
264
                return tcase[idx];
1✔
265
            }
266
            var utest = GetAllUnitTests();
6✔
267
            if ((idx = utest.FindIndex(o => o.ItemID == id)) >= 0)
25✔
268
            {
1✔
269
                return utest[idx];
1✔
270
            }
271
            var testResults = GetAllTestResults();
5✔
272
            if ((idx = testResults.FindIndex(o => o.ItemID == id)) >= 0)
5!
UNCOV
273
            {
×
UNCOV
274
                return testResults[idx];
×
275
            }
276
            var anomalies = GetAllAnomalies();
5✔
277
            if ((idx = anomalies.FindIndex(o => o.ItemID == id)) >= 0)
14✔
278
            {
1✔
279
                return anomalies[idx];
1✔
280
            }
281
            var SOUPs = GetAllSOUP();
4✔
282
            if ((idx = SOUPs.FindIndex(o => o.ItemID == id)) >= 0)
11✔
283
            {
1✔
284
                return SOUPs[idx];
1✔
285
            }
286
            var Risks = GetAllRisks();
3✔
287
            if ((idx = Risks.FindIndex(o => o.ItemID == id)) >= 0)
8✔
288
            {
1✔
289
                return Risks[idx];
1✔
290
            }
291
            return null;
2✔
292
        }
21✔
293

294
        public string GetConfigValue(string key)
295
        {
2✔
296
            return configuration.ConfigVals.GetValue(key);
2✔
297
        }
2✔
298

299
        public string GetTemplateFile(string fileName)
300
        {
1✔
301
            return fileSystem.ReadAllText(fileSystem.Combine([configuration.TemplateDir, fileName]));
1✔
302
        }
1✔
303

304
        public Stream GetFileStreamFromTemplateDir(string fileName)
305
        {
5✔
306
            var stream = fileSystem.OpenRead(fileSystem.Combine([configuration.TemplateDir, fileName]));
5✔
307
            return stream;
5✔
308
        }
5✔
309

310
        public string ToJSON()
311
        {
1✔
312
            CheckpointDataStorage storage = new()
1✔
313
            {
1✔
314
                SystemRequirements = GetAllSystemRequirements(),
1✔
315
                SoftwareRequirements = GetAllSoftwareRequirements(),
1✔
316
                DocumentationRequirements = GetAllDocumentationRequirements(),
1✔
317
                DocContents = GetAllDocContents(),
1✔
318
                Risks = GetAllRisks(),
1✔
319
                UnitTests = GetAllUnitTests(),
1✔
320
                SoftwareSystemTests = GetAllSoftwareSystemTests(),
1✔
321
                SOUPs = GetAllSOUP(),
1✔
322
                Anomalies = GetAllAnomalies(),
1✔
323
                EliminatedSystemRequirements = GetAllEliminatedSystemRequirements(),
1✔
324
                EliminatedSoftwareRequirements = GetAllEliminatedSoftwareRequirements(),
1✔
325
                EliminatedDocumentationRequirements = GetAllEliminatedDocumentationRequirements(),
1✔
326
                EliminatedSoftwareSystemTests = GetAllEliminatedSoftwareSystemTests(),
1✔
327
                EliminatedRisks = GetAllEliminatedRisks()
1✔
328
            };
1✔
329

330
            var options = new JsonSerializerOptions { WriteIndented = true };
1✔
331
            return JsonSerializer.Serialize(storage, options);
1✔
332
        }
1✔
333
    }
334
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc