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