diff --git a/.github/workflows/copilot-code-review.yml b/.github/workflows/copilot-code-review.yml index f5f15b8c..ba45b93a 100644 --- a/.github/workflows/copilot-code-review.yml +++ b/.github/workflows/copilot-code-review.yml @@ -8,11 +8,12 @@ permissions: contents: read pull-requests: write -jobs: +jobs: copilot-review: - runs-on: ubuntu-latest + runs-on: ubuntu-latest + if: false steps: - - name: GitHub Copilot review + - name: GitHub Copilot review uses: github/copilot-actions/review@v1 with: github-token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/src/TestStack.BDDfy.Tests/FileWriterShould.cs b/src/TestStack.BDDfy.Tests/FileWriterShould.cs new file mode 100644 index 00000000..6fcc27b3 --- /dev/null +++ b/src/TestStack.BDDfy.Tests/FileWriterShould.cs @@ -0,0 +1,28 @@ +using System; +using Shouldly; +using TestStack.BDDfy.Reporters.Writers; +using Xunit; + +namespace TestStack.BDDfy.Tests +{ + public sealed class FileWriterShould + { + [Theory] + [InlineData("report.txt", null)] + [InlineData("./report.txt", null)] + [InlineData("reports/report.txt", null)] + [InlineData("./reports/report.txt", null)] + [InlineData("report.txt", "TestDirectory")] + [InlineData("./reports/report.txt", "TestDirectory")] + [InlineData("./reports/report.txt", "TestDirectory/Reports")] + public void CreatePathIfItDoesNotExist(string reportName, string outputDirectory) + { + var fileWriter = new FileWriter(); + outputDirectory = outputDirectory is null ? null : System.IO.Path.Combine(System.IO.Path.GetTempPath(), Guid.NewGuid().ToString(), $"{outputDirectory}"); + fileWriter.OutputReport("Test content", reportName, outputDirectory); + var expectedPath = System.IO.Path.Combine(outputDirectory ?? string.Empty, reportName); + System.IO.File.Exists(expectedPath).ShouldBeTrue(); + System.IO.File.ReadAllText(expectedPath).ShouldBe("Test content"); + } + } +} \ No newline at end of file diff --git a/src/TestStack.BDDfy/Reporters/Writers/FileWriter.cs b/src/TestStack.BDDfy/Reporters/Writers/FileWriter.cs index 4012b659..e63642f2 100644 --- a/src/TestStack.BDDfy/Reporters/Writers/FileWriter.cs +++ b/src/TestStack.BDDfy/Reporters/Writers/FileWriter.cs @@ -1,17 +1,18 @@ +using System; using System.IO; namespace TestStack.BDDfy.Reporters.Writers { public class FileWriter : IReportWriter { - public void OutputReport(string reportData, string reportName, string outputDirectory = null) + public void OutputReport(string reportData, string reportName, string? outputDirectory = null) { - string directory = outputDirectory ?? FileHelpers.AssemblyDirectory(); - var path = Path.Combine(directory, reportName); + var filePath = Path.Combine(outputDirectory ?? FileHelpers.AssemblyDirectory(), reportName); + string directory = Path.GetDirectoryName(filePath) ?? throw new InvalidOperationException("Unable to determine directory."); - if (File.Exists(path)) - File.Delete(path); - File.WriteAllText(path, reportData); + Directory.CreateDirectory(directory); + + File.WriteAllText(filePath, reportData); } } } \ No newline at end of file diff --git a/src/TestStack.BDDfy/TestStack.BDDfy.csproj b/src/TestStack.BDDfy/TestStack.BDDfy.csproj index 42b5e783..26ee1b63 100644 --- a/src/TestStack.BDDfy/TestStack.BDDfy.csproj +++ b/src/TestStack.BDDfy/TestStack.BDDfy.csproj @@ -1,6 +1,7 @@  true + enable