122 lines
3.7 KiB
Go
122 lines
3.7 KiB
Go
|
package integration_test
|
||
|
|
||
|
import (
|
||
|
"io/ioutil"
|
||
|
"os"
|
||
|
"os/exec"
|
||
|
"path/filepath"
|
||
|
"strings"
|
||
|
|
||
|
. "github.com/onsi/ginkgo"
|
||
|
. "github.com/onsi/gomega"
|
||
|
)
|
||
|
|
||
|
var _ = Describe("ginkgo convert", func() {
|
||
|
var tmpDir string
|
||
|
|
||
|
readConvertedFileNamed := func(pathComponents ...string) string {
|
||
|
pathToFile := filepath.Join(tmpDir, "convert_fixtures", filepath.Join(pathComponents...))
|
||
|
bytes, err := ioutil.ReadFile(pathToFile)
|
||
|
ExpectWithOffset(1, err).NotTo(HaveOccurred())
|
||
|
|
||
|
return string(bytes)
|
||
|
}
|
||
|
|
||
|
readGoldMasterNamed := func(filename string) string {
|
||
|
bytes, err := ioutil.ReadFile(filepath.Join("_fixtures", "convert_goldmasters", filename))
|
||
|
Ω(err).ShouldNot(HaveOccurred())
|
||
|
|
||
|
return string(bytes)
|
||
|
}
|
||
|
|
||
|
BeforeEach(func() {
|
||
|
var err error
|
||
|
|
||
|
tmpDir, err = ioutil.TempDir("", "ginkgo-convert")
|
||
|
Ω(err).ShouldNot(HaveOccurred())
|
||
|
|
||
|
err = exec.Command("cp", "-r", filepath.Join("_fixtures", "convert_fixtures"), tmpDir).Run()
|
||
|
Ω(err).ShouldNot(HaveOccurred())
|
||
|
})
|
||
|
|
||
|
JustBeforeEach(func() {
|
||
|
cwd, err := os.Getwd()
|
||
|
Ω(err).ShouldNot(HaveOccurred())
|
||
|
|
||
|
relPath, err := filepath.Rel(cwd, filepath.Join(tmpDir, "convert_fixtures"))
|
||
|
Ω(err).ShouldNot(HaveOccurred())
|
||
|
|
||
|
cmd := exec.Command(pathToGinkgo, "convert", relPath)
|
||
|
cmd.Env = os.Environ()
|
||
|
for i, env := range cmd.Env {
|
||
|
if strings.HasPrefix(env, "PATH") {
|
||
|
cmd.Env[i] = cmd.Env[i] + ":" + filepath.Dir(pathToGinkgo)
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
err = cmd.Run()
|
||
|
Ω(err).ShouldNot(HaveOccurred())
|
||
|
})
|
||
|
|
||
|
AfterEach(func() {
|
||
|
err := os.RemoveAll(tmpDir)
|
||
|
Ω(err).ShouldNot(HaveOccurred())
|
||
|
})
|
||
|
|
||
|
It("rewrites xunit tests as ginkgo tests", func() {
|
||
|
convertedFile := readConvertedFileNamed("xunit_test.go")
|
||
|
goldMaster := readGoldMasterNamed("xunit_test.go")
|
||
|
Ω(convertedFile).Should(Equal(goldMaster))
|
||
|
})
|
||
|
|
||
|
It("rewrites all usages of *testing.T as mr.T()", func() {
|
||
|
convertedFile := readConvertedFileNamed("extra_functions_test.go")
|
||
|
goldMaster := readGoldMasterNamed("extra_functions_test.go")
|
||
|
Ω(convertedFile).Should(Equal(goldMaster))
|
||
|
})
|
||
|
|
||
|
It("rewrites tests in the package dir that belong to other packages", func() {
|
||
|
convertedFile := readConvertedFileNamed("outside_package_test.go")
|
||
|
goldMaster := readGoldMasterNamed("outside_package_test.go")
|
||
|
Ω(convertedFile).Should(Equal(goldMaster))
|
||
|
})
|
||
|
|
||
|
It("rewrites tests in nested packages", func() {
|
||
|
convertedFile := readConvertedFileNamed("nested", "nested_test.go")
|
||
|
goldMaster := readGoldMasterNamed("nested_test.go")
|
||
|
Ω(convertedFile).Should(Equal(goldMaster))
|
||
|
})
|
||
|
|
||
|
Context("ginkgo test suite files", func() {
|
||
|
It("creates a ginkgo test suite file for the package you specified", func() {
|
||
|
testsuite := readConvertedFileNamed("convert_fixtures_suite_test.go")
|
||
|
goldMaster := readGoldMasterNamed("suite_test.go")
|
||
|
Ω(testsuite).Should(Equal(goldMaster))
|
||
|
})
|
||
|
|
||
|
It("converts go tests in deeply nested packages (some may not contain go files)", func() {
|
||
|
testsuite := readConvertedFileNamed("nested_without_gofiles", "subpackage", "nested_subpackage_test.go")
|
||
|
goldMaster := readGoldMasterNamed("nested_subpackage_test.go")
|
||
|
Ω(testsuite).Should(Equal(goldMaster))
|
||
|
})
|
||
|
|
||
|
It("creates ginkgo test suites for all nested packages", func() {
|
||
|
testsuite := readConvertedFileNamed("nested", "nested_suite_test.go")
|
||
|
goldMaster := readGoldMasterNamed("nested_suite_test.go")
|
||
|
Ω(testsuite).Should(Equal(goldMaster))
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Context("with an existing test suite file", func() {
|
||
|
BeforeEach(func() {
|
||
|
goldMaster := readGoldMasterNamed("fixtures_suite_test.go")
|
||
|
err := ioutil.WriteFile(filepath.Join(tmpDir, "convert_fixtures", "tmp_suite_test.go"), []byte(goldMaster), 0600)
|
||
|
Ω(err).ShouldNot(HaveOccurred())
|
||
|
})
|
||
|
|
||
|
It("gracefully handles existing test suite files", func() {
|
||
|
//nothing should have gone wrong!
|
||
|
})
|
||
|
})
|
||
|
})
|