Skip to content

Commit

Permalink
test: don't create spurious files during testing
Browse files Browse the repository at this point in the history
  • Loading branch information
wlsnmrk committed Feb 1, 2025
1 parent 411b278 commit f68c036
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 8 deletions.
18 changes: 12 additions & 6 deletions Chickensoft.Log.Tests/test/src/FileWriterTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,28 @@ namespace Chickensoft.Log.Tests;

public class FileWriterStreamTester : IDisposable {
private bool _isDisposed;
private readonly MemoryStream _memoryStream;
private readonly MemoryStream _openingMemoryStream;
private readonly MemoryStream _appendingMemoryStream;

public FileWriterStreamTester(
string filename = FileWriter.DEFAULT_FILE_NAME
) {
_memoryStream = new MemoryStream();
_openingMemoryStream = new MemoryStream();
_appendingMemoryStream = new MemoryStream();

FileWriter.AppendText = fileName => new StreamWriter(
_memoryStream,
_appendingMemoryStream,
System.Text.Encoding.UTF8,
bufferSize: 1024,
leaveOpen: true
);

FileWriter.CreateFile = fileName => _openingMemoryStream;
}

public string GetString() {
_memoryStream.Position = 0;
using var reader = new StreamReader(_memoryStream);
_appendingMemoryStream.Position = 0;
using var reader = new StreamReader(_appendingMemoryStream);
return reader.ReadToEnd();
}

Expand All @@ -34,7 +38,9 @@ public void Dispose() {
_isDisposed = true;

FileWriter.AppendText = FileWriter.AppendTextDefault;
_memoryStream.Dispose();
FileWriter.CreateFile = FileWriter.CreateFileDefault;
_openingMemoryStream.Dispose();
_appendingMemoryStream.Dispose();
}
}

Expand Down
9 changes: 7 additions & 2 deletions Chickensoft.Log/src/FileWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,17 @@ namespace Chickensoft.Log;
/// to a file.
/// </summary>
public sealed class FileWriter : ILogWriter {
internal delegate StreamWriter AppendTextDelegate(string text);
internal delegate StreamWriter AppendTextDelegate(string path);
internal static AppendTextDelegate AppendTextDefault { get; } =
File.AppendText;
internal static AppendTextDelegate AppendText { get; set; } =
AppendTextDefault;

internal delegate Stream CreateFileDelegate(string path);
internal static CreateFileDelegate CreateFileDefault { get; } = File.Create;
internal static CreateFileDelegate CreateFile { get; set; } =
CreateFileDefault;

// protect static members from simultaneous thread access
private static readonly object _singletonLock = new();
// Implemented as a pseudo-singleton to enforce one truncation per file per
Expand Down Expand Up @@ -126,7 +131,7 @@ private FileWriter(string fileName) {
FileName = fileName;
lock (_writingLock) {
// Clear the file
using var sw = new StreamWriter(FileName);
using var sw = CreateFile(FileName);
}
}

Expand Down

0 comments on commit f68c036

Please sign in to comment.