Skip to content

Commit 8543e3f

Browse files
author
AndrewMorgan1
committed
Fixed logger tests
1 parent 4f15658 commit 8543e3f

1 file changed

Lines changed: 32 additions & 8 deletions

File tree

tests/TokenKit.Tests/CLI/LoggerTests.cs

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -78,17 +78,41 @@ public void ShouldRespectQuietMode_AndStillWriteFile()
7878
[Fact]
7979
public void ShouldTruncateLog_WhenExceedsOneMB()
8080
{
81-
// Arrange — create a large dummy log file
82-
var largeLines = string.Join(Environment.NewLine, Enumerable.Repeat("X", 150000));
83-
File.WriteAllText(_logFile, largeLines);
81+
// Keep console quiet so file I/O is deterministic
82+
Logger.QuietMode = true;
8483

85-
// Act
84+
// Build a log file just over 1 MB with MANY numbered lines
85+
// so File.ReadAllLines(...) returns a large array we can verify.
86+
var payload = new string('X', 80);
87+
using (var sw = new StreamWriter(_logFile, false))
88+
{
89+
int i = 0;
90+
while (new FileInfo(_logFile).Length <= 1_050_000) // a bit above 1MB to guarantee the branch
91+
{
92+
sw.WriteLine($"LINE {i:D6} {payload}");
93+
i++;
94+
if (i % 1000 == 0) sw.Flush(); // help file size update during loop
95+
}
96+
}
97+
98+
var beforeLines = File.ReadAllLines(_logFile).Length;
99+
Assert.True(beforeLines > 0, "Precondition: file should contain lines");
100+
101+
// Act: write one more entry -> triggers truncation branch
86102
Logger.Info("trigger truncate");
87103

88-
// Assert file shrinks roughly in half
89-
var newSize = new FileInfo(_logFile).Length;
90-
Assert.True(newSize < 1_000_000);
91-
Assert.Contains("trigger truncate", File.ReadAllText(_logFile));
104+
// Assert: line count should be roughly half + the appended line
105+
var afterLines = File.ReadAllLines(_logFile);
106+
Assert.True(afterLines.Length < beforeLines, "Log file should have been truncated");
107+
Assert.InRange(afterLines.Length, beforeLines / 2, beforeLines / 2 + 100);
108+
109+
// Earliest lines should be gone; appended line should be present
110+
Assert.DoesNotContain(afterLines, l => l.Contains("LINE 000000"));
111+
Assert.Contains(afterLines, l => l.Contains("trigger truncate"));
112+
113+
// Reset quiet mode for other tests
114+
Logger.QuietMode = false;
92115
}
116+
93117
}
94118
}

0 commit comments

Comments
 (0)