diff --git a/src/SharpCompress/Common/CompressionType.cs b/src/SharpCompress/Common/CompressionType.cs index 59583423..f9b63855 100644 --- a/src/SharpCompress/Common/CompressionType.cs +++ b/src/SharpCompress/Common/CompressionType.cs @@ -9,6 +9,7 @@ public enum CompressionType Deflate, Rar, LZMA, + LZMA2, BCJ, BCJ2, LZip, diff --git a/src/SharpCompress/Writers/SevenZip/SevenZipWriter.cs b/src/SharpCompress/Writers/SevenZip/SevenZipWriter.cs index 1ed4ed46..3a371df3 100644 --- a/src/SharpCompress/Writers/SevenZip/SevenZipWriter.cs +++ b/src/SharpCompress/Writers/SevenZip/SevenZipWriter.cs @@ -74,14 +74,6 @@ public partial class SevenZipWriter : AbstractWriter } // Compress file data to output stream - // TODO: LZMA2 encoding is not yet implemented in SharpCompress's LzmaStream - if (sevenZipOptions.IsLzma2) - { - throw new ArchiveOperationException( - "LZMA2 encoding is not yet implemented. Use LZMA (IsLzma2 = false) instead." - ); - } - var compressor = new SevenZipStreamsCompressor(OutputStream.NotNull()); var packed = compressor.Compress( progressStream, diff --git a/src/SharpCompress/Writers/SevenZip/SevenZipWriterOptions.cs b/src/SharpCompress/Writers/SevenZip/SevenZipWriterOptions.cs index 65202d20..cba89e6a 100644 --- a/src/SharpCompress/Writers/SevenZip/SevenZipWriterOptions.cs +++ b/src/SharpCompress/Writers/SevenZip/SevenZipWriterOptions.cs @@ -15,12 +15,22 @@ public sealed record SevenZipWriterOptions : IWriterOptions private int _compressionLevel; /// - /// The compression type to use. Supported: LZMA (default), LZMA2 (via CompressionType.LZMA with IsLzma2=true). + /// The compression type to use. Only LZMA is supported in this version. /// public CompressionType CompressionType { get => _compressionType; - init => _compressionType = value; + init + { + if (value != CompressionType.LZMA) + { + throw new ArgumentException( + $"SevenZipWriter only supports CompressionType.LZMA. Got: {value}", + nameof(value) + ); + } + _compressionType = value; + } } /// @@ -54,11 +64,6 @@ public sealed record SevenZipWriterOptions : IWriterOptions public CompressionProviderRegistry Providers { get; init; } = CompressionProviderRegistry.Default; - /// - /// Whether to use LZMA2 instead of LZMA. Default is false (LZMA). - /// - public bool IsLzma2 { get; init; } - /// /// Whether to compress the archive header itself using LZMA. /// Default is true, matching standard 7-Zip behavior. diff --git a/tests/SharpCompress.Test/SevenZip/SevenZipWriterTests.cs b/tests/SharpCompress.Test/SevenZip/SevenZipWriterTests.cs index 5e74bb61..4a7c58b1 100644 --- a/tests/SharpCompress.Test/SevenZip/SevenZipWriterTests.cs +++ b/tests/SharpCompress.Test/SevenZip/SevenZipWriterTests.cs @@ -162,15 +162,9 @@ public class SevenZipWriterTests : TestBase [Fact] public void SevenZipWriter_LZMA2_ThrowsNotSupported() { - // LZMA2 encoding is not yet implemented in SharpCompress's LzmaStream - using var archiveStream = new MemoryStream(); - using var writer = new SevenZipWriter( - archiveStream, - new SevenZipWriterOptions { IsLzma2 = true } + Assert.Throws( + () => new SevenZipWriterOptions(CompressionType.LZMA2) ); - - using var source = new MemoryStream("test"u8.ToArray()); - Assert.Throws(() => writer.Write("test.txt", source, DateTime.UtcNow)); } [Fact]