Compare commits

...

3 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
b83ee67cdc Add regression test for TarArchive.ExtractAllEntries()
Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com>
2025-11-27 16:01:24 +00:00
copilot-swe-agent[bot]
bfb8e9421e Changes before error encountered
Co-authored-by: adamhathcock <527620+adamhathcock@users.noreply.github.com>
2025-11-25 15:57:55 +00:00
copilot-swe-agent[bot]
27e6051241 Initial plan 2025-11-25 15:40:45 +00:00
2 changed files with 25 additions and 1 deletions

View File

@@ -144,7 +144,7 @@ public abstract class AbstractArchive<TEntry, TVolume> : IArchive, IArchiveExtra
/// <returns></returns>
public IReader ExtractAllEntries()
{
if (!IsSolid && Type != ArchiveType.SevenZip)
if (!IsSolid && Type != ArchiveType.SevenZip && Type != ArchiveType.Tar)
{
throw new InvalidOperationException(
"ExtractAllEntries can only be used on solid archives or 7Zip archives (which require random access)."

View File

@@ -295,4 +295,28 @@ public class TarArchiveTests : ArchiveTests
Assert.False(isTar);
}
[Fact]
public void Tar_ExtractAllEntries_ReadsAllEntries()
{
// Tests that ExtractAllEntries correctly iterates through all entries
// This is a regression test for issue #1029
var archiveFullPath = Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar");
using var archive = TarArchive.Open(archiveFullPath);
using var reader = archive.ExtractAllEntries();
var readEntries = 0;
while (reader.MoveToNextEntry())
{
readEntries++;
if (reader.Entry.IsDirectory)
continue;
using var ms = new MemoryStream();
reader.WriteEntryTo(ms);
}
Assert.Equal(archive.Entries.Count, readEntries);
}
}