diff --git a/SevenZip.Tests/MiscellaneousTests.cs b/SevenZip.Tests/MiscellaneousTests.cs index 1ed9ce1..b3d9e77 100644 --- a/SevenZip.Tests/MiscellaneousTests.cs +++ b/SevenZip.Tests/MiscellaneousTests.cs @@ -4,7 +4,6 @@ using System.Diagnostics; using System.IO; using System.Runtime.Serialization.Formatters.Binary; - using System.Text.Json; using NUnit.Framework; using SevenZip; @@ -16,13 +15,17 @@ public class MiscellaneousTests : TestBase public void SerializationTest() { var argumentException = new ArgumentException("blahblah"); + var binaryFormatter = new BinaryFormatter(); - using var ms = new MemoryStream(); - using var fileStream = File.Create(TemporaryFile); - - JsonSerializer.Serialize(ms, argumentException); - var compressor = new SevenZipCompressor(); - compressor.CompressStream(ms, fileStream); + using (var ms = new MemoryStream()) + { + using (var fileStream = File.Create(TemporaryFile)) + { + binaryFormatter.Serialize(ms, argumentException); + var compressor = new SevenZipCompressor(); + compressor.CompressStream(ms, fileStream); + } + } } #if SFX @@ -90,23 +93,27 @@ public void LzmaEncodeDecodeTest() using (var input = new FileStream(TemporaryFile, FileMode.Open)) { var decoder = new LzmaDecodeStream(input); - using var output = new FileStream(newZip, FileMode.Create); + using (var output = new FileStream(newZip, FileMode.Create)) + { - int bufSize = 24576, count; - var buf = new byte[bufSize]; + int bufSize = 24576, count; + var buf = new byte[bufSize]; - while ((count = decoder.Read(buf, 0, bufSize)) > 0) - { - output.Write(buf, 0, count); + while ((count = decoder.Read(buf, 0, bufSize)) > 0) + { + output.Write(buf, 0, count); + } } } Assert.IsTrue(File.Exists(newZip)); - using var extractor = new SevenZipExtractor(newZip); + using (var extractor = new SevenZipExtractor(newZip)) + { - Assert.AreEqual(1, extractor.FilesCount); - Assert.AreEqual("zip.txt", extractor.ArchiveFileNames[0]); + Assert.AreEqual(1, extractor.FilesCount); + Assert.AreEqual("zip.txt", extractor.ArchiveFileNames[0]); + } } } } diff --git a/SevenZip.Tests/SevenZip.Tests.csproj b/SevenZip.Tests/SevenZip.Tests.csproj index 0e6ea4a..2d208ea 100644 --- a/SevenZip.Tests/SevenZip.Tests.csproj +++ b/SevenZip.Tests/SevenZip.Tests.csproj @@ -1,6 +1,6 @@  - net6.0 + net6.0;net472 SevenZip.Tests SevenZipTests Copyright © Joel Ahlgren 2023 diff --git a/SevenZip.Tests/SevenZipCompressorTests.cs b/SevenZip.Tests/SevenZipCompressorTests.cs index 83ba150..6e9f9da 100644 --- a/SevenZip.Tests/SevenZipCompressorTests.cs +++ b/SevenZip.Tests/SevenZipCompressorTests.cs @@ -381,24 +381,26 @@ public void AppendToArchiveWithEncryptedHeadersTest() [Test] public void AppendEncryptedFileToStreamTest() { - using var fileStream = new FileStream(TemporaryFile, FileMode.Create); - - var compressor = new SevenZipCompressor + using (var fileStream = new FileStream(TemporaryFile, FileMode.Create)) { - ArchiveFormat = OutArchiveFormat.SevenZip, - CompressionMethod = CompressionMethod.Lzma2, - CompressionMode = CompressionMode.Append, - ZipEncryptionMethod = ZipEncryptionMethod.Aes256, - CompressionLevel = CompressionLevel.Normal, - EncryptHeaders = true - }; - - compressor.CompressFilesEncrypted(fileStream, "password", @"TestData\zip.zip"); - - using var extractor = new SevenZipExtractor(TemporaryFile, "password"); + var compressor = new SevenZipCompressor + { + ArchiveFormat = OutArchiveFormat.SevenZip, + CompressionMethod = CompressionMethod.Lzma2, + CompressionMode = CompressionMode.Append, + ZipEncryptionMethod = ZipEncryptionMethod.Aes256, + CompressionLevel = CompressionLevel.Normal, + EncryptHeaders = true + }; + + compressor.CompressFilesEncrypted(fileStream, "password", @"TestData\zip.zip"); + } - Assert.AreEqual(1, extractor.FilesCount); - Assert.AreEqual("zip.zip", extractor.ArchiveFileNames[0]); + using (var extractor = new SevenZipExtractor(TemporaryFile, "password")) + { + Assert.AreEqual(1, extractor.FilesCount); + Assert.AreEqual("zip.zip", extractor.ArchiveFileNames[0]); + } } } } diff --git a/SevenZip.Tests/SevenZipExtractorAsynchronousTests.cs b/SevenZip.Tests/SevenZipExtractorAsynchronousTests.cs index dd3555a..5506ef9 100644 --- a/SevenZip.Tests/SevenZipExtractorAsynchronousTests.cs +++ b/SevenZip.Tests/SevenZipExtractorAsynchronousTests.cs @@ -5,7 +5,7 @@ using System.Threading.Tasks; using NUnit.Framework; - [TestFixture, Ignore("Flaky tests, need to be re-written to run consistently in AppVeyor.")] + [TestFixture] public class SevenZipExtractorAsynchronousTests : TestBase { [Test] @@ -29,7 +29,7 @@ public void AsynchronousExtractArchiveEventsTest() extractor.BeginExtractArchive(OutputDirectory); - var timeToWait = 1000; + var timeToWait = 2000; while (extractionFinishedInvoked == 0) { if (timeToWait <= 0) diff --git a/SevenZip.Tests/SevenZipExtractorTests.cs b/SevenZip.Tests/SevenZipExtractorTests.cs index 512bf13..3c9cceb 100644 --- a/SevenZip.Tests/SevenZipExtractorTests.cs +++ b/SevenZip.Tests/SevenZipExtractorTests.cs @@ -36,11 +36,12 @@ public static List TestFiles [Test] public void ExtractFilesTest() { - using var extractor = new SevenZipExtractor(@"TestData\multiple_files.7z"); - - for (var i = 0; i < extractor.ArchiveFileData.Count; i++) + using (var extractor = new SevenZipExtractor(@"TestData\multiple_files.7z")) { - extractor.ExtractFiles(OutputDirectory, extractor.ArchiveFileData[i].Index); + for (var i = 0; i < extractor.ArchiveFileData.Count; i++) + { + extractor.ExtractFiles(OutputDirectory, extractor.ArchiveFileData[i].Index); + } } Assert.AreEqual(3, Directory.GetFiles(OutputDirectory).Length); @@ -75,17 +76,18 @@ public void ExtractArchiveMultiVolumesTest() [Test] public void ExtractionWithCancellationTest() { - using var tmp = new SevenZipExtractor(@"TestData\multiple_files.7z"); - - tmp.FileExtractionStarted += (_, args) => + using (var tmp = new SevenZipExtractor(@"TestData\multiple_files.7z")) { - if (args.FileInfo.Index == 2) + tmp.FileExtractionStarted += (_, args) => { - args.Cancel = true; - } - }; - - tmp.ExtractArchive(OutputDirectory); + if (args.FileInfo.Index == 2) + { + args.Cancel = true; + } + }; + + tmp.ExtractArchive(OutputDirectory); + } Assert.AreEqual(2, Directory.GetFiles(OutputDirectory).Length); } @@ -93,17 +95,18 @@ public void ExtractionWithCancellationTest() [Test] public void ExtractionWithSkipTest() { - using var tmp = new SevenZipExtractor(@"TestData\multiple_files.7z"); - - tmp.FileExtractionStarted += (_, args) => + using (var tmp = new SevenZipExtractor(@"TestData\multiple_files.7z")) { - if (args.FileInfo.Index == 1) + tmp.FileExtractionStarted += (_, args) => { - args.Skip = true; - } - }; + if (args.FileInfo.Index == 1) + { + args.Skip = true; + } + }; - tmp.ExtractArchive(OutputDirectory); + tmp.ExtractArchive(OutputDirectory); + } Assert.AreEqual(2, Directory.GetFiles(OutputDirectory).Length); } @@ -113,29 +116,32 @@ public void ExtractionFromStreamTest() { // TODO: Rewrite this to test against more/all TestData archives. - using var tmp = new SevenZipExtractor(File.OpenRead(@"TestData\multiple_files.7z")); - - tmp.ExtractArchive(OutputDirectory); - Assert.AreEqual(3, Directory.GetFiles(OutputDirectory).Length); + using (var tmp = new SevenZipExtractor(File.OpenRead(@"TestData\multiple_files.7z"))) + { + tmp.ExtractArchive(OutputDirectory); + Assert.AreEqual(3, Directory.GetFiles(OutputDirectory).Length); + } } [Test] public void ExtractionFromStream_LeaveStreamOpenTest() { - using var fileStream = new FileStream(@"TestData\multiple_files.7z", FileMode.Open); - using var extractor1 = new SevenZipExtractor(fileStream, leaveOpen: true); - - extractor1.ExtractArchive(OutputDirectory); - - Assert.IsTrue(fileStream.CanRead); - - extractor1.Dispose(); + using (var fileStream = new FileStream(@"TestData\multiple_files.7z", FileMode.Open)) + { + using (var extractor1 = new SevenZipExtractor(fileStream, leaveOpen: true)) + { + extractor1.ExtractArchive(OutputDirectory); - using var extractor2 = new SevenZipExtractor(fileStream, leaveOpen: false); + Assert.IsTrue(fileStream.CanRead); + } - extractor2.ExtractArchive(OutputDirectory); + using (var extractor2 = new SevenZipExtractor(fileStream, leaveOpen: false)) + { + extractor2.ExtractArchive(OutputDirectory); + } - Assert.IsFalse(fileStream.CanRead); + Assert.IsFalse(fileStream.CanRead); + } } [Test] @@ -143,8 +149,10 @@ public void ExtractionToStreamTest() { using (var tmp = new SevenZipExtractor(@"TestData\multiple_files.7z")) { - using var fileStream = new FileStream(Path.Combine(OutputDirectory, "streamed_file.txt"), FileMode.Create); - tmp.ExtractFile(1, fileStream); + using (var fileStream = new FileStream(Path.Combine(OutputDirectory, "streamed_file.txt"), FileMode.Create)) + { + tmp.ExtractFile(1, fileStream); + } } Assert.AreEqual(1, Directory.GetFiles(OutputDirectory).Length); @@ -178,13 +186,17 @@ public void ThreadedExtractionTest() var t1 = new Thread(() => { - using var tmp = new SevenZipExtractor(@"TestData\multiple_files.7z"); - tmp.ExtractArchive(destination1); + using (var tmp = new SevenZipExtractor(@"TestData\multiple_files.7z")) + { + tmp.ExtractArchive(destination1); + } }); var t2 = new Thread(() => { - using var tmp = new SevenZipExtractor(@"TestData\multiple_files.7z"); - tmp.ExtractArchive(destination2); + using (var tmp = new SevenZipExtractor(@"TestData\multiple_files.7z")) + { + tmp.ExtractArchive(destination2); + } }); t1.Start(); @@ -201,42 +213,48 @@ public void ThreadedExtractionTest() [Test, Ignore("Figure out why this fails, later.")] public void ExtractArchiveWithLongPath() { - using var extractor = new SevenZipExtractor(@"TestData\long_path.7z"); - Assert.Throws(() => extractor.ExtractArchive(OutputDirectory)); + using (var extractor = new SevenZipExtractor(@"TestData\long_path.7z")) + { + Assert.Throws(() => extractor.ExtractArchive(OutputDirectory)); + } } [Test] public void ReadArchivedFileNames() { - using var extractor = new SevenZipExtractor(@"TestData\multiple_files.7z"); - - var fileNames = extractor.ArchiveFileNames; - Assert.AreEqual(3, fileNames.Count); + using (var extractor = new SevenZipExtractor(@"TestData\multiple_files.7z")) + { + var fileNames = extractor.ArchiveFileNames; + Assert.AreEqual(3, fileNames.Count); - Assert.AreEqual("file1.txt", fileNames[0]); - Assert.AreEqual("file2.txt", fileNames[1]); - Assert.AreEqual("file3.txt", fileNames[2]); + Assert.AreEqual("file1.txt", fileNames[0]); + Assert.AreEqual("file2.txt", fileNames[1]); + Assert.AreEqual("file3.txt", fileNames[2]); + } } - + [Test] public void ReadArchivedFileData() { - using var extractor = new SevenZipExtractor(@"TestData\multiple_files.7z"); - - var fileData = extractor.ArchiveFileData; - Assert.AreEqual(3, fileData.Count); + using (var extractor = new SevenZipExtractor(@"TestData\multiple_files.7z")) + { + var fileData = extractor.ArchiveFileData; + Assert.AreEqual(3, fileData.Count); - Assert.AreEqual("file1.txt", fileData[0].FileName); - Assert.IsFalse(fileData[0].Encrypted); - Assert.IsFalse(fileData[0].IsDirectory); + Assert.AreEqual("file1.txt", fileData[0].FileName); + Assert.IsFalse(fileData[0].Encrypted); + Assert.IsFalse(fileData[0].IsDirectory); + } } [Test, TestCaseSource(nameof(TestFiles))] public void ExtractDifferentFormatsTest(TestFile file) { - using var extractor = new SevenZipExtractor(file.FilePath); + using (var extractor = new SevenZipExtractor(file.FilePath)) + { + extractor.ExtractArchive(OutputDirectory); + } - extractor.ExtractArchive(OutputDirectory); Assert.AreEqual(1, Directory.GetFiles(OutputDirectory).Length); } } diff --git a/SevenZip/SevenZipBase.cs b/SevenZip/SevenZipBase.cs index 6e295c7..a746667 100644 --- a/SevenZip/SevenZipBase.cs +++ b/SevenZip/SevenZipBase.cs @@ -207,6 +207,9 @@ internal void CheckedExecute(int hresult, string message, CallbackBase handler) case -2147024891: exception = new SevenZipException("Access is denied. (0x80070005: E_ACCESSDENIED)"); break; + case -2146233086: + exception = new SevenZipException("Argument is out of range. (0x80131502: E_ARGUMENTOUTOFRANGE)"); + break; default: exception = new SevenZipException( $"Execution has failed due to an internal SevenZipSharp issue (0x{hresult:x} / {hresult}).\n" +