| package integration_test |
| |
| import ( |
| "io" |
| "io/ioutil" |
| "os" |
| "os/exec" |
| "path/filepath" |
| |
| . "github.com/onsi/ginkgo" |
| . "github.com/onsi/gomega" |
| "github.com/onsi/gomega/gexec" |
| |
| "testing" |
| "time" |
| ) |
| |
| var tmpDir string |
| var pathToGinkgo string |
| |
| func TestIntegration(t *testing.T) { |
| SetDefaultEventuallyTimeout(15 * time.Second) |
| RegisterFailHandler(Fail) |
| RunSpecs(t, "Integration Suite") |
| } |
| |
| var _ = SynchronizedBeforeSuite(func() []byte { |
| pathToGinkgo, err := gexec.Build("github.com/onsi/ginkgo/ginkgo") |
| Ω(err).ShouldNot(HaveOccurred()) |
| return []byte(pathToGinkgo) |
| }, func(computedPathToGinkgo []byte) { |
| pathToGinkgo = string(computedPathToGinkgo) |
| }) |
| |
| var _ = BeforeEach(func() { |
| var err error |
| tmpDir, err = ioutil.TempDir("", "ginkgo-run") |
| Ω(err).ShouldNot(HaveOccurred()) |
| }) |
| |
| var _ = AfterEach(func() { |
| err := os.RemoveAll(tmpDir) |
| Ω(err).ShouldNot(HaveOccurred()) |
| }) |
| |
| var _ = SynchronizedAfterSuite(func() {}, func() { |
| gexec.CleanupBuildArtifacts() |
| }) |
| |
| func tmpPath(destination string) string { |
| return filepath.Join(tmpDir, destination) |
| } |
| |
| func copyIn(fixture string, destination string) { |
| err := os.MkdirAll(destination, 0777) |
| Ω(err).ShouldNot(HaveOccurred()) |
| |
| filepath.Walk(filepath.Join("_fixtures", fixture), func(path string, info os.FileInfo, err error) error { |
| if info.IsDir() { |
| return nil |
| } |
| |
| base := filepath.Base(path) |
| |
| src, err := os.Open(path) |
| Ω(err).ShouldNot(HaveOccurred()) |
| defer src.Close() |
| |
| dst, err := os.Create(filepath.Join(destination, base)) |
| Ω(err).ShouldNot(HaveOccurred()) |
| defer dst.Close() |
| |
| _, err = io.Copy(dst, src) |
| Ω(err).ShouldNot(HaveOccurred()) |
| return nil |
| }) |
| } |
| |
| func ginkgoCommand(dir string, args ...string) *exec.Cmd { |
| cmd := exec.Command(pathToGinkgo, args...) |
| cmd.Dir = dir |
| |
| return cmd |
| } |
| |
| func startGinkgo(dir string, args ...string) *gexec.Session { |
| cmd := ginkgoCommand(dir, args...) |
| session, err := gexec.Start(cmd, GinkgoWriter, GinkgoWriter) |
| Ω(err).ShouldNot(HaveOccurred()) |
| return session |
| } |