diff --git a/Source/Testably.Abstractions.Compression/ZipArchiveEntryWrapper.cs b/Source/Testably.Abstractions.Compression/ZipArchiveEntryWrapper.cs index eec06f41..10b3d4f4 100644 --- a/Source/Testably.Abstractions.Compression/ZipArchiveEntryWrapper.cs +++ b/Source/Testably.Abstractions.Compression/ZipArchiveEntryWrapper.cs @@ -109,31 +109,41 @@ public void ExtractToFile(string destinationFileName, bool overwrite) #if FEATURE_COMPRESSION_ASYNC /// - public async Task ExtractToFileAsync(string destinationFileName, CancellationToken cancellationToken = default) + public Task ExtractToFileAsync(string destinationFileName, CancellationToken cancellationToken = default) { if (destinationFileName == null) { throw new ArgumentNullException(nameof(destinationFileName)); } - await Execute.WhenRealFileSystemAsync(FileSystem, - async () => await _instance.ExtractToFileAsync(destinationFileName, cancellationToken), - () => ZipUtilities.ExtractToFile(this, destinationFileName, false)); + return ExtractToFileImplAsync(destinationFileName, cancellationToken); + + async Task ExtractToFileImplAsync(string d, CancellationToken c) + { + await Execute.WhenRealFileSystemAsync(FileSystem, + async () => await _instance.ExtractToFileAsync(d, c), + () => ZipUtilities.ExtractToFile(this, d, false)); + } } #endif #if FEATURE_COMPRESSION_ASYNC /// - public async Task ExtractToFileAsync(string destinationFileName, bool overwrite, CancellationToken cancellationToken = default) + public Task ExtractToFileAsync(string destinationFileName, bool overwrite, CancellationToken cancellationToken = default) { if (destinationFileName == null) { throw new ArgumentNullException(nameof(destinationFileName)); } - await Execute.WhenRealFileSystemAsync(FileSystem, - async () => await _instance.ExtractToFileAsync(destinationFileName, overwrite, cancellationToken), - () => ZipUtilities.ExtractToFile(this, destinationFileName, overwrite)); + return ExtractToFileImplAsync(destinationFileName, overwrite, cancellationToken); + + async Task ExtractToFileImplAsync(string d, bool o, CancellationToken c) + { + await Execute.WhenRealFileSystemAsync(FileSystem, + async () => await _instance.ExtractToFileAsync(d, o, c), + () => ZipUtilities.ExtractToFile(this, d, o)); + } } #endif diff --git a/Source/Testably.Abstractions.Compression/ZipArchiveWrapper.cs b/Source/Testably.Abstractions.Compression/ZipArchiveWrapper.cs index 9bf45a6d..09c087b5 100644 --- a/Source/Testably.Abstractions.Compression/ZipArchiveWrapper.cs +++ b/Source/Testably.Abstractions.Compression/ZipArchiveWrapper.cs @@ -166,7 +166,7 @@ public void ExtractToDirectory(string destinationDirectoryName, bool overwriteFi #if FEATURE_COMPRESSION_ASYNC /// - public async Task ExtractToDirectoryAsync(string destinationDirectoryName, + public Task ExtractToDirectoryAsync(string destinationDirectoryName, CancellationToken cancellationToken = default) { if (destinationDirectoryName == null) @@ -174,22 +174,26 @@ public async Task ExtractToDirectoryAsync(string destinationDirectoryName, throw new ArgumentNullException(nameof(destinationDirectoryName)); } - await Execute.WhenRealFileSystemAsync(FileSystem, - async () => await _instance.ExtractToDirectoryAsync(destinationDirectoryName, - cancellationToken), - () => - { - foreach (IZipArchiveEntry entry in Entries) + return ExtractToDirectoryImplAsync(destinationDirectoryName, cancellationToken); + + async Task ExtractToDirectoryImplAsync(string d, CancellationToken c) + { + await Execute.WhenRealFileSystemAsync(FileSystem, + async () => await _instance.ExtractToDirectoryAsync(d, c), + () => { - entry.ExtractRelativeToDirectory(destinationDirectoryName, overwrite: false); - } - }); + foreach (IZipArchiveEntry entry in Entries) + { + entry.ExtractRelativeToDirectory(d, overwrite: false); + } + }); + } } #endif #if FEATURE_COMPRESSION_ASYNC /// - public async Task ExtractToDirectoryAsync(string destinationDirectoryName, + public Task ExtractToDirectoryAsync(string destinationDirectoryName, bool overwriteFiles, CancellationToken cancellationToken = default) { @@ -198,17 +202,20 @@ public async Task ExtractToDirectoryAsync(string destinationDirectoryName, throw new ArgumentNullException(nameof(destinationDirectoryName)); } - await Execute.WhenRealFileSystemAsync(FileSystem, - async () => await _instance.ExtractToDirectoryAsync(destinationDirectoryName, - overwriteFiles, cancellationToken), - () => - { - foreach (IZipArchiveEntry entry in Entries) + return ExtractToDirectoryImplAsync(destinationDirectoryName, overwriteFiles, cancellationToken); + + async Task ExtractToDirectoryImplAsync(string d, bool o, CancellationToken c) + { + await Execute.WhenRealFileSystemAsync(FileSystem, + async () => await _instance.ExtractToDirectoryAsync(d, o, c), + () => { - entry.ExtractRelativeToDirectory(destinationDirectoryName, - overwrite: overwriteFiles); - } - }); + foreach (IZipArchiveEntry entry in Entries) + { + entry.ExtractRelativeToDirectory(d, overwrite: o); + } + }); + } } #endif