package cleanup_test import ( "errors" "strings" "testing" "lmika.dev/actions/wails-release/internal/cleanup" ) func TestStack_RunsInReverseOrder(t *testing.T) { var s cleanup.Stack calls := []string{} s.Add(func() error { calls = append(calls, "first"); return nil }) s.Add(func() error { calls = append(calls, "second"); return nil }) s.Run() want := []string{"second", "first"} for i := range want { if calls[i] != want[i] { t.Fatalf("call %d: got %q want %q (full: %v)", i, calls[i], want[i], calls) } } } func TestStack_ContinuesAfterError(t *testing.T) { var s cleanup.Stack called := []string{} s.Add(func() error { called = append(called, "a"); return nil }) s.Add(func() error { called = append(called, "b"); return errors.New("boom") }) s.Add(func() error { called = append(called, "c"); return nil }) errs := s.Run() if len(errs) != 1 || !strings.Contains(errs[0].Error(), "boom") { t.Fatalf("expected one boom error, got %v", errs) } if len(called) != 3 { t.Fatalf("expected all three to run, got %v", called) } }