mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-24 07:54:39 +00:00
fix some tests, rar fails
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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();
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
@@ -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"
|
||||
);
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}*/
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user