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(