package spindle
import (
"testing"
"time"
)
func TestShutdownEndsAPushFetchInFlight(t *testing.T) {
e := newPushEnv(t)
push := e.firstPush(t)
release := e.w.holdGit()
defer release(false)
answered := make(chan error, 1)
go func() {
_, err := e.notify(e.n.s, push)
answered <- err
}()
e.waitClone(t)
e.n.s.rootCancel()
select {
case err := <-answered:
if err == nil {
t.Fatal("the push was handled although its fetch was still held")
}
case <-time.After(5 * time.Second):
t.Fatal("the push's fetch kept running after the spindle was shut down")
}
}