syncthing/vendor/github.com/onsi/ginkgo/integration/interrupt_test.go

52 lines
1.4 KiB
Go
Raw Normal View History

package integration_test
import (
"os/exec"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/onsi/gomega/gbytes"
"github.com/onsi/gomega/gexec"
)
var _ = Describe("Interrupt", func() {
var pathToTest string
BeforeEach(func() {
pathToTest = tmpPath("hanging")
copyIn("hanging_suite", pathToTest)
})
Context("when interrupting a suite", func() {
var session *gexec.Session
BeforeEach(func() {
//we need to signal the actual process, so we must compile the test first
var err error
cmd := exec.Command("go", "test", "-c")
cmd.Dir = pathToTest
session, err = gexec.Start(cmd, GinkgoWriter, GinkgoWriter)
Ω(err).ShouldNot(HaveOccurred())
Eventually(session).Should(gexec.Exit(0))
//then run the compiled test directly
cmd = exec.Command("./hanging.test", "--test.v=true", "--ginkgo.noColor")
cmd.Dir = pathToTest
session, err = gexec.Start(cmd, GinkgoWriter, GinkgoWriter)
Ω(err).ShouldNot(HaveOccurred())
Eventually(session).Should(gbytes.Say("Sleeping..."))
session.Interrupt()
Eventually(session, 1000).Should(gexec.Exit(1))
})
It("should emit the contents of the GinkgoWriter", func() {
Ω(session).Should(gbytes.Say("Just beginning"))
Ω(session).Should(gbytes.Say("Almost there..."))
Ω(session).Should(gbytes.Say("Hanging Out"))
})
It("should run the AfterSuite", func() {
Ω(session).Should(gbytes.Say("Heading Out After Suite"))
})
})
})