diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-28 09:41:14 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-28 09:41:14 +0200 |
| commit | 2a342d06c161fe9f5e9e6c48ed23798b876393be (patch) | |
| tree | 2aab2893e0091f2e68cf69efed5e8a7fd6a46831 /cmd | |
| parent | 4521606d7b64234eb8377c3edb8b15fbc4ed97d7 (diff) | |
refactor: move integration test runner from main.go to internal package
Extract RunIntegrationTests into internal/goprecords with focused helpers:
testReportFixtures, testStatsOrder, testImportExport. main.go reduced
from 220 to 139 lines, with runTests now a thin 5-line wrapper.
Task: 7247d93e-e4af-4e8d-8fdc-116e0b06c7d3
Amp-Thread-ID: https://ampcode.com/threads/T-019ca323-dde1-73ac-97f0-cebfae5922a5
Co-authored-by: Amp <amp@ampcode.com>
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/goprecords/main.go | 83 |
1 files changed, 1 insertions, 82 deletions
diff --git a/cmd/goprecords/main.go b/cmd/goprecords/main.go index 1bec690..ad75949 100644 --- a/cmd/goprecords/main.go +++ b/cmd/goprecords/main.go @@ -132,89 +132,8 @@ func runReportFromFiles(args []string) { } func runTests() { - ctx := context.Background() - aggr := goprecords.NewAggregator("./fixtures") - aggregates, err := aggr.Aggregate(ctx) - if err != nil { + if err := goprecords.RunIntegrationTests("./fixtures"); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } - limit := uint(3) - categories := []goprecords.Category{goprecords.CategoryHost, goprecords.CategoryKernel, goprecords.CategoryKernelMajor, goprecords.CategoryKernelName} - metrics := []goprecords.Metric{goprecords.MetricBoots, goprecords.MetricUptime, goprecords.MetricScore, goprecords.MetricDowntime, goprecords.MetricLifespan} - formats := []goprecords.OutputFormat{goprecords.FormatPlaintext, goprecords.FormatMarkdown, goprecords.FormatGemtext} - failed := 0 - for _, cat := range categories { - for _, met := range metrics { - if cat != goprecords.CategoryHost && (met == goprecords.MetricDowntime || met == goprecords.MetricLifespan) { - continue - } - for _, outFmt := range formats { - var report string - if cat == goprecords.CategoryHost { - report = goprecords.NewHostReporter(aggregates, limit, met, outFmt, 1).Report() - } else { - report = goprecords.NewReporter(aggregates, cat, limit, met, outFmt, 1).Report() - } - expectedPath := fmt.Sprintf("./fixtures/%s.%s.%s.expected", cat, met, outFmt) - expected, err := os.ReadFile(expectedPath) - if err != nil { - fmt.Printf("FAIL: read %s: %v\n", expectedPath, err) - failed++ - continue - } - if report != string(expected) { - fmt.Printf("FAIL: %s\n--- got:\n%s--- expected:\n%s\n", expectedPath, report, string(expected)) - failed++ - } - } - } - } - if _, err := goprecords.ParseStatsOrder("Host:Uptime,Host:Boots"); err != nil { - fmt.Printf("FAIL: parse Host:Uptime,Host:Boots: %v\n", err) - failed++ - } - merged, _ := goprecords.StatsOrderList("Host:Uptime") - if len(merged) == 0 || merged[0].Category != goprecords.CategoryHost || merged[0].Metric != goprecords.MetricUptime { - fmt.Printf("FAIL: stats-order custom first entry\n") - failed++ - } - for _, bad := range []string{"Host", "Bad:Uptime", "Kernel:Downtime", "Host:Nope"} { - if _, err := goprecords.ParseStatsOrder(bad); err == nil { - fmt.Printf("FAIL: parse %q should error\n", bad) - failed++ - } - } - tmpDB := "./fixtures/test_import.db" - os.Remove(tmpDB) - db, err := goprecords.OpenDB(tmpDB) - if err != nil { - fmt.Printf("FAIL: open tmp db: %v\n", err) - failed++ - } else { - goprecords.CreateSchema(ctx, db) - if err := goprecords.ImportFromDir(ctx, db, "./fixtures"); err != nil { - fmt.Printf("FAIL: import: %v\n", err) - failed++ - } else { - aggFromDB, err := goprecords.LoadAggregates(ctx, db) - if err != nil { - fmt.Printf("FAIL: load: %v\n", err) - failed++ - } else { - reportFromDB := goprecords.NewHostReporter(aggFromDB, limit, goprecords.MetricUptime, goprecords.FormatPlaintext, 1).Report() - reportFromMem := goprecords.NewHostReporter(aggregates, limit, goprecords.MetricUptime, goprecords.FormatPlaintext, 1).Report() - if reportFromDB != reportFromMem { - fmt.Printf("FAIL: import/query report differs from in-memory\n--- from DB:\n%s--- from memory:\n%s\n", reportFromDB, reportFromMem) - failed++ - } - } - } - db.Close() - os.Remove(tmpDB) - } - if failed > 0 { - os.Exit(1) - } - fmt.Println("ok") } |
