aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2018-05-18 23:47:42 +0700
committerShulhan <ms@kilabit.info>2018-05-19 01:11:52 +0700
commitc95d7d0b4f557b531cf58d3b8029d6fd33d85fde (patch)
tree05d2f372005d8fcda7d3efd78f6fc3c64f66b612
parent7e5bd088b882303903c59987eb823f0fa88d03b9 (diff)
downloadbeku-c95d7d0b4f557b531cf58d3b8029d6fd33d85fde.tar.xz
[test] Add unit test for package.RunGoInstall
-rw-r--r--package.go19
-rw-r--r--package_test.go56
2 files changed, 65 insertions, 10 deletions
diff --git a/package.go b/package.go
index bac7eb8..4009621 100644
--- a/package.go
+++ b/package.go
@@ -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)
+ }
+ }
+ }
+}