package loading import ( "context" "os/signal" "syscall" "testing" "time" ) func TestLoadingPrint(t *testing.T) { ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) defer cancel() Do(ctx, func(ctx context.Context, print func(msg string, types ...Type)) error { print("start task 1...") time.Sleep(3 * time.Second) print("warning...1", TypeWarning) time.Sleep(2 * time.Second) return nil }) }