92 lines
1.9 KiB
Go
92 lines
1.9 KiB
Go
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
|
|
}
|