From 75cc36849bc3db04479f19f8b1bbaaafff0b7c4a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 16 Jan 2026 09:00:13 +0000 Subject: [PATCH 1/5] Initial plan From 29065290808e2ffb85e8864fccfbd244b7ad73b9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 16 Jan 2026 09:12:54 +0000 Subject: [PATCH 2/5] Fix ReaderFactory.OpenAsyncReader to use async IsArchiveAsync methods Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com> --- src/SharpCompress/Readers/ReaderFactory.cs | 10 +++++----- tests/SharpCompress.Test/Ace/AceReaderAsyncTests.cs | 6 +++--- tests/SharpCompress.Test/Arj/ArjReaderAsyncTests.cs | 8 ++++---- tests/SharpCompress.Test/GZip/AsyncTests.cs | 8 ++++---- tests/SharpCompress.Test/GZip/GZipReaderAsyncTests.cs | 4 ++-- tests/SharpCompress.Test/ProgressReportTests.cs | 2 +- tests/SharpCompress.Test/Rar/RarReaderAsyncTests.cs | 10 +++++----- tests/SharpCompress.Test/ReaderTests.cs | 2 +- tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs | 2 +- tests/SharpCompress.Test/Tar/TarReaderAsyncTests.cs | 10 +++++----- tests/SharpCompress.Test/WriterTests.cs | 2 +- tests/SharpCompress.Test/Zip/Zip64AsyncTests.cs | 2 +- tests/SharpCompress.Test/Zip/ZipReaderAsyncTests.cs | 8 ++++---- 13 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/SharpCompress/Readers/ReaderFactory.cs b/src/SharpCompress/Readers/ReaderFactory.cs index acd4e96bd..c0445d8b8 100644 --- a/src/SharpCompress/Readers/ReaderFactory.cs +++ b/src/SharpCompress/Readers/ReaderFactory.cs @@ -24,7 +24,7 @@ public static IReader OpenReader(string filePath, ReaderOptions? options = null) /// /// /// - public static IAsyncReader OpenAsyncReader( + public static ValueTask OpenAsyncReader( string filePath, ReaderOptions? options = null, CancellationToken cancellationToken = default @@ -47,7 +47,7 @@ public static IReader OpenReader(FileInfo fileInfo, ReaderOptions? options = nul /// /// /// - public static IAsyncReader OpenAsyncReader( + public static ValueTask OpenAsyncReader( FileInfo fileInfo, ReaderOptions? options = null, CancellationToken cancellationToken = default @@ -110,7 +110,7 @@ public static IReader OpenReader(Stream stream, ReaderOptions? options = null) ); } - public static IAsyncReader OpenAsyncReader( + public static async ValueTask OpenAsyncReader( Stream stream, ReaderOptions? options = null, CancellationToken cancellationToken = default @@ -136,7 +136,7 @@ public static IAsyncReader OpenAsyncReader( if (testedFactory is IReaderFactory readerFactory) { ((IStreamStack)bStream).StackSeek(pos); - if (testedFactory.IsArchive(bStream)) + if (await testedFactory.IsArchiveAsync(bStream, cancellationToken: cancellationToken)) { ((IStreamStack)bStream).StackSeek(pos); return readerFactory.OpenAsyncReader(bStream, options, cancellationToken); @@ -152,7 +152,7 @@ public static IAsyncReader OpenAsyncReader( continue; // Already tested above } ((IStreamStack)bStream).StackSeek(pos); - if (factory is IReaderFactory readerFactory && factory.IsArchive(bStream)) + if (factory is IReaderFactory readerFactory && await factory.IsArchiveAsync(bStream, cancellationToken: cancellationToken)) { ((IStreamStack)bStream).StackSeek(pos); return readerFactory.OpenAsyncReader(bStream, options, cancellationToken); diff --git a/tests/SharpCompress.Test/Ace/AceReaderAsyncTests.cs b/tests/SharpCompress.Test/Ace/AceReaderAsyncTests.cs index bb8d9ed46..8bd00503d 100644 --- a/tests/SharpCompress.Test/Ace/AceReaderAsyncTests.cs +++ b/tests/SharpCompress.Test/Ace/AceReaderAsyncTests.cs @@ -68,7 +68,7 @@ private async Task ReadAsync(string testArchive, CompressionType expectedCompres { testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive); using Stream stream = File.OpenRead(testArchive); - await using var reader = ReaderFactory.OpenAsyncReader( + await using var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(stream), new ReaderOptions() ); @@ -93,7 +93,7 @@ CompressionType expectedCompression { testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive); using Stream stream = File.OpenRead(testArchive); - await using var reader = ReaderFactory.OpenAsyncReader( + await using var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(stream), new ReaderOptions() { LookForHeader = false } ); @@ -119,7 +119,7 @@ private async Task DoMultiReaderAsync(string[] archiveNames) var streams = testArchives.Select(File.OpenRead).ToList(); try { - await using var reader = ReaderFactory.OpenAsyncReader( + await using var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(streams.First()) ); while (await reader.MoveToNextEntryAsync()) diff --git a/tests/SharpCompress.Test/Arj/ArjReaderAsyncTests.cs b/tests/SharpCompress.Test/Arj/ArjReaderAsyncTests.cs index 3bd094a03..b80aaa144 100644 --- a/tests/SharpCompress.Test/Arj/ArjReaderAsyncTests.cs +++ b/tests/SharpCompress.Test/Arj/ArjReaderAsyncTests.cs @@ -95,7 +95,7 @@ private async Task ReadAsync( { testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive); using Stream stream = File.OpenRead(testArchive); - await using var reader = ReaderFactory.OpenAsyncReader( + await using var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(stream), new ReaderOptions() ); @@ -123,7 +123,7 @@ CompressionType expectedCompression { testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive); using Stream stream = File.OpenRead(testArchive); - await using var reader = ReaderFactory.OpenAsyncReader( + await using var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(stream), new ReaderOptions() { LookForHeader = false } ); @@ -143,7 +143,7 @@ await reader.WriteEntryToDirectoryAsync( private async Task DoMultiReaderAsync( string[] archiveNames, - Func, IAsyncReader> openReader + Func, ValueTask> openReader ) { var testArchives = archiveNames @@ -152,7 +152,7 @@ Func, IAsyncReader> openReader var streams = testArchives.Select(File.OpenRead).ToList(); try { - await using var reader = openReader(streams); + await using var reader = await openReader(streams); while (await reader.MoveToNextEntryAsync()) { if (!reader.Entry.IsDirectory) diff --git a/tests/SharpCompress.Test/GZip/AsyncTests.cs b/tests/SharpCompress.Test/GZip/AsyncTests.cs index fc6109b3e..567c7845c 100644 --- a/tests/SharpCompress.Test/GZip/AsyncTests.cs +++ b/tests/SharpCompress.Test/GZip/AsyncTests.cs @@ -26,7 +26,7 @@ public async ValueTask Reader_Async_Extract_All() #else await using var stream = File.OpenRead(testArchive); #endif - await using var reader = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); + await using var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); await reader.WriteAllToDirectoryAsync( SCRATCH_FILES_PATH, @@ -51,7 +51,7 @@ public async ValueTask Reader_Async_Extract_Single_Entry() #else await using var stream = File.OpenRead(testArchive); #endif - await using var reader = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); + await using var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); while (await reader.MoveToNextEntryAsync()) { @@ -141,7 +141,7 @@ public async ValueTask Async_With_Cancellation_Token() #else await using var stream = File.OpenRead(testArchive); #endif - await using var reader = ReaderFactory.OpenAsyncReader( + await using var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(stream), cancellationToken: cts.Token ); @@ -195,7 +195,7 @@ public async ValueTask EntryStream_ReadAsync_Works() #else await using var stream = File.OpenRead(testArchive); #endif - await using var reader = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); + await using var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); while (await reader.MoveToNextEntryAsync()) { diff --git a/tests/SharpCompress.Test/GZip/GZipReaderAsyncTests.cs b/tests/SharpCompress.Test/GZip/GZipReaderAsyncTests.cs index 8f821805f..afcf3fd54 100644 --- a/tests/SharpCompress.Test/GZip/GZipReaderAsyncTests.cs +++ b/tests/SharpCompress.Test/GZip/GZipReaderAsyncTests.cs @@ -22,7 +22,7 @@ public async ValueTask GZip_Reader_Generic2_Async() { //read only as GZip item using Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")); - await using var reader = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); + await using var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); while (await reader.MoveToNextEntryAsync()) { Assert.NotEqual(0, reader.Entry.Size); @@ -71,7 +71,7 @@ ReaderOptions options ); using var testStream = new TestStream(protectedStream); await using ( - var reader = ReaderFactory.OpenAsyncReader( + var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(testStream), options, default diff --git a/tests/SharpCompress.Test/ProgressReportTests.cs b/tests/SharpCompress.Test/ProgressReportTests.cs index 805cbcf8f..a26e96cd9 100644 --- a/tests/SharpCompress.Test/ProgressReportTests.cs +++ b/tests/SharpCompress.Test/ProgressReportTests.cs @@ -541,7 +541,7 @@ public async ValueTask Zip_ReadAsync_ReportsProgress() var readerOptions = new ReaderOptions { Progress = progress }; await using ( - var reader = ReaderFactory.OpenAsyncReader( + var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(archiveStream), readerOptions ) diff --git a/tests/SharpCompress.Test/Rar/RarReaderAsyncTests.cs b/tests/SharpCompress.Test/Rar/RarReaderAsyncTests.cs index ce168746d..d81507a93 100644 --- a/tests/SharpCompress.Test/Rar/RarReaderAsyncTests.cs +++ b/tests/SharpCompress.Test/Rar/RarReaderAsyncTests.cs @@ -208,7 +208,7 @@ await ReadAsync( private async ValueTask DoRar_Entry_Stream_Async(string filename) { using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, filename))) - await using (var reader = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream))) + await using (var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream))) { while (await reader.MoveToNextEntryAsync()) { @@ -253,7 +253,7 @@ public async ValueTask Rar_Reader_Audio_program_Async() var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Rar.Audio_program.rar")) ) await using ( - var reader = ReaderFactory.OpenAsyncReader( + var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(stream), new ReaderOptions { LookForHeader = true } ) @@ -325,7 +325,7 @@ public async ValueTask Rar5_Solid_Skip_Reader_Async() => private async ValueTask DoRar_Solid_Skip_Reader_Async(string filename) { using var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, filename)); - await using var reader = ReaderFactory.OpenAsyncReader( + await using var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(stream), new ReaderOptions { LookForHeader = true } ); @@ -351,7 +351,7 @@ await reader.WriteEntryToDirectoryAsync( private async ValueTask DoRar_Reader_Skip_Async(string filename) { using var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, filename)); - await using var reader = ReaderFactory.OpenAsyncReader( + await using var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(stream), new ReaderOptions { LookForHeader = true } ); @@ -376,7 +376,7 @@ private async ValueTask ReadAsync( { testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive); using Stream stream = File.OpenRead(testArchive); - await using var reader = ReaderFactory.OpenAsyncReader( + await using var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(stream), readerOptions ?? new ReaderOptions() ); diff --git a/tests/SharpCompress.Test/ReaderTests.cs b/tests/SharpCompress.Test/ReaderTests.cs index 489d87f77..1a7dd5718 100644 --- a/tests/SharpCompress.Test/ReaderTests.cs +++ b/tests/SharpCompress.Test/ReaderTests.cs @@ -146,7 +146,7 @@ private async ValueTask ReadImplAsync( ); using var testStream = new TestStream(protectedStream); await using ( - var reader = ReaderFactory.OpenAsyncReader( + var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(testStream), options, cancellationToken diff --git a/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs b/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs index 5a12507c1..a65f67568 100644 --- a/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs @@ -200,7 +200,7 @@ public async ValueTask Tar_Japanese_Name_Async(int length) { var tropt = new ReaderOptions { ArchiveEncoding = enc }; await using ( - var tr = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(inputMemory), tropt) + var tr = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(inputMemory), tropt) ) { while (await tr.MoveToNextEntryAsync()) diff --git a/tests/SharpCompress.Test/Tar/TarReaderAsyncTests.cs b/tests/SharpCompress.Test/Tar/TarReaderAsyncTests.cs index 2f92fe3a9..855aa3a54 100644 --- a/tests/SharpCompress.Test/Tar/TarReaderAsyncTests.cs +++ b/tests/SharpCompress.Test/Tar/TarReaderAsyncTests.cs @@ -23,7 +23,7 @@ public async ValueTask Tar_Skip_Async() using Stream stream = new ForwardOnlyStream( File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar")) ); - await using var reader = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); + await using var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); var x = 0; while (await reader.MoveToNextEntryAsync()) { @@ -73,7 +73,7 @@ public async ValueTask Tar_GZip_OldGnu_Reader_Async() => public async ValueTask Tar_BZip2_Entry_Stream_Async() { using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.bz2"))) - await using (var reader = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream))) + await using (var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream))) { while (await reader.MoveToNextEntryAsync()) { @@ -184,7 +184,7 @@ public async ValueTask Tar_Broken_Stream_Async() { var archiveFullPath = Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar"); using Stream stream = File.OpenRead(archiveFullPath); - await using var reader = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); + await using var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); var memoryStream = new MemoryStream(); Assert.True(await reader.MoveToNextEntryAsync()); @@ -201,7 +201,7 @@ public async ValueTask Tar_Corrupted_Async() { var archiveFullPath = Path.Combine(TEST_ARCHIVES_PATH, "TarCorrupted.tar"); using Stream stream = File.OpenRead(archiveFullPath); - await using var reader = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); + await using var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); var memoryStream = new MemoryStream(); Assert.True(await reader.MoveToNextEntryAsync()); @@ -220,7 +220,7 @@ public async ValueTask Tar_GZip_With_Symlink_Entries_Async() using Stream stream = File.OpenRead( Path.Combine(TEST_ARCHIVES_PATH, "TarWithSymlink.tar.gz") ); - await using var reader = ReaderFactory.OpenAsyncReader( + await using var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(stream), new ReaderOptions { LookForHeader = true } ); diff --git a/tests/SharpCompress.Test/WriterTests.cs b/tests/SharpCompress.Test/WriterTests.cs index 45a41e7f6..1b4e8bea8 100644 --- a/tests/SharpCompress.Test/WriterTests.cs +++ b/tests/SharpCompress.Test/WriterTests.cs @@ -92,7 +92,7 @@ await writer.WriteAllAsync( readerOptions.ArchiveEncoding.Default = encoding ?? Encoding.Default; - await using var reader = ReaderFactory.OpenAsyncReader( + await using var reader = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(SharpCompressStream.Create(stream, leaveOpen: true)), readerOptions, cancellationToken diff --git a/tests/SharpCompress.Test/Zip/Zip64AsyncTests.cs b/tests/SharpCompress.Test/Zip/Zip64AsyncTests.cs index cd9fe18d2..fbdb1ce62 100644 --- a/tests/SharpCompress.Test/Zip/Zip64AsyncTests.cs +++ b/tests/SharpCompress.Test/Zip/Zip64AsyncTests.cs @@ -199,7 +199,7 @@ public async ValueTask> ReadForwardOnlyAsync(string filename) ZipEntry? prev = null; using (var fs = File.OpenRead(filename)) { - var rd = ReaderFactory.OpenAsyncReader( + var rd = await ReaderFactory.OpenAsyncReader( new AsyncOnlyStream(fs), new ReaderOptions { LookForHeader = false } ); diff --git a/tests/SharpCompress.Test/Zip/ZipReaderAsyncTests.cs b/tests/SharpCompress.Test/Zip/ZipReaderAsyncTests.cs index 3aec7ea9d..c1854598b 100644 --- a/tests/SharpCompress.Test/Zip/ZipReaderAsyncTests.cs +++ b/tests/SharpCompress.Test/Zip/ZipReaderAsyncTests.cs @@ -20,7 +20,7 @@ public async ValueTask Issue_269_Double_Skip_Async() { var path = Path.Combine(TEST_ARCHIVES_PATH, "PrePostHeaders.zip"); using Stream stream = new ForwardOnlyStream(File.OpenRead(path)); - await using var reader = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); + await using var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); var count = 0; while (await reader.MoveToNextEntryAsync()) { @@ -65,7 +65,7 @@ public async ValueTask Zip_Deflate_Streamed_Skip_Async() using Stream stream = new ForwardOnlyStream( File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Zip.deflate.dd.zip")) ); - await using var reader = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); + await using var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream)); var x = 0; while (await reader.MoveToNextEntryAsync()) { @@ -150,7 +150,7 @@ public async ValueTask Zip_Reader_Disposal_Test_Async() using var stream = new TestStream( File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Zip.deflate.dd.zip")) ); - await using (var reader = ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream))) + await using (var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream))) { while (await reader.MoveToNextEntryAsync()) { @@ -174,7 +174,7 @@ public async ValueTask Zip_Reader_Disposal_Test2_Async() File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Zip.deflate.dd.zip")) ) ); - await using var reader = ReaderFactory.OpenAsyncReader(stream); + await using var reader = await ReaderFactory.OpenAsyncReader(stream); while (await reader.MoveToNextEntryAsync()) { if (!reader.Entry.IsDirectory) From e919930cf6ce1b4e6f96f6f00272c55790c3e6cd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 16 Jan 2026 09:23:32 +0000 Subject: [PATCH 3/5] Fix Archive async tests to not use AsyncOnlyStream (archives need seekable streams) Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com> --- tests/SharpCompress.Test/ArchiveTests.cs | 2 +- .../SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs | 12 ++++++------ tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs | 2 +- .../SevenZip/SevenZipArchiveAsyncTests.cs | 10 +++++----- tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs | 12 ++++++------ tests/SharpCompress.Test/WriterTests.cs | 12 +++++------- tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs | 6 +++--- 7 files changed, 27 insertions(+), 29 deletions(-) diff --git a/tests/SharpCompress.Test/ArchiveTests.cs b/tests/SharpCompress.Test/ArchiveTests.cs index b6c5adf85..23e51f7b8 100644 --- a/tests/SharpCompress.Test/ArchiveTests.cs +++ b/tests/SharpCompress.Test/ArchiveTests.cs @@ -623,7 +623,7 @@ IEnumerable testArchives ) await using ( var archive = archiveFactory.OpenAsyncArchive( - new AsyncOnlyStream(stream), + stream, readerOptions ) ) diff --git a/tests/SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs b/tests/SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs index 7ebf2425d..fcf743ed2 100644 --- a/tests/SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs @@ -22,7 +22,7 @@ public async ValueTask GZip_Archive_Generic_Async() #else await using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz"))) #endif - using (var archive = ArchiveFactory.OpenArchive(new AsyncOnlyStream(stream))) + using (var archive = ArchiveFactory.OpenArchive(stream)) { var entry = archive.Entries.First(); await entry.WriteToFileAsync(Path.Combine(SCRATCH_FILES_PATH, entry.Key.NotNull())); @@ -49,7 +49,7 @@ public async ValueTask GZip_Archive_Async() await using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz"))) #endif { - await using (var archive = GZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream))) + await using (var archive = GZipArchive.OpenAsyncArchive(stream)) { var entry = await archive.EntriesAsync.FirstAsync(); await entry.WriteToFileAsync(Path.Combine(SCRATCH_FILES_PATH, entry.Key.NotNull())); @@ -77,7 +77,7 @@ public async ValueTask GZip_Archive_NoAdd_Async() #else await using Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")); #endif - await using (var archive = GZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream))) + await using (var archive = GZipArchive.OpenAsyncArchive(stream)) { Assert.Throws(() => archive.AddEntry("jpg\\test.jpg", jpg)); await archive.SaveToAsync(Path.Combine(SCRATCH_FILES_PATH, "Tar.tar.gz")); @@ -98,7 +98,7 @@ public async ValueTask GZip_Archive_Multiple_Reads_Async() inputStream.Position = 0; } - using var archive = GZipArchive.OpenArchive(new AsyncOnlyStream(inputStream)); + using var archive = GZipArchive.OpenArchive(inputStream); var archiveEntry = archive.Entries.First(); MemoryStream tarStream; @@ -148,7 +148,7 @@ public async ValueTask GZip_Archive_Multiple_Reads_Async() public async Task TestGzCrcWithMostSignificantBitNotNegative_Async() { using var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")); - await using var archive = GZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream)); + await using var archive = GZipArchive.OpenAsyncArchive(stream); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) { Assert.InRange(entry.Crc, 0L, 0xFFFFFFFFL); @@ -159,7 +159,7 @@ public async Task TestGzCrcWithMostSignificantBitNotNegative_Async() public async Task TestGzArchiveTypeGzip_Async() { using var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")); - await using var archive = GZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream)); + await using var archive = GZipArchive.OpenAsyncArchive(stream); Assert.Equal(archive.Type, ArchiveType.GZip); } } diff --git a/tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs b/tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs index 479a56553..db3cd3913 100644 --- a/tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs @@ -655,7 +655,7 @@ CompressionType compression testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive); using var stream = File.OpenRead(testArchive); await using var archive = await ArchiveFactory.OpenAsyncArchive( - new AsyncOnlyStream(stream) + stream ); Assert.True(await archive.IsSolidAsync()); await using (var reader = await archive.ExtractAllEntriesAsync()) diff --git a/tests/SharpCompress.Test/SevenZip/SevenZipArchiveAsyncTests.cs b/tests/SharpCompress.Test/SevenZip/SevenZipArchiveAsyncTests.cs index d60c7a74a..37ca126fc 100644 --- a/tests/SharpCompress.Test/SevenZip/SevenZipArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/SevenZip/SevenZipArchiveAsyncTests.cs @@ -20,7 +20,7 @@ public async Task SevenZipArchive_LZMA_AsyncStreamExtraction() await using var stream = File.OpenRead(testArchive); #endif await using var archive = await ArchiveFactory.OpenAsyncArchive( - new AsyncOnlyStream(stream) + stream ); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) @@ -63,7 +63,7 @@ public async Task SevenZipArchive_LZMA2_AsyncStreamExtraction() await using var stream = File.OpenRead(testArchive); #endif await using var archive = await ArchiveFactory.OpenAsyncArchive( - new AsyncOnlyStream(stream) + stream ); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) @@ -106,7 +106,7 @@ public async Task SevenZipArchive_Solid_AsyncStreamExtraction() await using var stream = File.OpenRead(testArchive); #endif await using var archive = await ArchiveFactory.OpenAsyncArchive( - new AsyncOnlyStream(stream) + stream ); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) @@ -149,7 +149,7 @@ public async Task SevenZipArchive_BZip2_AsyncStreamExtraction() await using var stream = File.OpenRead(testArchive); #endif await using var archive = await ArchiveFactory.OpenAsyncArchive( - new AsyncOnlyStream(stream) + stream ); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) @@ -192,7 +192,7 @@ public async Task SevenZipArchive_PPMd_AsyncStreamExtraction() await using var stream = File.OpenRead(testArchive); #endif await using var archive = await ArchiveFactory.OpenAsyncArchive( - new AsyncOnlyStream(stream) + stream ); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) diff --git a/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs b/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs index a65f67568..ba2aac49b 100644 --- a/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs @@ -35,7 +35,7 @@ public async ValueTask Tar_FileName_Exactly_100_Characters_Async() using (Stream stream = File.OpenWrite(Path.Combine(SCRATCH2_FILES_PATH, archive))) using ( var writer = WriterFactory.OpenAsyncWriter( - new AsyncOnlyStream(stream), + stream, ArchiveType.Tar, CompressionType.None ) @@ -54,7 +54,7 @@ public async ValueTask Tar_FileName_Exactly_100_Characters_Async() var unmodified = Path.Combine(SCRATCH2_FILES_PATH, archive); await using ( var archive2 = TarArchive.OpenAsyncArchive( - new AsyncOnlyStream(File.OpenRead(unmodified)) + File.OpenRead(unmodified) ) ) { @@ -92,7 +92,7 @@ public async ValueTask Tar_VeryLongFilepathReadback_Async() using (Stream stream = File.OpenWrite(Path.Combine(SCRATCH2_FILES_PATH, archive))) using ( var writer = WriterFactory.OpenAsyncWriter( - new AsyncOnlyStream(stream), + stream, ArchiveType.Tar, CompressionType.None ) @@ -111,7 +111,7 @@ public async ValueTask Tar_VeryLongFilepathReadback_Async() var unmodified = Path.Combine(SCRATCH2_FILES_PATH, archive); await using ( var archive2 = TarArchive.OpenAsyncArchive( - new AsyncOnlyStream(File.OpenRead(unmodified)) + File.OpenRead(unmodified) ) ) { @@ -200,7 +200,7 @@ public async ValueTask Tar_Japanese_Name_Async(int length) { var tropt = new ReaderOptions { ArchiveEncoding = enc }; await using ( - var tr = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(inputMemory), tropt) + var tr = await ReaderFactory.OpenAsyncReader(inputMemory, tropt) ) { while (await tr.MoveToNextEntryAsync()) @@ -235,7 +235,7 @@ public async ValueTask Tar_Read_One_At_A_Time_Async() var numberOfEntries = 0; await using ( - var archiveFactory = TarArchive.OpenAsyncArchive(new AsyncOnlyStream(memoryStream)) + var archiveFactory = TarArchive.OpenAsyncArchive(memoryStream) ) { await foreach (var entry in archiveFactory.EntriesAsync) diff --git a/tests/SharpCompress.Test/WriterTests.cs b/tests/SharpCompress.Test/WriterTests.cs index 1b4e8bea8..7a8d71ff2 100644 --- a/tests/SharpCompress.Test/WriterTests.cs +++ b/tests/SharpCompress.Test/WriterTests.cs @@ -92,15 +92,13 @@ await writer.WriteAllAsync( readerOptions.ArchiveEncoding.Default = encoding ?? Encoding.Default; - await using var reader = await ReaderFactory.OpenAsyncReader( - new AsyncOnlyStream(SharpCompressStream.Create(stream, leaveOpen: true)), - readerOptions, - cancellationToken + using var reader = ReaderFactory.OpenReader( + SharpCompressStream.Create(stream, leaveOpen: true), + readerOptions ); - await reader.WriteAllToDirectoryAsync( + reader.WriteAllToDirectory( SCRATCH_FILES_PATH, - new ExtractionOptions { ExtractFullPath = true }, - cancellationToken + new ExtractionOptions { ExtractFullPath = true } ); } VerifyFiles(); diff --git a/tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs b/tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs index 1d114f780..e1fe40176 100644 --- a/tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs @@ -185,7 +185,7 @@ public async ValueTask Zip_Deflate_Entry_Stream_Async() { using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Zip.deflate.zip"))) { - IAsyncArchive archive = ZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream)); + IAsyncArchive archive = ZipArchive.OpenAsyncArchive(stream); try { await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) @@ -209,7 +209,7 @@ public async ValueTask Zip_Deflate_Archive_WriteToDirectoryAsync() { using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Zip.deflate.zip"))) { - IAsyncArchive archive = ZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream)); + IAsyncArchive archive = ZipArchive.OpenAsyncArchive(stream); try { await archive.WriteToDirectoryAsync( @@ -233,7 +233,7 @@ public async ValueTask Zip_Deflate_Archive_WriteToDirectoryAsync_WithProgress() using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Zip.deflate.zip"))) { - IAsyncArchive archive = ZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream)); + IAsyncArchive archive = ZipArchive.OpenAsyncArchive(stream); try { await archive.WriteToDirectoryAsync( From c7da19f3a5e0ca103261ce3f1967fe5d08ab3793 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 16 Jan 2026 09:26:04 +0000 Subject: [PATCH 4/5] Format code with CSharpier Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com> --- src/SharpCompress/Readers/ReaderFactory.cs | 12 +++++++++-- tests/SharpCompress.Test/ArchiveTests.cs | 7 +------ .../Rar/RarArchiveAsyncTests.cs | 4 +--- .../SevenZip/SevenZipArchiveAsyncTests.cs | 20 +++++-------------- .../Tar/TarArchiveAsyncTests.cs | 20 ++++--------------- 5 files changed, 21 insertions(+), 42 deletions(-) diff --git a/src/SharpCompress/Readers/ReaderFactory.cs b/src/SharpCompress/Readers/ReaderFactory.cs index c0445d8b8..8230bf328 100644 --- a/src/SharpCompress/Readers/ReaderFactory.cs +++ b/src/SharpCompress/Readers/ReaderFactory.cs @@ -136,7 +136,12 @@ public static async ValueTask OpenAsyncReader( if (testedFactory is IReaderFactory readerFactory) { ((IStreamStack)bStream).StackSeek(pos); - if (await testedFactory.IsArchiveAsync(bStream, cancellationToken: cancellationToken)) + if ( + await testedFactory.IsArchiveAsync( + bStream, + cancellationToken: cancellationToken + ) + ) { ((IStreamStack)bStream).StackSeek(pos); return readerFactory.OpenAsyncReader(bStream, options, cancellationToken); @@ -152,7 +157,10 @@ public static async ValueTask OpenAsyncReader( continue; // Already tested above } ((IStreamStack)bStream).StackSeek(pos); - if (factory is IReaderFactory readerFactory && await factory.IsArchiveAsync(bStream, cancellationToken: cancellationToken)) + if ( + factory is IReaderFactory readerFactory + && await factory.IsArchiveAsync(bStream, cancellationToken: cancellationToken) + ) { ((IStreamStack)bStream).StackSeek(pos); return readerFactory.OpenAsyncReader(bStream, options, cancellationToken); diff --git a/tests/SharpCompress.Test/ArchiveTests.cs b/tests/SharpCompress.Test/ArchiveTests.cs index 23e51f7b8..f77b7714f 100644 --- a/tests/SharpCompress.Test/ArchiveTests.cs +++ b/tests/SharpCompress.Test/ArchiveTests.cs @@ -621,12 +621,7 @@ IEnumerable testArchives throwOnDispose: true ) ) - await using ( - var archive = archiveFactory.OpenAsyncArchive( - stream, - readerOptions - ) - ) + await using (var archive = archiveFactory.OpenAsyncArchive(stream, readerOptions)) { try { diff --git a/tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs b/tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs index db3cd3913..818982442 100644 --- a/tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs @@ -654,9 +654,7 @@ CompressionType compression { testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive); using var stream = File.OpenRead(testArchive); - await using var archive = await ArchiveFactory.OpenAsyncArchive( - stream - ); + await using var archive = await ArchiveFactory.OpenAsyncArchive(stream); Assert.True(await archive.IsSolidAsync()); await using (var reader = await archive.ExtractAllEntriesAsync()) { diff --git a/tests/SharpCompress.Test/SevenZip/SevenZipArchiveAsyncTests.cs b/tests/SharpCompress.Test/SevenZip/SevenZipArchiveAsyncTests.cs index 37ca126fc..16c290545 100644 --- a/tests/SharpCompress.Test/SevenZip/SevenZipArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/SevenZip/SevenZipArchiveAsyncTests.cs @@ -19,9 +19,7 @@ public async Task SevenZipArchive_LZMA_AsyncStreamExtraction() #else await using var stream = File.OpenRead(testArchive); #endif - await using var archive = await ArchiveFactory.OpenAsyncArchive( - stream - ); + await using var archive = await ArchiveFactory.OpenAsyncArchive(stream); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) { @@ -62,9 +60,7 @@ public async Task SevenZipArchive_LZMA2_AsyncStreamExtraction() #else await using var stream = File.OpenRead(testArchive); #endif - await using var archive = await ArchiveFactory.OpenAsyncArchive( - stream - ); + await using var archive = await ArchiveFactory.OpenAsyncArchive(stream); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) { @@ -105,9 +101,7 @@ public async Task SevenZipArchive_Solid_AsyncStreamExtraction() #else await using var stream = File.OpenRead(testArchive); #endif - await using var archive = await ArchiveFactory.OpenAsyncArchive( - stream - ); + await using var archive = await ArchiveFactory.OpenAsyncArchive(stream); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) { @@ -148,9 +142,7 @@ public async Task SevenZipArchive_BZip2_AsyncStreamExtraction() #else await using var stream = File.OpenRead(testArchive); #endif - await using var archive = await ArchiveFactory.OpenAsyncArchive( - stream - ); + await using var archive = await ArchiveFactory.OpenAsyncArchive(stream); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) { @@ -191,9 +183,7 @@ public async Task SevenZipArchive_PPMd_AsyncStreamExtraction() #else await using var stream = File.OpenRead(testArchive); #endif - await using var archive = await ArchiveFactory.OpenAsyncArchive( - stream - ); + await using var archive = await ArchiveFactory.OpenAsyncArchive(stream); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) { diff --git a/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs b/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs index ba2aac49b..0411a6abc 100644 --- a/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs @@ -52,11 +52,7 @@ public async ValueTask Tar_FileName_Exactly_100_Characters_Async() // Step 2: check if the written tar file can be read correctly var unmodified = Path.Combine(SCRATCH2_FILES_PATH, archive); - await using ( - var archive2 = TarArchive.OpenAsyncArchive( - File.OpenRead(unmodified) - ) - ) + await using (var archive2 = TarArchive.OpenAsyncArchive(File.OpenRead(unmodified))) { Assert.Equal(1, await archive2.EntriesAsync.CountAsync()); Assert.Contains( @@ -109,11 +105,7 @@ public async ValueTask Tar_VeryLongFilepathReadback_Async() // Step 2: check if the written tar file can be read correctly var unmodified = Path.Combine(SCRATCH2_FILES_PATH, archive); - await using ( - var archive2 = TarArchive.OpenAsyncArchive( - File.OpenRead(unmodified) - ) - ) + await using (var archive2 = TarArchive.OpenAsyncArchive(File.OpenRead(unmodified))) { Assert.Equal(1, await archive2.EntriesAsync.CountAsync()); Assert.Contains( @@ -199,9 +191,7 @@ public async ValueTask Tar_Japanese_Name_Async(int length) using (var inputMemory = new MemoryStream(mstm.ToArray())) { var tropt = new ReaderOptions { ArchiveEncoding = enc }; - await using ( - var tr = await ReaderFactory.OpenAsyncReader(inputMemory, tropt) - ) + await using (var tr = await ReaderFactory.OpenAsyncReader(inputMemory, tropt)) { while (await tr.MoveToNextEntryAsync()) { @@ -234,9 +224,7 @@ public async ValueTask Tar_Read_One_At_A_Time_Async() var numberOfEntries = 0; - await using ( - var archiveFactory = TarArchive.OpenAsyncArchive(memoryStream) - ) + await using (var archiveFactory = TarArchive.OpenAsyncArchive(memoryStream)) { await foreach (var entry in archiveFactory.EntriesAsync) { From 0de5c59a77745a3109a70ea58301d3ffe8951bda Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 16 Jan 2026 09:50:36 +0000 Subject: [PATCH 5/5] Restore AsyncOnlyStream in archive async tests as requested Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com> --- tests/SharpCompress.Test/ArchiveTests.cs | 7 ++++- .../GZip/GZipArchiveAsyncTests.cs | 12 ++++----- .../Rar/RarArchiveAsyncTests.cs | 4 ++- .../SevenZip/SevenZipArchiveAsyncTests.cs | 20 ++++++++++---- .../Tar/TarArchiveAsyncTests.cs | 27 ++++++++++++++----- tests/SharpCompress.Test/WriterTests.cs | 12 +++++---- .../Zip/ZipArchiveAsyncTests.cs | 6 ++--- 7 files changed, 61 insertions(+), 27 deletions(-) diff --git a/tests/SharpCompress.Test/ArchiveTests.cs b/tests/SharpCompress.Test/ArchiveTests.cs index f77b7714f..b6c5adf85 100644 --- a/tests/SharpCompress.Test/ArchiveTests.cs +++ b/tests/SharpCompress.Test/ArchiveTests.cs @@ -621,7 +621,12 @@ IEnumerable testArchives throwOnDispose: true ) ) - await using (var archive = archiveFactory.OpenAsyncArchive(stream, readerOptions)) + await using ( + var archive = archiveFactory.OpenAsyncArchive( + new AsyncOnlyStream(stream), + readerOptions + ) + ) { try { diff --git a/tests/SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs b/tests/SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs index fcf743ed2..7ebf2425d 100644 --- a/tests/SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs @@ -22,7 +22,7 @@ public async ValueTask GZip_Archive_Generic_Async() #else await using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz"))) #endif - using (var archive = ArchiveFactory.OpenArchive(stream)) + using (var archive = ArchiveFactory.OpenArchive(new AsyncOnlyStream(stream))) { var entry = archive.Entries.First(); await entry.WriteToFileAsync(Path.Combine(SCRATCH_FILES_PATH, entry.Key.NotNull())); @@ -49,7 +49,7 @@ public async ValueTask GZip_Archive_Async() await using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz"))) #endif { - await using (var archive = GZipArchive.OpenAsyncArchive(stream)) + await using (var archive = GZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream))) { var entry = await archive.EntriesAsync.FirstAsync(); await entry.WriteToFileAsync(Path.Combine(SCRATCH_FILES_PATH, entry.Key.NotNull())); @@ -77,7 +77,7 @@ public async ValueTask GZip_Archive_NoAdd_Async() #else await using Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")); #endif - await using (var archive = GZipArchive.OpenAsyncArchive(stream)) + await using (var archive = GZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream))) { Assert.Throws(() => archive.AddEntry("jpg\\test.jpg", jpg)); await archive.SaveToAsync(Path.Combine(SCRATCH_FILES_PATH, "Tar.tar.gz")); @@ -98,7 +98,7 @@ public async ValueTask GZip_Archive_Multiple_Reads_Async() inputStream.Position = 0; } - using var archive = GZipArchive.OpenArchive(inputStream); + using var archive = GZipArchive.OpenArchive(new AsyncOnlyStream(inputStream)); var archiveEntry = archive.Entries.First(); MemoryStream tarStream; @@ -148,7 +148,7 @@ public async ValueTask GZip_Archive_Multiple_Reads_Async() public async Task TestGzCrcWithMostSignificantBitNotNegative_Async() { using var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")); - await using var archive = GZipArchive.OpenAsyncArchive(stream); + await using var archive = GZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream)); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) { Assert.InRange(entry.Crc, 0L, 0xFFFFFFFFL); @@ -159,7 +159,7 @@ public async Task TestGzCrcWithMostSignificantBitNotNegative_Async() public async Task TestGzArchiveTypeGzip_Async() { using var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")); - await using var archive = GZipArchive.OpenAsyncArchive(stream); + await using var archive = GZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream)); Assert.Equal(archive.Type, ArchiveType.GZip); } } diff --git a/tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs b/tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs index 818982442..479a56553 100644 --- a/tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/Rar/RarArchiveAsyncTests.cs @@ -654,7 +654,9 @@ CompressionType compression { testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive); using var stream = File.OpenRead(testArchive); - await using var archive = await ArchiveFactory.OpenAsyncArchive(stream); + await using var archive = await ArchiveFactory.OpenAsyncArchive( + new AsyncOnlyStream(stream) + ); Assert.True(await archive.IsSolidAsync()); await using (var reader = await archive.ExtractAllEntriesAsync()) { diff --git a/tests/SharpCompress.Test/SevenZip/SevenZipArchiveAsyncTests.cs b/tests/SharpCompress.Test/SevenZip/SevenZipArchiveAsyncTests.cs index 16c290545..d60c7a74a 100644 --- a/tests/SharpCompress.Test/SevenZip/SevenZipArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/SevenZip/SevenZipArchiveAsyncTests.cs @@ -19,7 +19,9 @@ public async Task SevenZipArchive_LZMA_AsyncStreamExtraction() #else await using var stream = File.OpenRead(testArchive); #endif - await using var archive = await ArchiveFactory.OpenAsyncArchive(stream); + await using var archive = await ArchiveFactory.OpenAsyncArchive( + new AsyncOnlyStream(stream) + ); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) { @@ -60,7 +62,9 @@ public async Task SevenZipArchive_LZMA2_AsyncStreamExtraction() #else await using var stream = File.OpenRead(testArchive); #endif - await using var archive = await ArchiveFactory.OpenAsyncArchive(stream); + await using var archive = await ArchiveFactory.OpenAsyncArchive( + new AsyncOnlyStream(stream) + ); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) { @@ -101,7 +105,9 @@ public async Task SevenZipArchive_Solid_AsyncStreamExtraction() #else await using var stream = File.OpenRead(testArchive); #endif - await using var archive = await ArchiveFactory.OpenAsyncArchive(stream); + await using var archive = await ArchiveFactory.OpenAsyncArchive( + new AsyncOnlyStream(stream) + ); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) { @@ -142,7 +148,9 @@ public async Task SevenZipArchive_BZip2_AsyncStreamExtraction() #else await using var stream = File.OpenRead(testArchive); #endif - await using var archive = await ArchiveFactory.OpenAsyncArchive(stream); + await using var archive = await ArchiveFactory.OpenAsyncArchive( + new AsyncOnlyStream(stream) + ); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) { @@ -183,7 +191,9 @@ public async Task SevenZipArchive_PPMd_AsyncStreamExtraction() #else await using var stream = File.OpenRead(testArchive); #endif - await using var archive = await ArchiveFactory.OpenAsyncArchive(stream); + await using var archive = await ArchiveFactory.OpenAsyncArchive( + new AsyncOnlyStream(stream) + ); await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) { diff --git a/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs b/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs index 0411a6abc..b21fe278f 100644 --- a/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs @@ -35,7 +35,7 @@ public async ValueTask Tar_FileName_Exactly_100_Characters_Async() using (Stream stream = File.OpenWrite(Path.Combine(SCRATCH2_FILES_PATH, archive))) using ( var writer = WriterFactory.OpenAsyncWriter( - stream, + new AsyncOnlyStream(stream), ArchiveType.Tar, CompressionType.None ) @@ -52,7 +52,11 @@ public async ValueTask Tar_FileName_Exactly_100_Characters_Async() // Step 2: check if the written tar file can be read correctly var unmodified = Path.Combine(SCRATCH2_FILES_PATH, archive); - await using (var archive2 = TarArchive.OpenAsyncArchive(File.OpenRead(unmodified))) + await using ( + var archive2 = TarArchive.OpenAsyncArchive( + new AsyncOnlyStream(File.OpenRead(unmodified)) + ) + ) { Assert.Equal(1, await archive2.EntriesAsync.CountAsync()); Assert.Contains( @@ -88,7 +92,7 @@ public async ValueTask Tar_VeryLongFilepathReadback_Async() using (Stream stream = File.OpenWrite(Path.Combine(SCRATCH2_FILES_PATH, archive))) using ( var writer = WriterFactory.OpenAsyncWriter( - stream, + new AsyncOnlyStream(stream), ArchiveType.Tar, CompressionType.None ) @@ -105,7 +109,11 @@ public async ValueTask Tar_VeryLongFilepathReadback_Async() // Step 2: check if the written tar file can be read correctly var unmodified = Path.Combine(SCRATCH2_FILES_PATH, archive); - await using (var archive2 = TarArchive.OpenAsyncArchive(File.OpenRead(unmodified))) + await using ( + var archive2 = TarArchive.OpenAsyncArchive( + new AsyncOnlyStream(File.OpenRead(unmodified)) + ) + ) { Assert.Equal(1, await archive2.EntriesAsync.CountAsync()); Assert.Contains( @@ -191,7 +199,12 @@ public async ValueTask Tar_Japanese_Name_Async(int length) using (var inputMemory = new MemoryStream(mstm.ToArray())) { var tropt = new ReaderOptions { ArchiveEncoding = enc }; - await using (var tr = await ReaderFactory.OpenAsyncReader(inputMemory, tropt)) + await using ( + var tr = await ReaderFactory.OpenAsyncReader( + new AsyncOnlyStream(inputMemory), + tropt + ) + ) { while (await tr.MoveToNextEntryAsync()) { @@ -224,7 +237,9 @@ public async ValueTask Tar_Read_One_At_A_Time_Async() var numberOfEntries = 0; - await using (var archiveFactory = TarArchive.OpenAsyncArchive(memoryStream)) + await using ( + var archiveFactory = TarArchive.OpenAsyncArchive(new AsyncOnlyStream(memoryStream)) + ) { await foreach (var entry in archiveFactory.EntriesAsync) { diff --git a/tests/SharpCompress.Test/WriterTests.cs b/tests/SharpCompress.Test/WriterTests.cs index 7a8d71ff2..1b4e8bea8 100644 --- a/tests/SharpCompress.Test/WriterTests.cs +++ b/tests/SharpCompress.Test/WriterTests.cs @@ -92,13 +92,15 @@ await writer.WriteAllAsync( readerOptions.ArchiveEncoding.Default = encoding ?? Encoding.Default; - using var reader = ReaderFactory.OpenReader( - SharpCompressStream.Create(stream, leaveOpen: true), - readerOptions + await using var reader = await ReaderFactory.OpenAsyncReader( + new AsyncOnlyStream(SharpCompressStream.Create(stream, leaveOpen: true)), + readerOptions, + cancellationToken ); - reader.WriteAllToDirectory( + await reader.WriteAllToDirectoryAsync( SCRATCH_FILES_PATH, - new ExtractionOptions { ExtractFullPath = true } + new ExtractionOptions { ExtractFullPath = true }, + cancellationToken ); } VerifyFiles(); diff --git a/tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs b/tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs index e1fe40176..1d114f780 100644 --- a/tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs @@ -185,7 +185,7 @@ public async ValueTask Zip_Deflate_Entry_Stream_Async() { using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Zip.deflate.zip"))) { - IAsyncArchive archive = ZipArchive.OpenAsyncArchive(stream); + IAsyncArchive archive = ZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream)); try { await foreach (var entry in archive.EntriesAsync.Where(entry => !entry.IsDirectory)) @@ -209,7 +209,7 @@ public async ValueTask Zip_Deflate_Archive_WriteToDirectoryAsync() { using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Zip.deflate.zip"))) { - IAsyncArchive archive = ZipArchive.OpenAsyncArchive(stream); + IAsyncArchive archive = ZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream)); try { await archive.WriteToDirectoryAsync( @@ -233,7 +233,7 @@ public async ValueTask Zip_Deflate_Archive_WriteToDirectoryAsync_WithProgress() using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Zip.deflate.zip"))) { - IAsyncArchive archive = ZipArchive.OpenAsyncArchive(stream); + IAsyncArchive archive = ZipArchive.OpenAsyncArchive(new AsyncOnlyStream(stream)); try { await archive.WriteToDirectoryAsync(