github.com/c3pm-labs/c3pm@v0.3.0/ctpm/test_test.go (about) 1 package ctpm_test 2 3 import ( 4 "bytes" 5 "github.com/c3pm-labs/c3pm/adapter/defaultadapter" 6 "github.com/c3pm-labs/c3pm/config" 7 "github.com/c3pm-labs/c3pm/config/manifest" 8 "github.com/c3pm-labs/c3pm/ctpm" 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 "io/ioutil" 12 "os" 13 "os/exec" 14 "path/filepath" 15 ) 16 17 var testSrc = `#include <iostream> 18 int main() { 19 std::cout << "Test test" << std::endl; 20 return 0; 21 } 22 ` 23 24 var _ = Describe("Test", func() { 25 Describe("Test executable build", func() { 26 projectFolder := getTestFolder("TestTestFolder") 27 projectRoot, _ := filepath.Abs(projectFolder) 28 m := manifest.New() 29 pc := &config.ProjectConfig{Manifest: m, ProjectRoot: projectRoot} 30 var wd string 31 32 BeforeEach(func() { 33 var err error 34 err = os.MkdirAll(projectFolder, os.ModePerm) 35 Ω(err).ShouldNot(HaveOccurred()) 36 wd, err = os.Getwd() 37 Ω(err).ShouldNot(HaveOccurred()) 38 err = os.Chdir(projectFolder) 39 Ω(err).ShouldNot(HaveOccurred()) 40 }) 41 AfterEach(func() { 42 err := os.Chdir(wd) 43 Ω(err).ShouldNot(HaveOccurred()) 44 }) 45 It("Run test", func() { 46 pc.Manifest.Name = "buildTest" 47 pc.Manifest.Type = manifest.Executable 48 pc.Manifest.Build = &manifest.BuildConfig{ 49 Adapter: &manifest.AdapterConfig{ 50 Name: "c3pm", 51 Version: defaultadapter.CurrentVersion, 52 }, 53 Config: &defaultadapter.Config{ 54 Sources: []string{"main.cpp"}, 55 TestSources: []string{"test.cpp"}, 56 }, 57 } 58 pc.Manifest.Version, _ = manifest.VersionFromString("1.0.0") 59 60 err := ioutil.WriteFile("main.cpp", []byte(execSrc), 0644) 61 Ω(err).ShouldNot(HaveOccurred()) 62 63 err = ioutil.WriteFile("test.cpp", []byte(testSrc), 0644) 64 Ω(err).ShouldNot(HaveOccurred()) 65 66 err = ctpm.Test(pc) 67 Ω(err).ShouldNot(HaveOccurred()) 68 }) 69 70 It("Generate cmake scripts", func() { 71 fi, err := os.Stat(".c3pm/cmake/CMakeLists.txt") 72 Ω(err).ShouldNot(HaveOccurred()) 73 74 Ω(fi.Size()).To(BeNumerically(">", 0)) 75 }) 76 It("Generate makefiles", func() { 77 fi, err := os.Stat(".c3pm/build/Makefile") 78 Ω(err).ShouldNot(HaveOccurred()) 79 80 Ω(fi.Size()).To(BeNumerically(">", 0)) 81 }) 82 It("ran tests", func() { 83 fi, err := os.Stat("buildTest_test") 84 Ω(err).ShouldNot(HaveOccurred()) 85 86 Ω(fi.Size()).To(BeNumerically(">", 0)) 87 buf := bytes.NewBuffer([]byte{}) 88 cmd := exec.Command("./buildTest_test") 89 cmd.Stdout = buf 90 err = cmd.Start() 91 Ω(err).ShouldNot(HaveOccurred()) 92 93 err = cmd.Wait() 94 Ω(err).ShouldNot(HaveOccurred()) 95 96 Ω(buf.String()).To(Equal("Test test\n")) 97 }) 98 }) 99 })