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
1 change: 1 addition & 0 deletions docs/reqstream/review-mark/self-test/validation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,4 @@ sections:
tests:
- Validation_Run_WithTrxResultsFile_WritesFile
- Validation_Run_WithXmlResultsFile_WritesFile
- Validation_Run_WithResultsFileInNewDirectory_CreatesDirectory
6 changes: 6 additions & 0 deletions src/DemaConsulting.ReviewMark/SelfTest/Validation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@

// Run the program capturing output to a log file
int exitCode;
using (var testContext = Context.Create(["--silent", "--log", logFile, "--version"]))

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Define a constant instead of using this literal '--log' 4 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Define a constant instead of using this literal '--silent' 9 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Define a constant instead of using this literal '--log' 4 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Define a constant instead of using this literal '--log' 4 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Define a constant instead of using this literal '--silent' 9 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Define a constant instead of using this literal '--silent' 9 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build macos-latest

Define a constant instead of using this literal '--log' 4 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build macos-latest

Define a constant instead of using this literal '--silent' 9 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build macos-latest

Define a constant instead of using this literal '--log' 4 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build macos-latest

Define a constant instead of using this literal '--silent' 9 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build macos-latest

Define a constant instead of using this literal '--log' 4 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build macos-latest

Define a constant instead of using this literal '--silent' 9 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Define a constant instead of using this literal '--log' 4 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Define a constant instead of using this literal '--silent' 9 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Define a constant instead of using this literal '--log' 4 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Define a constant instead of using this literal '--silent' 9 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Define a constant instead of using this literal '--log' 4 times.

Check warning on line 120 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Define a constant instead of using this literal '--silent' 9 times.
{
Program.Run(testContext);
exitCode = testContext.ExitCode;
Expand Down Expand Up @@ -182,7 +182,7 @@

// Run the program to generate the plan file
int exitCode;
using (var testContext = Context.Create(["--silent", "--definition", definitionFile, "--plan", planFile]))

Check warning on line 185 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Define a constant instead of using this literal '--definition' 6 times.

Check warning on line 185 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build windows-latest

Define a constant instead of using this literal '--definition' 6 times.

Check warning on line 185 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build macos-latest

Define a constant instead of using this literal '--definition' 6 times.

Check warning on line 185 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build macos-latest

Define a constant instead of using this literal '--definition' 6 times.

Check warning on line 185 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Define a constant instead of using this literal '--definition' 6 times.

Check warning on line 185 in src/DemaConsulting.ReviewMark/SelfTest/Validation.cs

View workflow job for this annotation

GitHub Actions / Build / Build ubuntu-latest

Define a constant instead of using this literal '--definition' 6 times.
{
Program.Run(testContext);
exitCode = testContext.ExitCode;
Expand Down Expand Up @@ -531,6 +531,12 @@
return;
}

var directory = Path.GetDirectoryName(context.ResultsFile);
if (!string.IsNullOrEmpty(directory))
{
Directory.CreateDirectory(directory);
}

File.WriteAllText(context.ResultsFile, content);
context.WriteLine($"Results written to {context.ResultsFile}");
}
Expand Down
31 changes: 31 additions & 0 deletions test/DemaConsulting.ReviewMark.Tests/SelfTest/ValidationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -202,4 +202,35 @@ public void Validation_Run_WithXmlResultsFile_WritesFile()
}
}
}

/// <summary>
/// Test that Run creates the parent directory when --results specifies a path with a non-existent parent.
/// </summary>
[TestMethod]
public void Validation_Run_WithResultsFileInNewDirectory_CreatesDirectory()
{
// Arrange — use TestDirectory as the root; the 'output' subdirectory does not exist yet
using var tempDir = new TestDirectory();
var subDir = Path.Combine(tempDir.DirectoryPath, "output");
var resultsFile = Path.Combine(subDir, "results.trx");

var originalOut = Console.Out;
try
{
using var outWriter = new StringWriter();
Console.SetOut(outWriter);
using var context = Context.Create(["--validate", "--results", resultsFile]);

// Act
Validation.Run(context);

// Assert — directory and results file were created
Assert.IsTrue(Directory.Exists(subDir), "Parent directory was not created");
Assert.IsTrue(File.Exists(resultsFile), "TRX results file was not created in new directory");
}
finally
{
Console.SetOut(originalOut);
}
}
}
Loading