mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-23 07:25:11 +00:00
Merge pull request #729 from TwanVanDongen/master
Fixed support for RAR 1.5 (algo15)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using SharpCompress.Common.Rar.Headers;
|
||||
|
||||
namespace SharpCompress.Common.Rar;
|
||||
@@ -11,7 +11,8 @@ public abstract class RarEntry : Entry
|
||||
/// As the V2017 port isn't complete, add this check to use the legacy Rar code.
|
||||
/// </summary>
|
||||
internal bool IsRarV3 =>
|
||||
FileHeader.CompressionAlgorithm == 20
|
||||
FileHeader.CompressionAlgorithm == 15
|
||||
|| FileHeader.CompressionAlgorithm == 20
|
||||
|| FileHeader.CompressionAlgorithm == 26
|
||||
|| FileHeader.CompressionAlgorithm == 29
|
||||
|| FileHeader.CompressionAlgorithm == 36; //Nanook - Added 20+26 as Test arc from WinRar2.8 (algo 20) was failing with 2017 code
|
||||
|
||||
@@ -355,6 +355,22 @@ public class RarArchiveTests : ArchiveTests
|
||||
[Fact]
|
||||
public void Rar2_ArchiveFileRead() => ArchiveFileRead("Rar2.rar");
|
||||
|
||||
[Fact]
|
||||
public void Rar15_ArchiveFileRead()
|
||||
{
|
||||
UseExtensionInsteadOfNameToVerify = true;
|
||||
UseCaseInsensitiveToVerify= true;
|
||||
ArchiveFileRead("Rar15.rar");
|
||||
}
|
||||
[Fact]
|
||||
public void Rar15_ArchiveVersionTest()
|
||||
{
|
||||
var testArchive = Path.Combine(TEST_ARCHIVES_PATH, "Rar15.rar");
|
||||
|
||||
using var archive = RarArchive.Open(testArchive);
|
||||
Assert.Equal(1, archive.MinVersion);
|
||||
Assert.Equal(1, archive.MaxVersion);
|
||||
}
|
||||
[Fact]
|
||||
public void Rar2_ArchiveVersionTest()
|
||||
{
|
||||
|
||||
@@ -138,12 +138,23 @@ public class TestBase : IDisposable
|
||||
}
|
||||
|
||||
protected bool UseExtensionInsteadOfNameToVerify { get; set; }
|
||||
protected bool UseCaseInsensitiveToVerify { get; set; }
|
||||
|
||||
protected void VerifyFilesByExtension()
|
||||
{
|
||||
var extracted = Directory
|
||||
.EnumerateFiles(SCRATCH_FILES_PATH, "*.*", SearchOption.AllDirectories)
|
||||
.ToLookup(path => Path.GetExtension(path));
|
||||
ILookup<string, string> extracted;
|
||||
if (UseCaseInsensitiveToVerify)
|
||||
{
|
||||
extracted = Directory
|
||||
.EnumerateFiles(SCRATCH_FILES_PATH, "*.*", SearchOption.AllDirectories)
|
||||
.ToLookup(path => Path.GetExtension(path).ToLowerInvariant());
|
||||
}
|
||||
else
|
||||
{
|
||||
extracted = Directory
|
||||
.EnumerateFiles(SCRATCH_FILES_PATH, "*.*", SearchOption.AllDirectories)
|
||||
.ToLookup(path => Path.GetExtension(path));
|
||||
}
|
||||
var original = Directory
|
||||
.EnumerateFiles(ORIGINAL_FILES_PATH, "*.*", SearchOption.AllDirectories)
|
||||
.ToLookup(path => Path.GetExtension(path));
|
||||
|
||||
BIN
tests/TestArchives/Archives/Rar15.rar
Normal file
BIN
tests/TestArchives/Archives/Rar15.rar
Normal file
Binary file not shown.
Reference in New Issue
Block a user