43 lines
1 KiB
Go
43 lines
1 KiB
Go
package cleanup_test
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/leonmika/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)
|
|
}
|
|
}
|