mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2026-01-28 22:01:55 +00:00
Fix file lock not getting disposed when postamble throws an exception
This commit is contained in:
@@ -34,13 +34,22 @@ public class ExportWrapperFixture : IDisposable
|
||||
// Perform export only if it hasn't been done before
|
||||
if (!File.Exists(filePath))
|
||||
{
|
||||
await new ExportChannelsCommand
|
||||
try
|
||||
{
|
||||
Token = Secrets.DiscordToken,
|
||||
ChannelIds = new[] { channelId },
|
||||
ExportFormat = format,
|
||||
OutputPath = filePath
|
||||
}.ExecuteAsync(new FakeConsole());
|
||||
await new ExportChannelsCommand
|
||||
{
|
||||
Token = Secrets.DiscordToken,
|
||||
ChannelIds = new[] { channelId },
|
||||
ExportFormat = format,
|
||||
OutputPath = filePath
|
||||
}.ExecuteAsync(new FakeConsole());
|
||||
}
|
||||
catch
|
||||
{
|
||||
// If the export fails, delete the file to prevent it from being used by tests
|
||||
File.Delete(filePath);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
return await File.ReadAllTextAsync(filePath);
|
||||
|
||||
@@ -23,9 +23,16 @@ internal partial class MessageExporter : IAsyncDisposable
|
||||
{
|
||||
if (_writer is not null)
|
||||
{
|
||||
await _writer.WritePostambleAsync(cancellationToken);
|
||||
await _writer.DisposeAsync();
|
||||
_writer = null;
|
||||
try
|
||||
{
|
||||
await _writer.WritePostambleAsync(cancellationToken);
|
||||
}
|
||||
// Writer must be disposed, even if writing postamble fails
|
||||
finally
|
||||
{
|
||||
await _writer.DisposeAsync();
|
||||
_writer = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -67,9 +67,7 @@ internal class HtmlMessageWriter : MessageWriter
|
||||
}
|
||||
|
||||
// Use <!--wmm:ignore--> to preserve blocks of code inside the templates
|
||||
private string Minify(string html) => _minifier
|
||||
.Minify(html, false)
|
||||
.MinifiedContent;
|
||||
private string Minify(string html) => _minifier.Minify(html, false).MinifiedContent;
|
||||
|
||||
public override async ValueTask WritePreambleAsync(
|
||||
CancellationToken cancellationToken = default)
|
||||
|
||||
Reference in New Issue
Block a user