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