63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
package parser
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"git.mchus.pro/mchus/logpile/internal/models"
|
|
)
|
|
|
|
func TestAppendExtractionWarnings(t *testing.T) {
|
|
result := &models.AnalysisResult{
|
|
Events: make([]models.Event, 0),
|
|
}
|
|
|
|
files := []ExtractedFile{
|
|
{Path: "ok.log", Content: []byte("ok")},
|
|
{Path: "big.log", Truncated: true, TruncatedMessage: "file exceeded size limit and was truncated"},
|
|
}
|
|
|
|
appendExtractionWarnings(result, files)
|
|
|
|
if len(result.Events) != 1 {
|
|
t.Fatalf("expected 1 warning event, got %d", len(result.Events))
|
|
}
|
|
ev := result.Events[0]
|
|
if ev.Severity != models.SeverityWarning {
|
|
t.Fatalf("expected warning severity, got %q", ev.Severity)
|
|
}
|
|
if ev.EventType != "Analysis Warning" {
|
|
t.Fatalf("unexpected event type: %q", ev.EventType)
|
|
}
|
|
if ev.RawData == "" {
|
|
t.Fatalf("expected warning details in RawData")
|
|
}
|
|
}
|
|
|
|
func TestInferCollectedAtFromExtractedFiles_PrefersReliableMTime(t *testing.T) {
|
|
files := []ExtractedFile{
|
|
{Path: "a.log", ModTime: time.Date(1980, 1, 1, 0, 0, 0, 0, time.UTC)},
|
|
{Path: "b.log", ModTime: time.Date(2025, 12, 12, 10, 14, 49, 0, time.FixedZone("EST", -5*3600))},
|
|
{Path: "c.log", ModTime: time.Date(2026, 2, 28, 4, 18, 18, 0, time.FixedZone("UTC+8", 8*3600))},
|
|
}
|
|
|
|
got := inferCollectedAtFromExtractedFiles(files)
|
|
want := files[2].ModTime
|
|
if !got.Equal(want) {
|
|
t.Fatalf("expected %s, got %s", want, got)
|
|
}
|
|
}
|
|
|
|
func TestInferCollectedAtFromExtractedFiles_FallsBackToAnyMTime(t *testing.T) {
|
|
files := []ExtractedFile{
|
|
{Path: "a.log", ModTime: time.Date(1980, 1, 1, 0, 0, 0, 0, time.UTC)},
|
|
{Path: "b.log", ModTime: time.Date(1970, 1, 2, 0, 0, 0, 0, time.UTC)},
|
|
}
|
|
|
|
got := inferCollectedAtFromExtractedFiles(files)
|
|
want := files[0].ModTime
|
|
if !got.Equal(want) {
|
|
t.Fatalf("expected fallback %s, got %s", want, got)
|
|
}
|
|
}
|