diff --git a/src/HotChocolate/Core/src/Types/Execution/Internal/SchemaFileExporter.cs b/src/HotChocolate/Core/src/Types/Execution/Internal/SchemaFileExporter.cs index f261e46551b..d7631bfa7f5 100644 --- a/src/HotChocolate/Core/src/Types/Execution/Internal/SchemaFileExporter.cs +++ b/src/HotChocolate/Core/src/Types/Execution/Internal/SchemaFileExporter.cs @@ -38,7 +38,7 @@ public static async Task Export( var directory = System.IO.Path.GetDirectoryName(schemaFileName)!; - if (Directory.Exists(directory)) + if (directory.Length > 0) { Directory.CreateDirectory(directory); } diff --git a/src/HotChocolate/Core/test/Types.Tests/Execution/Internal/SchemaFileExporterTests.cs b/src/HotChocolate/Core/test/Types.Tests/Execution/Internal/SchemaFileExporterTests.cs index cf1c76effea..18ff32ad249 100644 --- a/src/HotChocolate/Core/test/Types.Tests/Execution/Internal/SchemaFileExporterTests.cs +++ b/src/HotChocolate/Core/test/Types.Tests/Execution/Internal/SchemaFileExporterTests.cs @@ -18,7 +18,6 @@ public async Task Export_Should_DeclareBothBatchingModes_When_NoProviderIsRegist .AddGraphQL() .AddQueryType(d => d.Name("Query").Field("foo").Resolve("bar")); var executor = await GetExecutorAsync(services); - Directory.CreateDirectory(_directory); // act var result = await SchemaFileExporter.Export( @@ -64,7 +63,6 @@ public async Task Export_Should_DeclareProviderCapabilities_When_ProviderIsRegis .AddGraphQL() .AddQueryType(d => d.Name("Query").Field("foo").Resolve("bar")); var executor = await GetExecutorAsync(services); - Directory.CreateDirectory(_directory); // act var result = await SchemaFileExporter.Export( @@ -98,6 +96,28 @@ public async Task Export_Should_DeclareProviderCapabilities_When_ProviderIsRegis """ + "\n"); } + [Fact] + public async Task Export_Should_CreateDirectory_When_DirectoryDoesNotExist() + { + // arrange + var services = new ServiceCollection(); + services + .AddGraphQL() + .AddQueryType(d => d.Name("Query").Field("foo").Resolve("bar")); + var executor = await GetExecutorAsync(services); + + // act + var result = await SchemaFileExporter.Export( + System.IO.Path.Combine(_directory, "nested", "schema.graphqls"), + executor, + rewriteToSemanticNonNull: false, + TestContext.Current.CancellationToken); + + // assert + Assert.True(File.Exists(result.SchemaFileName)); + Assert.True(File.Exists(result.SettingsFileName)); + } + public void Dispose() { if (Directory.Exists(_directory))