| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- 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!
- })
- })
- })
|