fix some tests, rar fails

This commit is contained in:
Adam Hathcock
2025-10-23 15:31:18 +01:00
parent c10cfa2a22
commit ba089fb6cc
8 changed files with 276 additions and 294 deletions

View File

@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Common;
@@ -31,7 +30,7 @@ public static class IArchiveExtensions
/// <param name="destination">The folder to extract into.</param>
/// <param name="progressReport">Optional progress report callback.</param>
/// <param name="cancellationToken">Optional cancellation token.</param>
public static async Task ExtractToDirectory(
public static async Task ExtractToDirectoryAsync(
this IArchive archive,
string destination,
Action<double>? progressReport = null,

View File

@@ -8,7 +8,7 @@ using Xunit;
namespace SharpCompress.Test.Arc
{
public class ArcReaderTests
: ReaderTests { /*
: ReaderTests {
public ArcReaderTests()
{
UseExtensionInsteadOfNameToVerify = true;
@@ -16,7 +16,7 @@ namespace SharpCompress.Test.Arc
}
[Fact]
public void Arc_Uncompressed_Read() => Read("Arc.uncompressed.arc", CompressionType.None);
public Task Arc_Uncompressed_Read() => ReadAsync("Arc.uncompressed.arc", CompressionType.None);
[Fact]
public async Task Arc_Squeezed_Read()
@@ -40,7 +40,7 @@ namespace SharpCompress.Test.Arc
{
if (!reader.Entry.IsDirectory)
{
await reader.WriteAllToDirectoryAsync(
await reader.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -49,6 +49,6 @@ namespace SharpCompress.Test.Arc
}
VerifyFilesByExtension();
}*/
}
}
}

View File

@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using SharpCompress.Archives;
using SharpCompress.Common;
using SharpCompress.Compressors.Xz;
@@ -16,7 +17,7 @@ namespace SharpCompress.Test;
public class ArchiveTests : ReaderTests
{
/*
protected void ArchiveGetParts(IEnumerable<string> testArchives)
{
var arcs = testArchives.Select(a => Path.Combine(TEST_ARCHIVES_PATH, a)).ToArray();
@@ -28,13 +29,13 @@ public class ArchiveTests : ReaderTests
}
}
protected void ArchiveStreamReadExtractAll(string testArchive, CompressionType compression)
protected async Task ArchiveStreamReadExtractAllAsync(string testArchive, CompressionType compression)
{
testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive);
ArchiveStreamReadExtractAll(new[] { testArchive }, compression);
await ArchiveStreamReadExtractAllAsync(new[] { testArchive }, compression);
}
protected void ArchiveStreamReadExtractAll(
protected async Task ArchiveStreamReadExtractAllAsync(
IEnumerable<string> testArchives,
CompressionType compression
)
@@ -55,7 +56,7 @@ public class ArchiveTests : ReaderTests
Assert.True(archive.IsSolid);
using (var reader = archive.ExtractAllEntries())
{
UseReader(reader, compression);
await UseReaderAsync(reader, compression);
}
VerifyFiles();
@@ -66,7 +67,7 @@ public class ArchiveTests : ReaderTests
}
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -84,36 +85,36 @@ public class ArchiveTests : ReaderTests
}
}
protected void ArchiveStreamRead(string testArchive, ReaderOptions? readerOptions = null) =>
ArchiveStreamRead(ArchiveFactory.AutoFactory, testArchive, readerOptions);
protected Task ArchiveStreamReadAsync(string testArchive, ReaderOptions? readerOptions = null) =>
ArchiveStreamReadAsync(ArchiveFactory.AutoFactory, testArchive, readerOptions);
protected void ArchiveStreamRead(
protected Task ArchiveStreamReadAsync(
IArchiveFactory archiveFactory,
string testArchive,
ReaderOptions? readerOptions = null
)
{
testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive);
ArchiveStreamRead(archiveFactory, readerOptions, testArchive);
return ArchiveStreamReadAsync(archiveFactory, readerOptions, testArchive);
}
protected void ArchiveStreamRead(
protected Task ArchiveStreamReadAsync(
ReaderOptions? readerOptions = null,
params string[] testArchives
) => ArchiveStreamRead(ArchiveFactory.AutoFactory, readerOptions, testArchives);
) => ArchiveStreamReadAsync(ArchiveFactory.AutoFactory, readerOptions, testArchives);
protected void ArchiveStreamRead(
protected Task ArchiveStreamReadAsync(
IArchiveFactory archiveFactory,
ReaderOptions? readerOptions = null,
params string[] testArchives
) =>
ArchiveStreamRead(
ArchiveStreamReadAsync(
archiveFactory,
readerOptions,
testArchives.Select(x => Path.Combine(TEST_ARCHIVES_PATH, x))
);
protected void ArchiveStreamRead(
protected async Task ArchiveStreamReadAsync(
IArchiveFactory archiveFactory,
ReaderOptions? readerOptions,
IEnumerable<string> testArchives
@@ -134,7 +135,7 @@ public class ArchiveTests : ReaderTests
{
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -152,16 +153,16 @@ public class ArchiveTests : ReaderTests
}
}
protected void ArchiveStreamMultiRead(
protected Task ArchiveStreamMultiReadAsync(
ReaderOptions? readerOptions = null,
params string[] testArchives
) =>
ArchiveStreamMultiRead(
ArchiveStreamMultiReadAsync(
readerOptions,
testArchives.Select(x => Path.Combine(TEST_ARCHIVES_PATH, x))
);
protected void ArchiveStreamMultiRead(
protected async Task ArchiveStreamMultiReadAsync(
ReaderOptions? readerOptions,
IEnumerable<string> testArchives
)
@@ -175,7 +176,7 @@ public class ArchiveTests : ReaderTests
{
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -184,16 +185,16 @@ public class ArchiveTests : ReaderTests
VerifyFiles();
}
protected void ArchiveOpenStreamRead(
protected Task ArchiveOpenStreamReadAsync(
ReaderOptions? readerOptions = null,
params string[] testArchives
) =>
ArchiveOpenStreamRead(
ArchiveOpenStreamReadAsync(
readerOptions,
testArchives.Select(x => Path.Combine(TEST_ARCHIVES_PATH, x))
);
protected void ArchiveOpenStreamRead(
protected async Task ArchiveOpenStreamReadAsync(
ReaderOptions? readerOptions,
IEnumerable<string> testArchives
)
@@ -207,7 +208,7 @@ public class ArchiveTests : ReaderTests
{
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -253,7 +254,7 @@ public class ArchiveTests : ReaderTests
}
}
protected void ArchiveExtractToDirectory(
protected async Task ArchiveExtractToDirectoryAsync(
string testArchive,
ReaderOptions? readerOptions = null
)
@@ -261,12 +262,12 @@ public class ArchiveTests : ReaderTests
testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive);
using (var archive = ArchiveFactory.Open(new FileInfo(testArchive), readerOptions))
{
archive.ExtractToDirectory(SCRATCH_FILES_PATH);
await archive.ExtractToDirectoryAsync(SCRATCH_FILES_PATH);
}
VerifyFiles();
}
protected void ArchiveFileRead(
protected async Task ArchiveFileReadAsync(
IArchiveFactory archiveFactory,
string testArchive,
ReaderOptions? readerOptions = null
@@ -277,7 +278,7 @@ public class ArchiveTests : ReaderTests
{
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -286,8 +287,8 @@ public class ArchiveTests : ReaderTests
VerifyFiles();
}
protected void ArchiveFileRead(string testArchive, ReaderOptions? readerOptions = null) =>
ArchiveFileRead(ArchiveFactory.AutoFactory, testArchive, readerOptions);
protected Task ArchiveFileReadAsync(string testArchive, ReaderOptions? readerOptions = null) =>
ArchiveFileReadAsync(ArchiveFactory.AutoFactory, testArchive, readerOptions);
protected void ArchiveFileSkip(
string testArchive,
@@ -311,14 +312,14 @@ public class ArchiveTests : ReaderTests
/// <summary>
/// Demonstrate the ExtractionOptions.PreserveFileTime and ExtractionOptions.PreserveAttributes extract options
/// </summary>
protected void ArchiveFileReadEx(string testArchive)
protected async Task ArchiveFileReadExAsync(string testArchive)
{
testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive);
using (var archive = ArchiveFactory.Open(testArchive))
{
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions
{
@@ -333,7 +334,7 @@ public class ArchiveTests : ReaderTests
VerifyFilesEx();
}
protected void ArchiveDeltaDistanceRead(string testArchive)
protected async Task ArchiveDeltaDistanceReadAsync(string testArchive)
{
testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive);
using var archive = ArchiveFactory.Open(testArchive);
@@ -342,7 +343,7 @@ public class ArchiveTests : ReaderTests
if (!entry.IsDirectory)
{
var memory = new MemoryStream();
entry.WriteTo(memory);
await entry.WriteToAsync(memory);
memory.Position = 0;
@@ -570,5 +571,5 @@ public class ArchiveTests : ReaderTests
return (extractedData, crc);
}
*/
}

View File

@@ -1,5 +1,6 @@
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using SharpCompress.Archives;
using SharpCompress.Archives.GZip;
using SharpCompress.Archives.Tar;
@@ -12,51 +13,51 @@ public class GZipArchiveTests : ArchiveTests
{
public GZipArchiveTests() => UseExtensionInsteadOfNameToVerify = true;
/*
[Fact]
public void GZip_Archive_Generic()
public async Task GZip_Archive_Generic()
{
using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")))
using (var archive = ArchiveFactory.Open(stream))
{
var entry = archive.Entries.First();
entry.WriteToFile(Path.Combine(SCRATCH_FILES_PATH, entry.Key.NotNull()));
await entry.WriteToFileAsync(Path.Combine(SCRATCH_FILES_PATH, entry.Key.NotNull()));
var size = entry.Size;
var scratch = new FileInfo(Path.Combine(SCRATCH_FILES_PATH, "Tar.tar"));
var test = new FileInfo(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar"));
Assert.Equal(size, scratch.Length);
Assert.Equal(size, test.Length);
}
CompareArchivesByPath(
await CompareArchivesByPathAsync(
Path.Combine(SCRATCH_FILES_PATH, "Tar.tar"),
Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar")
);
}
[Fact]
public void GZip_Archive()
public async Task GZip_Archive()
{
using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz")))
using (var archive = GZipArchive.Open(stream))
{
var entry = archive.Entries.First();
entry.WriteToFile(Path.Combine(SCRATCH_FILES_PATH, entry.Key.NotNull()));
await entry.WriteToFileAsync(Path.Combine(SCRATCH_FILES_PATH, entry.Key.NotNull()));
var size = entry.Size;
var scratch = new FileInfo(Path.Combine(SCRATCH_FILES_PATH, "Tar.tar"));
var test = new FileInfo(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar"));
Assert.Equal(size, scratch.Length);
Assert.Equal(size, test.Length);
}
CompareArchivesByPath(
await CompareArchivesByPathAsync(
Path.Combine(SCRATCH_FILES_PATH, "Tar.tar"),
Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar")
);
}
[Fact]
public void GZip_Archive_NoAdd()
{
@@ -65,7 +66,7 @@ public class GZipArchiveTests : ArchiveTests
using var archive = GZipArchive.Open(stream);
Assert.Throws<InvalidFormatException>(() => archive.AddEntry("jpg\\test.jpg", jpg));
archive.SaveTo(Path.Combine(SCRATCH_FILES_PATH, "Tar.tar.gz"));
}*/
}
[Fact]
public void GZip_Archive_Multiple_Reads()

View File

@@ -1,4 +1,5 @@
/*using System.IO;
using System.IO;
using System.Threading.Tasks;
using SharpCompress.Common;
using SharpCompress.IO;
using SharpCompress.Readers.GZip;
@@ -11,19 +12,19 @@ public class GZipReaderTests : ReaderTests
public GZipReaderTests() => UseExtensionInsteadOfNameToVerify = true;
[Fact]
public void GZip_Reader_Generic() => Read("Tar.tar.gz", CompressionType.GZip);
public Task GZip_Reader_Generic() => ReadAsync("Tar.tar.gz", CompressionType.GZip);
[Fact]
public void GZip_Reader_Generic2()
public async Task GZip_Reader_Generic2()
{
//read only as GZip itme
using Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz"));
using var reader = GZipReader.Open(new SharpCompressStream(stream));
while (reader.MoveToNextEntry()) // Crash here
while (await reader.MoveToNextEntryAsync()) // Crash here
{
Assert.NotEqual(0, reader.Entry.Size);
Assert.NotEqual(0, reader.Entry.Crc);
}
}
}
*/

View File

@@ -1,5 +1,6 @@
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using SharpCompress.Archives;
using SharpCompress.Archives.Rar;
using SharpCompress.Common;
@@ -9,61 +10,61 @@ using Xunit;
namespace SharpCompress.Test.Rar;
/*
public class RarArchiveTests : ArchiveTests
{
[Fact]
public void Rar_EncryptedFileAndHeader_Archive() =>
ReadRarPassword("Rar.encrypted_filesAndHeader.rar", "test");
public Task Rar_EncryptedFileAndHeader_Archive() =>
ReadRarPasswordAsync("Rar.encrypted_filesAndHeader.rar", "test");
[Fact]
public void Rar_EncryptedFileAndHeader_NoPasswordExceptionTest() =>
Assert.Throws(
public Task Rar_EncryptedFileAndHeader_NoPasswordExceptionTest() =>
Assert.ThrowsAsync(
typeof(CryptographicException),
() => ReadRarPassword("Rar.encrypted_filesAndHeader.rar", null)
async () => await ReadRarPasswordAsync("Rar.encrypted_filesAndHeader.rar", null)
);
[Fact]
public void Rar5_EncryptedFileAndHeader_Archive() =>
ReadRarPassword("Rar5.encrypted_filesAndHeader.rar", "test");
public Task Rar5_EncryptedFileAndHeader_Archive() =>
ReadRarPasswordAsync("Rar5.encrypted_filesAndHeader.rar", "test");
[Fact]
public void Rar5_EncryptedFileAndHeader_Archive_Err() =>
Assert.Throws(
public Task Rar5_EncryptedFileAndHeader_Archive_Err() =>
Assert.ThrowsAsync(
typeof(CryptographicException),
() => ReadRarPassword("Rar5.encrypted_filesAndHeader.rar", "failed")
async () => await ReadRarPasswordAsync("Rar5.encrypted_filesAndHeader.rar", "failed")
);
[Fact]
public void Rar5_EncryptedFileAndHeader_NoPasswordExceptionTest() =>
Assert.Throws(
public Task Rar5_EncryptedFileAndHeader_NoPasswordExceptionTest() =>
Assert.ThrowsAsync(
typeof(CryptographicException),
() => ReadRarPassword("Rar5.encrypted_filesAndHeader.rar", null)
async () => await ReadRarPasswordAsync("Rar5.encrypted_filesAndHeader.rar", null)
);
[Fact]
public void Rar_EncryptedFileOnly_Archive() =>
ReadRarPassword("Rar.encrypted_filesOnly.rar", "test");
public Task Rar_EncryptedFileOnly_Archive() =>
ReadRarPasswordAsync("Rar.encrypted_filesOnly.rar", "test");
[Fact]
public void Rar_EncryptedFileOnly_Archive_Err() =>
Assert.Throws(
public Task Rar_EncryptedFileOnly_Archive_Err() =>
Assert.ThrowsAsync(
typeof(CryptographicException),
() => ReadRarPassword("Rar5.encrypted_filesOnly.rar", "failed")
async () => await ReadRarPasswordAsync("Rar5.encrypted_filesOnly.rar", "failed")
);
[Fact]
public void Rar5_EncryptedFileOnly_Archive() =>
ReadRarPassword("Rar5.encrypted_filesOnly.rar", "test");
public Task Rar5_EncryptedFileOnly_Archive() =>
ReadRarPasswordAsync("Rar5.encrypted_filesOnly.rar", "test");
[Fact]
public void Rar_Encrypted_Archive() => ReadRarPassword("Rar.Encrypted.rar", "test");
public Task Rar_Encrypted_Archive() => ReadRarPasswordAsync("Rar.Encrypted.rar", "test");
[Fact]
public void Rar5_Encrypted_Archive() =>
ReadRarPassword("Rar5.encrypted_filesAndHeader.rar", "test");
public Task Rar5_Encrypted_Archive() =>
ReadRarPasswordAsync("Rar5.encrypted_filesAndHeader.rar", "test");
private void ReadRarPassword(string testArchive, string? password)
private async Task ReadRarPasswordAsync(string testArchive, string? password)
{
using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, testArchive)))
using (
@@ -78,7 +79,7 @@ public class RarArchiveTests : ArchiveTests
if (!entry.IsDirectory)
{
Assert.Equal(CompressionType.Rar, entry.CompressionType);
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -89,12 +90,12 @@ public class RarArchiveTests : ArchiveTests
}
[Fact]
public void Rar_Multi_Archive_Encrypted() =>
Assert.Throws<InvalidFormatException>(() =>
ArchiveFileReadPassword("Rar.EncryptedParts.part01.rar", "test")
public Task Rar_Multi_Archive_Encrypted() =>
Assert.ThrowsAsync<InvalidFormatException>(async () =>
await ArchiveFileReadPasswordAsync("Rar.EncryptedParts.part01.rar", "test")
);
protected void ArchiveFileReadPassword(string archiveName, string password)
protected async Task ArchiveFileReadPasswordAsync(string archiveName, string password)
{
using (
var archive = RarArchive.Open(
@@ -105,7 +106,7 @@ public class RarArchiveTests : ArchiveTests
{
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -115,28 +116,28 @@ public class RarArchiveTests : ArchiveTests
}
[Fact]
public void Rar_None_ArchiveStreamRead() => ArchiveStreamRead("Rar.none.rar");
public Task Rar_None_ArchiveStreamRead() => ArchiveStreamReadAsync("Rar.none.rar");
[Fact]
public void Rar5_None_ArchiveStreamRead() => ArchiveStreamRead("Rar5.none.rar");
public Task Rar5_None_ArchiveStreamRead() => ArchiveStreamReadAsync("Rar5.none.rar");
[Fact]
public void Rar_ArchiveStreamRead() => ArchiveStreamRead("Rar.rar");
public Task Rar_ArchiveStreamRead() => ArchiveStreamReadAsync("Rar.rar");
[Fact]
public void Rar5_ArchiveStreamRead() => ArchiveStreamRead("Rar5.rar");
public Task Rar5_ArchiveStreamRead() => ArchiveStreamReadAsync("Rar5.rar");
[Fact]
public void Rar_test_invalid_exttime_ArchiveStreamRead() =>
public Task Rar_test_invalid_exttime_ArchiveStreamRead() =>
DoRar_test_invalid_exttime_ArchiveStreamRead("Rar.test_invalid_exttime.rar");
private void DoRar_test_invalid_exttime_ArchiveStreamRead(string filename)
private async Task DoRar_test_invalid_exttime_ArchiveStreamRead(string filename)
{
using var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, filename));
using var archive = ArchiveFactory.Open(stream);
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -144,14 +145,14 @@ public class RarArchiveTests : ArchiveTests
}
[Fact]
public void Rar_Jpg_ArchiveStreamRead()
public async Task Rar_Jpg_ArchiveStreamRead()
{
using var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Rar.jpeg.jpg"));
using (var archive = RarArchive.Open(stream, new ReaderOptions { LookForHeader = true }))
{
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -161,12 +162,12 @@ public class RarArchiveTests : ArchiveTests
}
[Fact]
public void Rar_IsSolidArchiveCheck() => DoRar_IsSolidArchiveCheck("Rar.rar");
public Task Rar_IsSolidArchiveCheck() => DoRar_IsSolidArchiveCheck("Rar.rar");
[Fact]
public void Rar5_IsSolidArchiveCheck() => DoRar_IsSolidArchiveCheck("Rar5.rar");
public Task Rar5_IsSolidArchiveCheck() => DoRar_IsSolidArchiveCheck("Rar5.rar");
private void DoRar_IsSolidArchiveCheck(string filename)
private async Task DoRar_IsSolidArchiveCheck(string filename)
{
using (var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, filename)))
{
@@ -174,7 +175,7 @@ public class RarArchiveTests : ArchiveTests
Assert.False(archive.IsSolid);
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -214,22 +215,22 @@ public class RarArchiveTests : ArchiveTests
}
[Fact]
public void Rar_Solid_ArchiveStreamRead() => ArchiveStreamRead("Rar.solid.rar");
public Task Rar_Solid_ArchiveStreamRead() => ArchiveStreamReadAsync("Rar.solid.rar");
[Fact]
public void Rar5_Solid_ArchiveStreamRead() => ArchiveStreamRead("Rar5.solid.rar");
public Task Rar5_Solid_ArchiveStreamRead() => ArchiveStreamReadAsync("Rar5.solid.rar");
[Fact]
public void Rar_Solid_StreamRead_Extract_All() =>
ArchiveStreamReadExtractAll("Rar.solid.rar", CompressionType.Rar);
public Task Rar_Solid_StreamRead_Extract_All() =>
ArchiveStreamReadExtractAllAsync("Rar.solid.rar", CompressionType.Rar);
[Fact]
public void Rar5_Solid_StreamRead_Extract_All() =>
ArchiveStreamReadExtractAll("Rar5.solid.rar", CompressionType.Rar);
public Task Rar5_Solid_StreamRead_Extract_All() =>
ArchiveStreamReadExtractAllAsync("Rar5.solid.rar", CompressionType.Rar);
[Fact]
public void Rar_Multi_ArchiveStreamRead() =>
DoRar_Multi_ArchiveStreamRead(
public Task Rar_Multi_ArchiveStreamRead() =>
DoRar_Multi_ArchiveStreamReadAsync(
[
"Rar.multi.part01.rar",
"Rar.multi.part02.rar",
@@ -242,8 +243,8 @@ public class RarArchiveTests : ArchiveTests
);
[Fact]
public void Rar5_Multi_ArchiveStreamRead() =>
DoRar_Multi_ArchiveStreamRead(
public Task Rar5_Multi_ArchiveStreamRead() =>
DoRar_Multi_ArchiveStreamReadAsync(
[
"Rar5.multi.part01.rar",
"Rar5.multi.part02.rar",
@@ -255,7 +256,7 @@ public class RarArchiveTests : ArchiveTests
false
);
private void DoRar_Multi_ArchiveStreamRead(string[] archives, bool isSolid)
private async Task DoRar_Multi_ArchiveStreamReadAsync(string[] archives, bool isSolid)
{
using var archive = RarArchive.Open(
archives.Select(s => Path.Combine(TEST_ARCHIVES_PATH, s)).Select(File.OpenRead)
@@ -263,7 +264,7 @@ public class RarArchiveTests : ArchiveTests
Assert.Equal(archive.IsSolid, isSolid);
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -271,8 +272,8 @@ public class RarArchiveTests : ArchiveTests
}
[Fact]
public void Rar5_MultiSolid_ArchiveStreamRead() =>
DoRar_Multi_ArchiveStreamRead(
public Task Rar5_MultiSolid_ArchiveStreamRead() =>
DoRar_Multi_ArchiveStreamReadAsync(
[
"Rar.multi.solid.part01.rar",
"Rar.multi.solid.part02.rar",
@@ -285,16 +286,16 @@ public class RarArchiveTests : ArchiveTests
);
[Fact]
public void RarNoneArchiveFileRead() => ArchiveFileRead("Rar.none.rar");
public Task RarNoneArchiveFileRead() => ArchiveFileReadAsync("Rar.none.rar");
[Fact]
public void Rar5NoneArchiveFileRead() => ArchiveFileRead("Rar5.none.rar");
public Task Rar5NoneArchiveFileRead() => ArchiveFileReadAsync("Rar5.none.rar");
[Fact]
public void Rar_ArchiveFileRead() => ArchiveFileRead("Rar.rar");
public Task Rar_ArchiveFileRead() => ArchiveFileReadAsync("Rar.rar");
[Fact]
public void Rar5_ArchiveFileRead() => ArchiveFileRead("Rar5.rar");
public Task Rar5_ArchiveFileRead() => ArchiveFileReadAsync("Rar5.rar");
[Fact]
public void Rar_ArchiveFileRead_HasDirectories() =>
@@ -313,7 +314,7 @@ public class RarArchiveTests : ArchiveTests
}
[Fact]
public void Rar_Jpg_ArchiveFileRead()
public async Task Rar_Jpg_ArchiveFileRead()
{
using (
var archive = RarArchive.Open(
@@ -324,7 +325,7 @@ public class RarArchiveTests : ArchiveTests
{
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(
await entry.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
@@ -334,14 +335,14 @@ public class RarArchiveTests : ArchiveTests
}
[Fact]
public void Rar_Solid_ArchiveFileRead() => ArchiveFileRead("Rar.solid.rar");
public Task Rar_Solid_ArchiveFileRead() => ArchiveFileReadAsync("Rar.solid.rar");
[Fact]
public void Rar5_Solid_ArchiveFileRead() => ArchiveFileRead("Rar5.solid.rar");
public Task Rar5_Solid_ArchiveFileRead() => ArchiveFileReadAsync("Rar5.solid.rar");
[Fact]
public void Rar2_Multi_ArchiveStreamRead() =>
DoRar_Multi_ArchiveStreamRead(
public Task Rar2_Multi_ArchiveStreamRead() =>
DoRar_Multi_ArchiveStreamReadAsync(
[
"Rar2.multi.rar",
"Rar2.multi.r00",
@@ -355,17 +356,17 @@ public class RarArchiveTests : ArchiveTests
);
[Fact]
public void Rar2_Multi_ArchiveFileRead() => ArchiveFileRead("Rar2.multi.rar"); //r00, r01...
public Task Rar2_Multi_ArchiveFileRead() => ArchiveFileReadAsync("Rar2.multi.rar"); //r00, r01...
[Fact]
public void Rar2_ArchiveFileRead() => ArchiveFileRead("Rar2.rar");
public Task Rar2_ArchiveFileRead() => ArchiveFileReadAsync("Rar2.rar");
[Fact]
public void Rar15_ArchiveFileRead()
public async Task Rar15_ArchiveFileRead()
{
UseExtensionInsteadOfNameToVerify = true;
UseCaseInsensitiveToVerify = true;
ArchiveFileRead("Rar15.rar");
await ArchiveFileReadAsync("Rar15.rar");
}
[Fact]
@@ -409,10 +410,10 @@ public class RarArchiveTests : ArchiveTests
}
[Fact]
public void Rar4_Multi_ArchiveFileRead() => ArchiveFileRead("Rar4.multi.part01.rar");
public Task Rar4_Multi_ArchiveFileRead() => ArchiveFileReadAsync("Rar4.multi.part01.rar");
[Fact]
public void Rar4_ArchiveFileRead() => ArchiveFileRead("Rar4.rar");
public Task Rar4_ArchiveFileRead() => ArchiveFileReadAsync("Rar4.rar");
[Fact]
public void Rar_GetPartsSplit() =>
@@ -462,8 +463,8 @@ public class RarArchiveTests : ArchiveTests
);
[Fact]
public void Rar4_Multi_ArchiveStreamRead() =>
DoRar_Multi_ArchiveStreamRead(
public Task Rar4_Multi_ArchiveStreamRead() =>
DoRar_Multi_ArchiveStreamReadAsync(
[
"Rar4.multi.part01.rar",
"Rar4.multi.part02.rar",
@@ -478,8 +479,8 @@ public class RarArchiveTests : ArchiveTests
//no extension to test the lib identifies the archive by content not ext
[Fact]
public void Rar4_Split_ArchiveStreamRead() =>
ArchiveStreamMultiRead(
public Task Rar4_Split_ArchiveStreamRead() =>
ArchiveStreamMultiReadAsync(
null,
[
"Rar4.split.001",
@@ -493,7 +494,7 @@ public class RarArchiveTests : ArchiveTests
//will detect and load other files
[Fact]
public void Rar4_Multi_ArchiveFirstFileRead() => ArchiveFileRead("Rar4.multi.part01.rar");
public Task Rar4_Multi_ArchiveFirstFileRead() => ArchiveFileReadAsync("Rar4.multi.part01.rar");
//"Rar4.multi.part02.rar",
//"Rar4.multi.part03.rar",
@@ -503,7 +504,7 @@ public class RarArchiveTests : ArchiveTests
//"Rar4.multi.part07.rar"
//will detect and load other files
[Fact]
public void Rar4_Split_ArchiveFirstFileRead() => ArchiveFileRead("Rar4.split.001");
public Task Rar4_Split_ArchiveFirstFileRead() => ArchiveFileReadAsync("Rar4.split.001");
//"Rar4.split.002",
//"Rar4.split.003",
@@ -512,8 +513,8 @@ public class RarArchiveTests : ArchiveTests
//"Rar4.split.006"
//will detect and load other files
[Fact]
public void Rar4_Split_ArchiveStreamFirstFileRead() =>
ArchiveStreamMultiRead(
public Task Rar4_Split_ArchiveStreamFirstFileRead() =>
ArchiveStreamMultiReadAsync(
null,
[
"Rar4.split.001",
@@ -527,8 +528,8 @@ public class RarArchiveTests : ArchiveTests
//open with ArchiveFactory.Open and stream
[Fact]
public void Rar4_Split_ArchiveOpen() =>
ArchiveOpenStreamRead(
public Task Rar4_Split_ArchiveOpen() =>
ArchiveOpenStreamReadAsync(
null,
"Rar4.split.001",
"Rar4.split.002",
@@ -540,8 +541,8 @@ public class RarArchiveTests : ArchiveTests
//open with ArchiveFactory.Open and stream
[Fact]
public void Rar4_Multi_ArchiveOpen() =>
ArchiveOpenStreamRead(
public Task Rar4_Multi_ArchiveOpen() =>
ArchiveOpenStreamReadAsync(
null,
"Rar4.multi.part01.rar",
"Rar4.multi.part02.rar",
@@ -571,10 +572,10 @@ public class RarArchiveTests : ArchiveTests
);
[Fact]
public void Rar_Multi_ArchiveFileRead() => ArchiveFileRead("Rar.multi.part01.rar");
public Task Rar_Multi_ArchiveFileRead() => ArchiveFileReadAsync("Rar.multi.part01.rar");
[Fact]
public void Rar5_Multi_ArchiveFileRead() => ArchiveFileRead("Rar5.multi.part01.rar");
public Task Rar5_Multi_ArchiveFileRead() => ArchiveFileReadAsync("Rar5.multi.part01.rar");
[Fact]
public void Rar_IsFirstVolume_True() => DoRar_IsFirstVolume_True("Rar.multi.part01.rar");
@@ -603,7 +604,7 @@ public class RarArchiveTests : ArchiveTests
}
[Fact]
public void Rar5_CRC_Blake2_Archive() => ArchiveFileRead("Rar5.crc_blake2.rar");
public Task Rar5_CRC_Blake2_Archive() => ArchiveFileReadAsync("Rar5.crc_blake2.rar");
[Fact]
void Rar_Iterate_Archive() =>
@@ -635,4 +636,4 @@ public class RarArchiveTests : ArchiveTests
"Failure jpg exe Empty тест.txt jpg\\test.jpg exe\\test.exe"
);
}
*/

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using SharpCompress.Common;
using SharpCompress.IO;
using SharpCompress.Readers;
@@ -11,26 +12,26 @@ namespace SharpCompress.Test;
public abstract class ReaderTests : TestBase
{
/*
protected void Read(
protected async Task ReadAsync(
string testArchive,
CompressionType expectedCompression,
ReaderOptions? options = null
)
{
testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive);
options ??= new ReaderOptions() { BufferSize = 0x20000 }; //test larger buffer size (need test rather than eyeballing debug logs :P)
options.LeaveStreamOpen = true;
ReadImpl(testArchive, expectedCompression, options);
await ReadAsyncImpl(testArchive, expectedCompression, options);
options.LeaveStreamOpen = false;
ReadImpl(testArchive, expectedCompression, options);
await ReadAsyncImpl(testArchive, expectedCompression, options);
VerifyFiles();
}
private void ReadImpl(
private async Task ReadAsyncImpl(
string testArchive,
CompressionType expectedCompression,
ReaderOptions options
@@ -46,54 +47,31 @@ public abstract class ReaderTests : TestBase
using var testStream = new TestStream(protectedStream);
using (var reader = ReaderFactory.Open(testStream, options))
{
UseReader(reader, expectedCompression);
await UseReaderAsync(reader, expectedCompression);
protectedStream.ThrowOnDispose = false;
Assert.False(testStream.IsDisposed, $"{nameof(testStream)} prematurely closed");
}
// Boolean XOR -- If the stream should be left open (true), then the stream should not be diposed (false)
// and if the stream should be closed (false), then the stream should be disposed (true)
var message =
$"{nameof(options.LeaveStreamOpen)} is set to '{options.LeaveStreamOpen}', so {nameof(testStream.IsDisposed)} should be set to '{!testStream.IsDisposed}', but is set to {testStream.IsDisposed}";
Assert.True(options.LeaveStreamOpen != testStream.IsDisposed, message);
}
public void UseReader(IReader reader, CompressionType expectedCompression)
public async Task UseReaderAsync(IReader reader, CompressionType expectedCompression)
{
while (reader.MoveToNextEntry())
while (await reader.MoveToNextEntryAsync())
{
if (!reader.Entry.IsDirectory)
{
Assert.Equal(expectedCompression, reader.Entry.CompressionType);
reader.WriteEntryToDirectory(
await reader.WriteEntryToDirectoryAsync(
SCRATCH_FILES_PATH,
new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
);
}
}
}
protected void Iterate(
string testArchive,
string fileOrder,
CompressionType expectedCompression,
ReaderOptions? options = null
)
{
if (!Environment.OSVersion.IsWindows())
{
fileOrder = fileOrder.Replace('\\', '/');
}
var expected = new Stack<string>(fileOrder.Split(' '));
testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive);
using var file = File.OpenRead(testArchive);
using var forward = new ForwardOnlyStream(file);
using var reader = ReaderFactory.Open(forward, options);
while (reader.MoveToNextEntry())
{
Assert.Equal(expectedCompression, reader.Entry.CompressionType);
Assert.Equal(expected.Pop(), reader.Entry.Key);
}
}*/
}

View File

@@ -1,6 +1,7 @@
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using SharpCompress.Archives;
using SharpCompress.Archives.SevenZip;
using SharpCompress.Common;
@@ -12,80 +13,80 @@ namespace SharpCompress.Test.SevenZip;
public class SevenZipArchiveTests : ArchiveTests
{
/*
[Fact]
public void SevenZipArchive_Solid_StreamRead() => ArchiveStreamRead("7Zip.solid.7z");
public Task SevenZipArchive_Solid_StreamRead() => ArchiveStreamReadAsync("7Zip.solid.7z");
[Fact]
public void SevenZipArchive_NonSolid_StreamRead() => ArchiveStreamRead("7Zip.nonsolid.7z");
public Task SevenZipArchive_NonSolid_StreamRead() => ArchiveStreamReadAsync("7Zip.nonsolid.7z");
[Fact]
public void SevenZipArchive_LZMA_StreamRead() => ArchiveStreamRead("7Zip.LZMA.7z");
public Task SevenZipArchive_LZMA_StreamRead() => ArchiveStreamReadAsync("7Zip.LZMA.7z");
[Fact]
public void SevenZipArchive_LZMA_PathRead() => ArchiveFileRead("7Zip.LZMA.7z");
public Task SevenZipArchive_LZMA_PathRead() => ArchiveFileReadAsync("7Zip.LZMA.7z");
[Fact]
public void SevenZipArchive_LZMAAES_StreamRead() =>
ArchiveStreamRead("7Zip.LZMA.Aes.7z", new ReaderOptions { Password = "testpassword" });
public Task SevenZipArchive_LZMAAES_StreamRead() =>
ArchiveStreamReadAsync("7Zip.LZMA.Aes.7z", new ReaderOptions { Password = "testpassword" });
[Fact]
public void SevenZipArchive_LZMAAES_PathRead() =>
ArchiveFileRead("7Zip.LZMA.Aes.7z", new ReaderOptions { Password = "testpassword" });
public Task SevenZipArchive_LZMAAES_PathRead() =>
ArchiveFileReadAsync("7Zip.LZMA.Aes.7z", new ReaderOptions { Password = "testpassword" });
[Fact]
public void SevenZipArchive_LZMAAES_NoPasswordExceptionTest() =>
Assert.Throws(
public Task SevenZipArchive_LZMAAES_NoPasswordExceptionTest() =>
Assert.ThrowsAsync(
typeof(CryptographicException),
() => ArchiveFileRead("7Zip.LZMA.Aes.7z", new ReaderOptions { Password = null })
async () => await ArchiveFileReadAsync("7Zip.LZMA.Aes.7z", new ReaderOptions { Password = null })
); //was failing with ArgumentNullException not CryptographicException like rar
[Fact]
public void SevenZipArchive_PPMd_StreamRead() => ArchiveStreamRead("7Zip.PPMd.7z");
public Task SevenZipArchive_PPMd_StreamRead() => ArchiveStreamReadAsync("7Zip.PPMd.7z");
[Fact]
public void SevenZipArchive_PPMd_StreamRead_Extract_All() =>
ArchiveStreamReadExtractAll("7Zip.PPMd.7z", CompressionType.PPMd);
public Task SevenZipArchive_PPMd_StreamRead_Extract_All() =>
ArchiveStreamReadExtractAllAsync("7Zip.PPMd.7z", CompressionType.PPMd);
[Fact]
public void SevenZipArchive_PPMd_PathRead() => ArchiveFileRead("7Zip.PPMd.7z");
public Task SevenZipArchive_PPMd_PathRead() => ArchiveFileReadAsync("7Zip.PPMd.7z");
[Fact]
public void SevenZipArchive_LZMA2_StreamRead() => ArchiveStreamRead("7Zip.LZMA2.7z");
public Task SevenZipArchive_LZMA2_StreamRead() => ArchiveStreamReadAsync("7Zip.LZMA2.7z");
[Fact]
public void SevenZipArchive_LZMA2_PathRead() => ArchiveFileRead("7Zip.LZMA2.7z");
public Task SevenZipArchive_LZMA2_PathRead() => ArchiveFileReadAsync("7Zip.LZMA2.7z");
[Fact]
public void SevenZipArchive_LZMA2_EXE_StreamRead() =>
ArchiveStreamRead(new SevenZipFactory(), "7Zip.LZMA2.exe", new() { LookForHeader = true });
public Task SevenZipArchive_LZMA2_EXE_StreamRead() =>
ArchiveStreamReadAsync(new SevenZipFactory(), "7Zip.LZMA2.exe", new() { LookForHeader = true });
[Fact]
public void SevenZipArchive_LZMA2_EXE_PathRead() =>
ArchiveFileRead(new SevenZipFactory(), "7Zip.LZMA2.exe", new() { LookForHeader = true });
public Task SevenZipArchive_LZMA2_EXE_PathRead() =>
ArchiveFileReadAsync(new SevenZipFactory(), "7Zip.LZMA2.exe", new() { LookForHeader = true });
[Fact]
public void SevenZipArchive_LZMA2AES_StreamRead() =>
ArchiveStreamRead("7Zip.LZMA2.Aes.7z", new ReaderOptions { Password = "testpassword" });
public Task SevenZipArchive_LZMA2AES_StreamRead() =>
ArchiveStreamReadAsync("7Zip.LZMA2.Aes.7z", new ReaderOptions { Password = "testpassword" });
[Fact]
public void SevenZipArchive_LZMA2AES_PathRead() =>
ArchiveFileRead("7Zip.LZMA2.Aes.7z", new ReaderOptions { Password = "testpassword" });
public Task SevenZipArchive_LZMA2AES_PathRead() =>
ArchiveFileReadAsync("7Zip.LZMA2.Aes.7z", new ReaderOptions { Password = "testpassword" });
[Fact]
public void SevenZipArchive_BZip2_StreamRead() => ArchiveStreamRead("7Zip.BZip2.7z");
public Task SevenZipArchive_BZip2_StreamRead() => ArchiveStreamReadAsync("7Zip.BZip2.7z");
[Fact]
public void SevenZipArchive_BZip2_PathRead() => ArchiveFileRead("7Zip.BZip2.7z");
public Task SevenZipArchive_BZip2_PathRead() => ArchiveFileReadAsync("7Zip.BZip2.7z");
[Fact]
public void SevenZipArchive_LZMA_Time_Attributes_PathRead() =>
ArchiveFileReadEx("7Zip.LZMA.7z");
public Task SevenZipArchive_LZMA_Time_Attributes_PathRead() =>
ArchiveFileReadExAsync("7Zip.LZMA.7z");
[Fact]
public void SevenZipArchive_BZip2_Split() =>
Assert.Throws<InvalidOperationException>(() =>
ArchiveStreamRead(
public Task SevenZipArchive_BZip2_Split() =>
Assert.ThrowsAsync<InvalidOperationException>(async () =>
await ArchiveStreamReadAsync(
null,
"Original.7z.001",
"Original.7z.002",
@@ -96,11 +97,11 @@ public class SevenZipArchiveTests : ArchiveTests
"Original.7z.007"
)
);
//Same as archive as Original.7z.001 ... 007 files without the root directory 'Original\' in the archive - this caused the verify to fail
[Fact]
public void SevenZipArchive_BZip2_Split_Working() =>
ArchiveStreamMultiRead(
public Task SevenZipArchive_BZip2_Split_Working() =>
ArchiveStreamMultiReadAsync(
null,
"7Zip.BZip2.split.001",
"7Zip.BZip2.split.002",
@@ -110,29 +111,29 @@ public class SevenZipArchiveTests : ArchiveTests
"7Zip.BZip2.split.006",
"7Zip.BZip2.split.007"
);
//will detect and load other files
[Fact]
public void SevenZipArchive_BZip2_Split_FirstFileRead() =>
ArchiveFileRead("7Zip.BZip2.split.001");
public Task SevenZipArchive_BZip2_Split_FirstFileRead() =>
ArchiveFileReadAsync("7Zip.BZip2.split.001");
//"7Zip.BZip2.split.002",
//"7Zip.BZip2.split.003",
//"7Zip.BZip2.split.004",
//"7Zip.BZip2.split.005",
//"7Zip.BZip2.split.006",
//"7Zip.BZip2.split.007"
[Fact]
public void SevenZipArchive_ZSTD_StreamRead() => ArchiveStreamRead("7Zip.ZSTD.7z");
public Task SevenZipArchive_ZSTD_StreamRead() => ArchiveStreamReadAsync("7Zip.ZSTD.7z");
[Fact]
public void SevenZipArchive_ZSTD_PathRead() => ArchiveFileRead("7Zip.ZSTD.7z");
public Task SevenZipArchive_ZSTD_PathRead() => ArchiveFileReadAsync("7Zip.ZSTD.7z");
[Fact]
public void SevenZipArchive_ZSTD_Split() =>
Assert.Throws<InvalidOperationException>(() =>
ArchiveStreamRead(
public Task SevenZipArchive_ZSTD_Split() =>
Assert.ThrowsAsync<InvalidOperationException>(async () =>
await ArchiveStreamReadAsync(
null,
"7Zip.ZSTD.Split.7z.001",
"7Zip.ZSTD.Split.7z.002",
@@ -142,70 +143,70 @@ public class SevenZipArchiveTests : ArchiveTests
"7Zip.ZSTD.Split.7z.006"
)
);
[Fact]
public void SevenZipArchive_EOS_FileRead() => ArchiveFileRead("7Zip.eos.7z");
public Task SevenZipArchive_EOS_FileRead() => ArchiveFileReadAsync("7Zip.eos.7z");
[Fact]
public void SevenZipArchive_Delta_FileRead() => ArchiveFileRead("7Zip.delta.7z");
public Task SevenZipArchive_Delta_FileRead() => ArchiveFileReadAsync("7Zip.delta.7z");
[Fact]
public void SevenZipArchive_ARM_FileRead() => ArchiveFileRead("7Zip.ARM.7z");
public Task SevenZipArchive_ARM_FileRead() => ArchiveFileReadAsync("7Zip.ARM.7z");
[Fact]
public void SevenZipArchive_ARMT_FileRead() => ArchiveFileRead("7Zip.ARMT.7z");
public Task SevenZipArchive_ARMT_FileRead() => ArchiveFileReadAsync("7Zip.ARMT.7z");
[Fact]
public void SevenZipArchive_BCJ_FileRead() => ArchiveFileRead("7Zip.BCJ.7z");
public Task SevenZipArchive_BCJ_FileRead() => ArchiveFileReadAsync("7Zip.BCJ.7z");
[Fact]
public void SevenZipArchive_BCJ2_FileRead() => ArchiveFileRead("7Zip.BCJ2.7z");
public Task SevenZipArchive_BCJ2_FileRead() => ArchiveFileReadAsync("7Zip.BCJ2.7z");
[Fact]
public void SevenZipArchive_IA64_FileRead() => ArchiveFileRead("7Zip.IA64.7z");
public Task SevenZipArchive_IA64_FileRead() => ArchiveFileReadAsync("7Zip.IA64.7z");
[Fact]
public void SevenZipArchive_PPC_FileRead() => ArchiveFileRead("7Zip.PPC.7z");
public Task SevenZipArchive_PPC_FileRead() => ArchiveFileReadAsync("7Zip.PPC.7z");
[Fact]
public void SevenZipArchive_SPARC_FileRead() => ArchiveFileRead("7Zip.SPARC.7z");
public Task SevenZipArchive_SPARC_FileRead() => ArchiveFileReadAsync("7Zip.SPARC.7z");
[Fact]
public void SevenZipArchive_ARM64_FileRead() => ArchiveFileRead("7Zip.ARM64.7z");
public Task SevenZipArchive_ARM64_FileRead() => ArchiveFileReadAsync("7Zip.ARM64.7z");
[Fact]
public void SevenZipArchive_RISCV_FileRead() => ArchiveFileRead("7Zip.RISCV.7z");
public Task SevenZipArchive_RISCV_FileRead() => ArchiveFileReadAsync("7Zip.RISCV.7z");
[Fact]
public void SevenZipArchive_Filters_FileRead() => ArchiveFileRead("7Zip.Filters.7z");
public Task SevenZipArchive_Filters_FileRead() => ArchiveFileReadAsync("7Zip.Filters.7z");
[Fact]
public void SevenZipArchive_Delta_Distance() =>
ArchiveDeltaDistanceRead("7Zip.delta.distance.7z");
public Task SevenZipArchive_Delta_Distance() =>
ArchiveDeltaDistanceReadAsync("7Zip.delta.distance.7z");
[Fact]
public void SevenZipArchive_Tar_PathRead()
public async Task SevenZipArchive_Tar_PathRead()
{
using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "7Zip.Tar.tar.7z")))
using (var archive = SevenZipArchive.Open(stream))
{
var entry = archive.Entries.First();
entry.WriteToFile(Path.Combine(SCRATCH_FILES_PATH, entry.Key.NotNull()));
await entry.WriteToFileAsync(Path.Combine(SCRATCH_FILES_PATH, entry.Key.NotNull()));
var size = entry.Size;
var scratch = new FileInfo(Path.Combine(SCRATCH_FILES_PATH, "7Zip.Tar.tar"));
var test = new FileInfo(Path.Combine(TEST_ARCHIVES_PATH, "7Zip.Tar.tar"));
Assert.Equal(size, scratch.Length);
Assert.Equal(size, test.Length);
}
CompareArchivesByPath(
await CompareArchivesByPathAsync(
Path.Combine(SCRATCH_FILES_PATH, "7Zip.Tar.tar"),
Path.Combine(TEST_ARCHIVES_PATH, "7Zip.Tar.tar")
);
}
[Fact]
public void SevenZipArchive_TestSolidDetection()
{
@@ -213,15 +214,15 @@ public class SevenZipArchiveTests : ArchiveTests
Path.Combine(TEST_ARCHIVES_PATH, "7Zip.solid.1block.7z")
);
Assert.True(oneBlockSolidArchive.IsSolid);
using var solidArchive = SevenZipArchive.Open(
Path.Combine(TEST_ARCHIVES_PATH, "7Zip.solid.7z")
);
Assert.True(solidArchive.IsSolid);
using var nonSolidArchive = SevenZipArchive.Open(
Path.Combine(TEST_ARCHIVES_PATH, "7Zip.nonsolid.7z")
);
Assert.False(nonSolidArchive.IsSolid);
}*/
}
}