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
Original file line number Diff line number Diff line change
Expand Up @@ -419,42 +419,6 @@ public void RequirementsLoader_Load_WithIncludes_LintsIncludedFiles()
Assert.Contains("Unknown field 'unknown_field' in requirement", errors);
}

/// <summary>
/// Test that --lint via Program.Run works correctly.
/// </summary>
[TestMethod]
public void Program_Run_WithLintFlag_RunsLinter()
{
var reqFile = Path.Combine(_testDirectory, "valid.yaml");
File.WriteAllText(reqFile, @"sections:
- title: Test Section
requirements:
- id: REQ-001
title: Test requirement
");

var originalOut = Console.Out;
using var output = new StringWriter();
Console.SetOut(output);

var originalDir = Directory.GetCurrentDirectory();
try
{
Directory.SetCurrentDirectory(_testDirectory);

using var context = Context.Create(["--lint", "--requirements", "*.yaml"]);
Program.Run(context);

Assert.AreEqual(0, context.ExitCode);
Assert.Contains("No issues found", output.ToString());
}
finally
{
Directory.SetCurrentDirectory(originalDir);
Console.SetOut(originalOut);
}
}

/// <summary>
/// Test that a mapping with an unknown field reports an error.
/// </summary>
Expand Down
44 changes: 43 additions & 1 deletion test/DemaConsulting.ReqStream.Tests/ProgramTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,49 @@ public void Program_Run_WithEnforcementAndNoTests_Fails()
}

/// <summary>
/// Test enforcement with failed tests fails.
/// Test Run with lint flag lints requirements files.
/// </summary>
[TestMethod]
public void Program_Run_WithLintFlag_RunsLinter()
{
// Create a valid requirements file
var reqFile = Path.Combine(_testDirectory, "requirements.yaml");
File.WriteAllText(reqFile, @"
sections:
- title: Test Section
requirements:
- id: REQ-001
title: Test Requirement
");

var logFile = Path.Combine(_testDirectory, "lint.log");

// Save current directory and change to test directory
var originalDir = Directory.GetCurrentDirectory();
try
{
Directory.SetCurrentDirectory(_testDirectory);

using (var context = Context.Create(["--lint", "--requirements", "*.yaml", "--silent", "--log", logFile]))
{
Program.Run(context);

Assert.AreEqual(0, context.ExitCode);
}
}
finally
{
Directory.SetCurrentDirectory(originalDir);
}

// Check log contains expected lint output (after context is disposed to flush log)
Assert.IsTrue(File.Exists(logFile), "Log file should exist");
var logContent = File.ReadAllText(logFile);
StringAssert.Contains(logContent, "No issues found");
}

/// <summary>
/// Test Run with enforcement mode and failed tests fails.
/// </summary>
[TestMethod]
public void Program_Run_WithEnforcementAndFailedTests_Fails()
Expand Down
Loading