diff options
| author | Shulhan <ms@kilabit.info> | 2018-05-18 23:47:42 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2018-05-19 01:11:52 +0700 |
| commit | c95d7d0b4f557b531cf58d3b8029d6fd33d85fde (patch) | |
| tree | 05d2f372005d8fcda7d3efd78f6fc3c64f66b612 | |
| parent | 7e5bd088b882303903c59987eb823f0fa88d03b9 (diff) | |
| download | beku-c95d7d0b4f557b531cf58d3b8029d6fd33d85fde.tar.xz | |
[test] Add unit test for package.RunGoInstall
| -rw-r--r-- | package.go | 19 | ||||
| -rw-r--r-- | package_test.go | 56 |
2 files changed, 65 insertions, 10 deletions
@@ -9,7 +9,6 @@ import ( "fmt" "go/build" "log" - "os" "os/exec" "sort" "strings" @@ -286,24 +285,24 @@ func (pkg *Package) load(sec *ini.Section) { } // -// RunGoInstall will run go install recursively on package directory. +// RunGoInstall package directory. If isVerbose is true, it will go install +// recursively ("./..."). // func (pkg *Package) RunGoInstall(isVerbose bool) (err error) { - log.Println(">>> Running go install ...") + fmt.Println(">>> Running go install ...") - var opts []string + cmd := exec.Command("go", "install") if isVerbose { - opts = append(opts, "-v") + cmd.Args = append(cmd.Args, "-v") } - opts = append(opts, "./...") + cmd.Args = append(cmd.Args, "./...") + cmd.Env = append(cmd.Env, "GOPATH="+build.Default.GOPATH) - cmd := exec.Command("go", "install") - cmd.Args = append(cmd.Args, opts...) cmd.Dir = pkg.FullPath - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr + cmd.Stdout = defStdout + cmd.Stderr = defStderr err = cmd.Run() diff --git a/package_test.go b/package_test.go index 7e8c774..09d8ef0 100644 --- a/package_test.go +++ b/package_test.go @@ -1,6 +1,8 @@ package beku import ( + "os" + "strings" "testing" "github.com/shuLhan/share/lib/ini" @@ -336,3 +338,57 @@ func TestPackageLoad(t *testing.T) { test.Assert(t, "", c.exp, pkg, true) } } + +func TestRunGoInstall(t *testing.T) { + cases := []struct { + desc string + pkg *Package + isVerbose bool + expBin string + expArchive string + expStdout string + expStderr string + }{{ + desc: "Running #1", + pkg: gitCurPkg, + expStderr: `main.go:6:2: cannot find package "github.com/shuLhan/share/lib/text" in any of:`, + }, { + desc: "Running with verbose", + pkg: gitCurPkg, + isVerbose: true, + expStderr: `main.go:6:2: cannot find package "github.com/shuLhan/share/lib/text" in any of:`, + }} + + for _, c := range cases { + t.Log(c.desc) + + testResetOutput(t, false) + + err := c.pkg.RunGoInstall(c.isVerbose) + + testResetOutput(t, false) + stdout, stderr := testGetOutput(t) + + if err != nil { + errLines := strings.Split(stderr, "\n") + test.Assert(t, "stderr", c.expStderr, errLines[0], true) + } else { + outLines := strings.Split(stdout, "\n") + test.Assert(t, "stdout", c.expStdout, outLines[0], true) + } + + if len(c.expBin) > 0 { + _, err = os.Stat(c.expBin) + if err != nil { + t.Fatal(err) + } + } + + if len(c.expArchive) > 0 { + _, err = os.Stat(c.expArchive) + if err != nil { + t.Fatal(err) + } + } + } +} |
