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]