github.com/c3pm-labs/c3pm@v0.3.0/ctpm/build_test.go (about) 1 package ctpm_test 2 3 import ( 4 "bytes" 5 "github.com/c3pm-labs/c3pm/adapter/defaultadapter" 6 "io/ioutil" 7 "os" 8 "os/exec" 9 "path/filepath" 10 11 "github.com/c3pm-labs/c3pm/config" 12 "github.com/c3pm-labs/c3pm/config/manifest" 13 "github.com/c3pm-labs/c3pm/ctpm" 14 . "github.com/onsi/ginkgo" 15 . "github.com/onsi/gomega" 16 ) 17 18 var execSrc = `#include <iostream> 19 int main() { 20 std::cout << "Build test" << std::endl; 21 } 22 ` 23 24 var _ = Describe("Build", func() { 25 Describe("Executable build", func() { 26 projectFolder := getTestFolder("BuildTestFolder") 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 build", 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 }, 56 } 57 pc.Manifest.Version, _ = manifest.VersionFromString("1.0.0") 58 59 err := ioutil.WriteFile("main.cpp", []byte(execSrc), 0644) 60 Ω(err).ShouldNot(HaveOccurred()) 61 62 err = ctpm.Build(pc) 63 Ω(err).ShouldNot(HaveOccurred()) 64 }) 65 66 It("Generate cmake scripts", func() { 67 fi, err := os.Stat(".c3pm/cmake/CMakeLists.txt") 68 Ω(err).ShouldNot(HaveOccurred()) 69 70 Ω(fi.Size()).To(BeNumerically(">", 0)) 71 }) 72 It("Generate makefiles", func() { 73 fi, err := os.Stat(".c3pm/build/Makefile") 74 Ω(err).ShouldNot(HaveOccurred()) 75 76 Ω(fi.Size()).To(BeNumerically(">", 0)) 77 }) 78 It("build m", func() { 79 fi, err := os.Stat("buildTest") 80 Ω(err).ShouldNot(HaveOccurred()) 81 82 Ω(fi.Size()).To(BeNumerically(">", 0)) 83 buf := bytes.NewBuffer([]byte{}) 84 cmd := exec.Command("./buildTest") 85 cmd.Stdout = buf 86 err = cmd.Start() 87 Ω(err).ShouldNot(HaveOccurred()) 88 89 err = cmd.Wait() 90 Ω(err).ShouldNot(HaveOccurred()) 91 92 Ω(buf.String()).To(Equal("Build test\n")) 93 }) 94 }) 95 })