Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions src/DemaConsulting.ReqStream/Requirements.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@
/// Reads and processes a YAML file, including any referenced include files.
/// </summary>
/// <param name="path">The path to the YAML file to read.</param>
private void ReadFile(string path)

Check warning on line 138 in src/DemaConsulting.ReqStream/Requirements.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Refactor this method to reduce its Cognitive Complexity from 24 to the 15 allowed. (https://rules.sonarsource.com/csharp/RSPEC-3776)

Check warning on line 138 in src/DemaConsulting.ReqStream/Requirements.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Refactor this method to reduce its Cognitive Complexity from 24 to the 15 allowed. (https://rules.sonarsource.com/csharp/RSPEC-3776)

Check warning on line 138 in src/DemaConsulting.ReqStream/Requirements.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Refactor this method to reduce its Cognitive Complexity from 24 to the 15 allowed. (https://rules.sonarsource.com/csharp/RSPEC-3776)

Check warning on line 138 in src/DemaConsulting.ReqStream/Requirements.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Refactor this method to reduce its Cognitive Complexity from 24 to the 15 allowed. (https://rules.sonarsource.com/csharp/RSPEC-3776)

Check warning on line 138 in src/DemaConsulting.ReqStream/Requirements.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Refactor this method to reduce its Cognitive Complexity from 24 to the 15 allowed. (https://rules.sonarsource.com/csharp/RSPEC-3776)

Check warning on line 138 in src/DemaConsulting.ReqStream/Requirements.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Refactor this method to reduce its Cognitive Complexity from 24 to the 15 allowed. (https://rules.sonarsource.com/csharp/RSPEC-3776)

Check warning on line 138 in src/DemaConsulting.ReqStream/Requirements.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Refactor this method to reduce its Cognitive Complexity from 24 to the 15 allowed. (https://rules.sonarsource.com/csharp/RSPEC-3776)

Check warning on line 138 in src/DemaConsulting.ReqStream/Requirements.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Refactor this method to reduce its Cognitive Complexity from 24 to the 15 allowed. (https://rules.sonarsource.com/csharp/RSPEC-3776)

Check warning on line 138 in src/DemaConsulting.ReqStream/Requirements.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Refactor this method to reduce its Cognitive Complexity from 24 to the 15 allowed. (https://rules.sonarsource.com/csharp/RSPEC-3776)

Check warning on line 138 in src/DemaConsulting.ReqStream/Requirements.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Refactor this method to reduce its Cognitive Complexity from 24 to the 15 allowed. (https://rules.sonarsource.com/csharp/RSPEC-3776)
{
// Convert to full path and check if already included to prevent loops
var fullPath = Path.GetFullPath(path);
Expand Down Expand Up @@ -215,13 +215,9 @@
// Recursively process any included files
if (document.Includes != null)
{
// Process each included file
foreach (var include in document.Includes)
// Process each included file by resolving paths and recursively reading
foreach (var includePath in document.Includes.Select(include => Path.Combine(baseDirectory, include)))
{
// Resolve the include path relative to the current file
var includePath = Path.Combine(baseDirectory, include);

// Recursively read the included file
ReadFile(includePath);
}
}
Expand Down
69 changes: 20 additions & 49 deletions src/DemaConsulting.ReqStream/TraceMatrix.cs
Original file line number Diff line number Diff line change
Expand Up @@ -222,16 +222,9 @@ private bool IsRequirementSatisfied(Requirement requirement, Section rootSection
}

// All tests must have been executed and passed
foreach (var testName in allTests)
{
var result = GetTestResult(testName);
if (result == null || result.Executed == 0 || result.Passed != result.Executed)
{
return false;
}
}

return true;
return allTests
.Select(testName => GetTestResult(testName))
.All(result => result != null && result.Executed > 0 && result.Passed == result.Executed);
}

/// <summary>
Expand All @@ -249,13 +242,9 @@ private static void CollectAllTests(Requirement requirement, Section rootSection
}

// Recursively add tests from children
foreach (var childId in requirement.Children)
foreach (var childReq in requirement.Children.Select(childId => FindRequirement(rootSection, childId)).Where(childReq => childReq != null))
{
var childReq = FindRequirement(rootSection, childId);
if (childReq != null)
{
CollectAllTests(childReq, rootSection, allTests);
}
CollectAllTests(childReq!, rootSection, allTests);
}
}

Expand All @@ -268,25 +257,16 @@ private static void CollectAllTests(Requirement requirement, Section rootSection
private static Requirement? FindRequirement(Section section, string requirementId)
{
// Search in current section
foreach (var req in section.Requirements)
var requirement = section.Requirements.FirstOrDefault(req => req.Id == requirementId);
if (requirement != null)
{
if (req.Id == requirementId)
{
return req;
}
return requirement;
}

// Search in child sections
foreach (var childSection in section.Sections)
{
var found = FindRequirement(childSection, requirementId);
if (found != null)
{
return found;
}
}

return null;
return section.Sections
.Select(childSection => FindRequirement(childSection, requirementId))
.FirstOrDefault(found => found != null);
}

/// <summary>
Expand Down Expand Up @@ -356,24 +336,19 @@ private void ExportRequirementSection(TextWriter writer, Section section, int de
var failed = 0;
var notExecuted = 0;

foreach (var testName in requirement.Tests)
foreach (var result in requirement.Tests.Select(testName => GetTestResult(testName)))
{
var result = GetTestResult(testName);
if (result == null || result.Executed == 0)
{
notExecuted++;
}
else if (result.Executed - result.Passed > 0)
{
failed++;
}
else
{
var failedCount = result.Executed - result.Passed;
if (failedCount > 0)
{
failed++;
}
else
{
passed++;
}
passed++;
}
}

Expand Down Expand Up @@ -453,18 +428,14 @@ private static HashSet<string> CollectTestNames(Section section)
var testNames = new HashSet<string>();

// Collect tests from requirements in this section
foreach (var requirement in section.Requirements)
foreach (var test in section.Requirements.SelectMany(requirement => requirement.Tests))
{
foreach (var test in requirement.Tests)
{
testNames.Add(test);
}
testNames.Add(test);
}

// Recursively collect tests from child sections
foreach (var childSection in section.Sections)
foreach (var childTests in section.Sections.Select(childSection => CollectTestNames(childSection)))
{
var childTests = CollectTestNames(childSection);
testNames.UnionWith(childTests);
}

Expand Down
17 changes: 9 additions & 8 deletions test/DemaConsulting.ReqStream.Tests/ContextTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ public void Context_Create_InvalidMatrixDepth_ThrowsException()
public void Context_WriteLine_NormalMode_WritesToConsole()
{
var originalOut = Console.Out;
var output = new StringWriter();
using var output = new StringWriter();
Console.SetOut(output);

try
Expand All @@ -414,7 +414,7 @@ public void Context_WriteLine_NormalMode_WritesToConsole()
public void Context_WriteLine_SilentMode_DoesNotWriteToConsole()
{
var originalOut = Console.Out;
var output = new StringWriter();
using var output = new StringWriter();
Console.SetOut(output);

try
Expand All @@ -437,7 +437,7 @@ public void Context_WriteLine_SilentMode_DoesNotWriteToConsole()
public void Context_WriteError_NormalMode_WritesToConsole()
{
var originalOut = Console.Out;
var output = new StringWriter();
using var output = new StringWriter();
Console.SetOut(output);

try
Expand All @@ -461,7 +461,7 @@ public void Context_WriteError_NormalMode_WritesToConsole()
public void Context_WriteError_SilentMode_DoesNotWriteToConsole()
{
var originalOut = Console.Out;
var output = new StringWriter();
using var output = new StringWriter();
Console.SetOut(output);

try
Expand Down Expand Up @@ -505,7 +505,7 @@ public void Context_Create_WithLogFile_WritesToLogFile()
public void Context_Create_WithLogFileAndSilent_WritesToLogOnly()
{
var originalOut = Console.Out;
var output = new StringWriter();
using var output = new StringWriter();
Console.SetOut(output);

try
Expand Down Expand Up @@ -653,9 +653,10 @@ public void Context_Dispose_WithLogFile_ClosesLogFile()
{
var logPath = Path.Combine(_testDirectory, "test.log");

var context = Context.Create(["--log", logPath, "--silent"]);
context.WriteLine("Test message");
context.Dispose();
using (var context = Context.Create(["--log", logPath, "--silent"]))
{
context.WriteLine("Test message");
}

// Should be able to delete the file after dispose
File.Delete(logPath);
Expand Down
10 changes: 5 additions & 5 deletions test/DemaConsulting.ReqStream.Tests/ProgramTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public void TestCleanup()
public void Program_Run_WithVersionFlag_PrintsVersion()
{
var originalOut = Console.Out;
var output = new StringWriter();
using var output = new StringWriter();
Console.SetOut(output);

try
Expand All @@ -84,7 +84,7 @@ public void Program_Run_WithVersionFlag_PrintsVersion()
public void Program_Run_WithHelpFlag_PrintsHelp()
{
var originalOut = Console.Out;
var output = new StringWriter();
using var output = new StringWriter();
Console.SetOut(output);

try
Expand Down Expand Up @@ -349,7 +349,7 @@ public void Program_Run_WithTraceMatrixExport_GeneratesMatrix()
public void Program_Run_WithVersionAndHelp_ProcessesVersionFirst()
{
var originalOut = Console.Out;
var output = new StringWriter();
using var output = new StringWriter();
Console.SetOut(output);

try
Expand All @@ -376,7 +376,7 @@ public void Program_Run_WithVersionAndHelp_ProcessesVersionFirst()
public void Program_Run_WithHelpAndValidate_ProcessesHelpFirst()
{
var originalOut = Console.Out;
var output = new StringWriter();
using var output = new StringWriter();
Console.SetOut(output);

try
Expand Down Expand Up @@ -484,7 +484,7 @@ public void Program_Run_WithEnforcementAndUnsatisfiedRequirements_Fails()
// Save current directory and change to test directory
var originalDir = Directory.GetCurrentDirectory();
var originalOut = Console.Out;
var output = new StringWriter();
using var output = new StringWriter();
Console.SetOut(output);

try
Expand Down
Loading