Skip to content

Commit ec6a1d4

Browse files
authored
Merge pull request #1585 from microsoft/vnext
master release
2 parents 522f703 + a2185ea commit ec6a1d4

File tree

4 files changed

+22
-12
lines changed

4 files changed

+22
-12
lines changed

src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<TargetFramework>netstandard2.0</TargetFramework>
44
<LangVersion>latest</LangVersion>
55
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
6-
<Version>1.6.13</Version>
6+
<Version>1.6.14</Version>
77
<Description>OpenAPI.NET Readers for JSON and YAML documents</Description>
88
<SignAssembly>true</SignAssembly>
99
<!-- https://github.com/dotnet/sourcelink/blob/main/docs/README.md#embeduntrackedsources -->

src/Microsoft.OpenApi.Readers/OpenApiStreamReader.cs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,8 @@ public OpenApiStreamReader(OpenApiReaderSettings settings = null)
4141
/// <returns>Instance of newly created OpenApiDocument.</returns>
4242
public OpenApiDocument Read(Stream input, out OpenApiDiagnostic diagnostic)
4343
{
44-
var reader = new StreamReader(input);
45-
var result = new OpenApiTextReaderReader(_settings).Read(reader, out diagnostic);
46-
if (!_settings.LeaveStreamOpen)
47-
{
48-
reader.Dispose();
49-
}
50-
51-
return result;
44+
using var reader = new StreamReader(input, default, true, -1, _settings.LeaveStreamOpen);
45+
return new OpenApiTextReaderReader(_settings).Read(reader, out diagnostic);
5246
}
5347

5448
/// <summary>
@@ -73,7 +67,7 @@ public async Task<ReadResult> ReadAsync(Stream input, CancellationToken cancella
7367
bufferedStream.Position = 0;
7468
}
7569

76-
using var reader = new StreamReader(bufferedStream);
70+
using var reader = new StreamReader(bufferedStream, default, true, -1, _settings.LeaveStreamOpen);
7771
return await new OpenApiTextReaderReader(_settings).ReadAsync(reader, cancellationToken);
7872
}
7973

@@ -86,7 +80,7 @@ public async Task<ReadResult> ReadAsync(Stream input, CancellationToken cancella
8680
/// <returns>Instance of newly created OpenApiDocument</returns>
8781
public T ReadFragment<T>(Stream input, OpenApiSpecVersion version, out OpenApiDiagnostic diagnostic) where T : IOpenApiReferenceable
8882
{
89-
using var reader = new StreamReader(input);
83+
using var reader = new StreamReader(input, default, true, -1, _settings.LeaveStreamOpen);
9084
return new OpenApiTextReaderReader(_settings).ReadFragment<T>(reader, version, out diagnostic);
9185
}
9286
}

src/Microsoft.OpenApi/Microsoft.OpenApi.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<TargetFramework>netstandard2.0</TargetFramework>
44
<LangVersion>Latest</LangVersion>
55
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
6-
<Version>1.6.13</Version>
6+
<Version>1.6.14</Version>
77
<Description>.NET models with JSON and YAML writers for OpenAPI specification</Description>
88
<SignAssembly>true</SignAssembly>
99
<!-- https://github.com/dotnet/sourcelink/blob/main/docs/README.md#embeduntrackedsources -->

test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,21 @@ public void StreamShouldNotCloseIfLeaveStreamOpenSettingEqualsTrue()
2727
reader.Read(stream, out _);
2828
Assert.True(stream.CanRead);
2929
}
30+
31+
[Fact]
32+
public async void StreamShouldNotBeDisposedIfLeaveStreamOpenSettingIsTrue()
33+
{
34+
var memoryStream = new MemoryStream();
35+
using var fileStream = Resources.GetStream(Path.Combine(SampleFolderPath, "petStore.yaml"));
36+
37+
await fileStream.CopyToAsync(memoryStream);
38+
memoryStream.Position = 0;
39+
var stream = memoryStream;
40+
41+
var reader = new OpenApiStreamReader(new() { LeaveStreamOpen = true });
42+
_ = await reader.ReadAsync(stream);
43+
stream.Seek(0, SeekOrigin.Begin); // does not throw an object disposed exception
44+
Assert.True(stream.CanRead);
45+
}
3046
}
3147
}

0 commit comments

Comments
 (0)