diff --git a/src/Refitter.SourceGenerator.Tests/Refitter.SourceGenerator.Tests.csproj b/src/Refitter.SourceGenerator.Tests/Refitter.SourceGenerator.Tests.csproj index b61fb365a..7f4ab9fd3 100644 --- a/src/Refitter.SourceGenerator.Tests/Refitter.SourceGenerator.Tests.csproj +++ b/src/Refitter.SourceGenerator.Tests/Refitter.SourceGenerator.Tests.csproj @@ -14,7 +14,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Refitter.Tests/Build/BuildHelper.cs b/src/Refitter.Tests/Build/BuildHelper.cs index 915656804..ea9eb354c 100644 --- a/src/Refitter.Tests/Build/BuildHelper.cs +++ b/src/Refitter.Tests/Build/BuildHelper.cs @@ -7,7 +7,8 @@ public static class BuildHelper { public static bool BuildCSharp(params string[] generatedCode) { - var path = Path.Combine(Directory.GetCurrentDirectory(), Guid.NewGuid().ToString("N")); + var folder = Path.GetDirectoryName(typeof(BuildHelper).Assembly.Location) ?? Path.GetTempPath(); + var path = Path.Combine(folder, Guid.NewGuid().ToString("N")); Directory.CreateDirectory(path); var projectFile = Path.Combine(path, "Project.csproj"); File.WriteAllText(projectFile, ProjectFileContents.Net80App); @@ -38,9 +39,19 @@ public static bool BuildCSharp(params string[] generatedCode) process.WaitForExit(); var result = startResult && process.ExitCode == 0; + if (!result) throw new BuildFailedException(errors.ToString(), output.ToString()); + try + { + Directory.Delete(path, true); + } + catch + { + // Ignore cleanup errors + } + return result; } diff --git a/src/Refitter.Tests/Build/ProjectFileContents.cs b/src/Refitter.Tests/Build/ProjectFileContents.cs index 93401a056..4cc87d72d 100644 --- a/src/Refitter.Tests/Build/ProjectFileContents.cs +++ b/src/Refitter.Tests/Build/ProjectFileContents.cs @@ -9,6 +9,7 @@ public static class ProjectFileContents true + diff --git a/src/Refitter.Tests/Refitter.Tests.csproj b/src/Refitter.Tests/Refitter.Tests.csproj index 5a37c4c22..f3600bda0 100644 --- a/src/Refitter.Tests/Refitter.Tests.csproj +++ b/src/Refitter.Tests/Refitter.Tests.csproj @@ -23,7 +23,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Refitter.Tests/SwaggerPetstoreTests.cs b/src/Refitter.Tests/SwaggerPetstoreTests.cs index 0d29bff6c..003adc0ae 100644 --- a/src/Refitter.Tests/SwaggerPetstoreTests.cs +++ b/src/Refitter.Tests/SwaggerPetstoreTests.cs @@ -584,6 +584,11 @@ public async Task Can_Build_Generated_Code_With_IApiResponse(SampleOpenSpecifica [Test] [Arguments(SampleOpenSpecifications.SwaggerPetstoreJsonV3, "SwaggerPetstore.json")] +#if !DEBUG + [Arguments(SampleOpenSpecifications.SwaggerPetstoreYamlV3, "SwaggerPetstore.yaml")] + [Arguments(SampleOpenSpecifications.SwaggerPetstoreJsonV2, "SwaggerPetstore.json")] + [Arguments(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] +#endif public async Task Can_Build_Generated_Code_With_IObservableResponse(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings(); diff --git a/src/Refitter.Tests/WriteRefitterSettingsFileTests.cs b/src/Refitter.Tests/WriteRefitterSettingsFileTests.cs index 4dc7ddcac..f529d658c 100644 --- a/src/Refitter.Tests/WriteRefitterSettingsFileTests.cs +++ b/src/Refitter.Tests/WriteRefitterSettingsFileTests.cs @@ -113,7 +113,8 @@ public void DetermineSettingsFilePath_Returns_Default_When_Output_Path_Is_Null() public async Task WriteRefitterSettingsFile_Creates_File_With_Default_Path() { // Arrange - var tempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); + var folder = Path.GetDirectoryName(GetType().Assembly.Location) ?? Path.GetTempPath(); + var tempDir = Path.Combine(folder, Guid.NewGuid().ToString()); Directory.CreateDirectory(tempDir); var originalDir = Directory.GetCurrentDirectory(); @@ -268,7 +269,7 @@ public async Task WriteRefitterSettingsFile_Creates_File_When_ContractsOutputPat var content = await File.ReadAllTextAsync(settingsFile); content.Should().Contain("ContractsNamespace"); - + // Verify the deserialized settings contain the correct contracts path var deserializedSettings = Serializer.Deserialize(content); deserializedSettings.ContractsOutputFolder.Should().Be(contractsDir);