fix: Windows command quoting, atomic JSON/log writes, restore dropped test
Implements items 1-3 of the whole-project review's suggested order (docs/PROJECT_REVIEW_PLAN.md): - Restore TestJobListViewIsCompact, accidentally dropped by 5b0e6fe; drop the redundant TestDefaultConfigUsesDetailedJobList row from TESTS.md and document the two other doc gaps the review found. - Fix quoteLeadingWindowsProgramPath to find the earliest file-extension match at a word boundary instead of the first extension in list order, so a .bat/.cmd command whose argument ends in .exe no longer has its whole command line mistaken for the program path. - Write gosentry.json, jobs.json, and run log files atomically (temp file + rename) so a crash or power loss mid-write can no longer leave a truncated file. Wire Service.Stop() into the app shutdown path so it actually runs, cancelling the run context for in-flight runs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,3 +26,24 @@ func TestResolveStartHidden(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TestJobListViewIsCompact pins the normalization rule: only the exact
|
||||
// "compact" value selects the one-line rows, so empty and unrecognised values
|
||||
// (including configs written before the field existed) keep the detailed look.
|
||||
func TestJobListViewIsCompact(t *testing.T) {
|
||||
cases := []struct {
|
||||
view JobListView
|
||||
want bool
|
||||
}{
|
||||
{JobListViewCompact, true},
|
||||
{JobListViewDetailed, false},
|
||||
{"", false},
|
||||
{"Compact", false},
|
||||
{"tiny", false},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
if got := tc.view.IsCompact(); got != tc.want {
|
||||
t.Errorf("JobListView(%q).IsCompact() = %v, want %v", tc.view, got, tc.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user