From 22fa861e777ce5d0fc5c8c74f43fa803f8677a18 Mon Sep 17 00:00:00 2001 From: Chris Koch Date: Sat, 24 Feb 2024 20:10:02 +0000 Subject: [PATCH] Fix up tests Signed-off-by: Chris Koch --- .circleci/config.yml | 14 ++++------- src/cmd/makebb/makebb.go | 1 - src/go.mod | 5 ++-- src/go.sum | 12 ++++++---- src/pkg/bb/bb.go | 22 ++---------------- test-external-gopath.sh | 35 ++++++++++++++++++++++++++++ test-external.sh | 50 +++++++++++++++++++--------------------- test-multi-simple.sh | 41 -------------------------------- test.sh | 5 ---- test/all_test.go | 46 ++++++++++++++++++++++++------------ 10 files changed, 106 insertions(+), 125 deletions(-) create mode 100755 test-external-gopath.sh delete mode 100755 test-multi-simple.sh delete mode 100755 test.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index ec4e55f7..f4a42f38 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -39,23 +39,21 @@ templates: (cd test/diamonddep/mod3 && go build ./...) (cd test/normaldeps/mod1 && go build ./...) (cd test/normaldeps/mod2 && go build ./...) - (cd test/requestconflict/mod5 && go build ./...) - (cd test/requestconflict/mod6 && go build ./...) (cd test/nested && go build ./...) (cd test/nested/nestedmod && go build ./...) - run: name: tests command: ./gobuilds.sh - - run: - name: build gokrazy & p9 together - command: ./test-multi-simple.sh build-gomod-multi-template: &build-gomod-multi-template steps: - checkout - run: - name: build u-root & gokrazy & p9 together + name: build u-root & gokrazy & p9 together (workspaces) command: ./test-external.sh + - run: + name: build u-root & cpu & p9 together (GOPATH) + command: ./test-external-gopath.sh build-gopath-template: &build-gopath-template steps: @@ -227,8 +225,6 @@ jobs: (cd test/goembed && go mod tidy && go mod verify) (cd test/normaldeps/mod1 && go mod tidy && go mod verify) (cd test/normaldeps/mod2 && go mod tidy && go mod verify) - (cd test/requestconflict/mod5 && go mod tidy && go mod verify) - (cd test/requestconflict/mod6 && go mod tidy && go mod verify) (cd test/nested && go mod tidy && go mod verify) (cd test/nested/nestedmod && go mod tidy && go mod verify) git status @@ -250,8 +246,6 @@ jobs: (cd test/goembed && go vet ./...) (cd test/normaldeps/mod1 && go vet ./...) (cd test/normaldeps/mod2 && go vet ./...) - (cd test/requestconflict/mod5 && go vet ./...) - (cd test/requestconflict/mod6 && go vet ./...) (cd test/nested && go vet ./...) (cd test/nested/nestedmod && go vet ./...) - run: diff --git a/src/cmd/makebb/makebb.go b/src/cmd/makebb/makebb.go index 6d704f60..8fb60b4d 100644 --- a/src/cmd/makebb/makebb.go +++ b/src/cmd/makebb/makebb.go @@ -6,7 +6,6 @@ package main import ( - "errors" "flag" "io/ioutil" "log" diff --git a/src/go.mod b/src/go.mod index 27afe3c2..16fa821f 100644 --- a/src/go.mod +++ b/src/go.mod @@ -4,7 +4,8 @@ go 1.20 require ( github.com/u-root/uio v0.0.0-20210528151154-e40b768296a7 - golang.org/x/tools v0.16.1 + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 + golang.org/x/tools v0.18.0 ) -require golang.org/x/mod v0.14.0 // indirect +require golang.org/x/mod v0.15.0 // indirect diff --git a/src/go.sum b/src/go.sum index b05f04be..fecc3ad4 100644 --- a/src/go.sum +++ b/src/go.sum @@ -1,8 +1,10 @@ github.com/u-root/uio v0.0.0-20210528151154-e40b768296a7 h1:XMAtQHwKjWHIRwg+8Nj/rzUomQY1q6cM3ncA0wP8GU4= github.com/u-root/uio v0.0.0-20210528151154-e40b768296a7/go.mod h1:LpEX5FO/cB+WF4TYGY1V5qktpaZLkKkSegbr0V4eYXA= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sys v0.0.0-20210525143221-35b2ab0089ea/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= -golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= diff --git a/src/pkg/bb/bb.go b/src/pkg/bb/bb.go index 0a510227..0b6318a0 100644 --- a/src/pkg/bb/bb.go +++ b/src/pkg/bb/bb.go @@ -30,6 +30,7 @@ import ( "path/filepath" "strings" + "golang.org/x/exp/maps" "golang.org/x/tools/go/ast/astutil" "golang.org/x/tools/go/packages" @@ -39,14 +40,6 @@ import ( "github.com/u-root/uio/ulog" ) -func listStrings(m map[string]struct{}) []string { - var l []string - for k := range m { - l = append(l, k) - } - return l -} - func checkDuplicate(cmds []*bbinternal.Package) error { seen := make(map[string]string) for _, cmd := range cmds { @@ -187,7 +180,7 @@ func BuildBusybox(l ulog.Logger, opts *Opts) (nerr error) { } } if len(modules) > 0 && numNoModule > 0 { - return fmt.Errorf("gobusybox does not support mixed module/non-module compilation -- commands contain main modules %v", strings.Join(listStrings(modules), ", ")) + return fmt.Errorf("gobusybox does not support mixed module/non-module compilation -- commands contain main modules %v", strings.Join(maps.Keys(modules), ", ")) } // List of packages to import in the real main file. @@ -288,17 +281,6 @@ func writeBBMain(bbDir, tmpDir string, bbImports []string) error { return nil } -func isReplacedModuleLocal(m *packages.Module) bool { - // From "replace directive": https://golang.org/ref/mod#go - // - // If the path on the right side of the arrow is an absolute or - // relative path (beginning with ./ or ../), it is interpreted as the - // local file path to the replacement module root directory, which - // must contain a go.mod file. The replacement version must be - // omitted in this case. - return strings.HasPrefix(m.Path, "./") || strings.HasPrefix(m.Path, "../") || strings.HasPrefix(m.Path, "/") -} - func copyAllDeps(l ulog.Logger, env *golang.Environ, bbDir, tmpDir, pkgDir string, mainPkgs []*bbinternal.Package) error { var deps []*packages.Package for _, p := range mainPkgs { diff --git a/test-external-gopath.sh b/test-external-gopath.sh new file mode 100755 index 00000000..7190e08d --- /dev/null +++ b/test-external-gopath.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -ex + +if [ -z "$GOROOT" ]; then + GO="go" +else + GO="$GOROOT/bin/go" +fi + +cd src/cmd/makebb + +$GO generate +$GO build + +cd ../../.. + +# Try vendor-based $GOPATH u-root + cpu + p9. +GOPATH_TMPDIR=$(mktemp -d) +function ctrl_c() { + rm -rf $GOPATH_TMPDIR +} +trap ctrl_c INT + +mkdir -p $GOPATH_TMPDIR/src/github.com/u-root +mkdir -p $GOPATH_TMPDIR/src/github.com/hugelgupf + +(cd $GOPATH_TMPDIR/src/github.com/u-root && git clone https://github.com/u-root/u-root && cd u-root && git checkout 6ca118b0a77c23ae859cddeee15762d9cd74c63f) +(cd $GOPATH_TMPDIR/src/github.com/u-root && git clone https://github.com/u-root/cpu && cd cpu && git checkout 5529b02a0e41bfc6b3a387c4fa7e7e9cc374a95d && go mod vendor) +(cd $GOPATH_TMPDIR/src/github.com/hugelgupf && git clone https://github.com/hugelgupf/p9 && cd p9 && git checkout 660eb2337e3c1878298fe550ad03248f329eeb72 && go mod vendor) + +GOARCH=amd64 GOROOT=$GOROOT GOPATH=$GOPATH_TMPDIR GO111MODULE=off ./src/cmd/makebb/makebb -o bb3 $GOPATH_TMPDIR/src/github.com/u-root/u-root/cmds/*/* $GOPATH_TMPDIR/src/github.com/u-root/cpu/cmds/* $GOPATH_TMPDIR/src/github.com/hugelgupf/p9/cmd/* +GOARCH=arm64 GOROOT=$GOROOT GOPATH=$GOPATH_TMPDIR GO111MODULE=off ./src/cmd/makebb/makebb -o bb3 $GOPATH_TMPDIR/src/github.com/u-root/u-root/cmds/*/* $GOPATH_TMPDIR/src/github.com/u-root/cpu/cmds/* $GOPATH_TMPDIR/src/github.com/hugelgupf/p9/cmd/* +GOARCH=riscv64 GOROOT=$GOROOT GOPATH=$GOPATH_TMPDIR GO111MODULE=off ./src/cmd/makebb/makebb -o bb3 $GOPATH_TMPDIR/src/github.com/u-root/u-root/cmds/*/* $GOPATH_TMPDIR/src/github.com/u-root/cpu/cmds/* $GOPATH_TMPDIR/src/github.com/hugelgupf/p9/cmd/* + +rm -rf $GOPATH_TMPDIR bb3 diff --git a/test-external.sh b/test-external.sh index c644a85e..b557059d 100755 --- a/test-external.sh +++ b/test-external.sh @@ -14,10 +14,14 @@ $GO build cd ../../.. +MAKEBB=$(pwd)/src/cmd/makebb/makebb TMPDIR=$(mktemp -d) EMPTY_TMPDIR=$(mktemp -d) +pushd $TMPDIR + function ctrl_c() { + popd rm -rf $TMPDIR # https://github.com/golang/go/issues/27455 GOPATH=$EMPTY_TMPDIR $GO clean -cache -modcache @@ -27,44 +31,38 @@ trap ctrl_c INT # u-root checked out NOT in $GOPATH. # Checkout before 1.20+ was required. -(cd $TMPDIR && git clone https://github.com/u-root/u-root && cd u-root && git checkout 6ca118b0a77c23ae859cddeee15762d9cd74c63f) +(git clone https://github.com/u-root/u-root && cd u-root && git checkout 6ca118b0a77c23ae859cddeee15762d9cd74c63f) # Pin to commit before Go 1.20 was required. (We test 1.18+.) -(cd $TMPDIR && git clone https://github.com/gokrazy/gokrazy && cd gokrazy && git checkout 254af2bf3c82ff9f56e89794b2c146ef9cc85dc6) +(git clone https://github.com/gokrazy/gokrazy && cd gokrazy && git checkout 254af2bf3c82ff9f56e89794b2c146ef9cc85dc6) # Pin to commit before Go 1.20 was required. (We test 1.18+.) -(cd $TMPDIR && git clone https://github.com/hugelgupf/p9 && cd p9 && git checkout 660eb2337e3c1878298fe550ad03248f329eeb72) +(git clone https://github.com/hugelgupf/p9 && cd p9 && git checkout 660eb2337e3c1878298fe550ad03248f329eeb72) -# Make u-root have modules. -(cd $TMPDIR/u-root && rm -rf vendor) +# Test workspaces. +go work init ./u-root && go work use ./gokrazy && go work use ./p9 -GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=auto ./src/cmd/makebb/makebb -o bb1 $TMPDIR/u-root/cmds/*/* -GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on ./src/cmd/makebb/makebb -o bb2 $TMPDIR/u-root/cmds/*/* +# Test reproducible builds. +echo $TMPDIR +echo $(pwd) +GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on $MAKEBB -go-mod=readonly -o bb1 ./u-root/cmds/*/* +GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on $MAKEBB -go-mod=readonly -o bb2 ./u-root/cmds/*/* cmp bb1 bb2 || (echo "building u-root is not reproducible" && exit 1) rm bb1 bb2 -GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on ./src/cmd/makebb/makebb $TMPDIR/u-root/cmds/*/* $TMPDIR/gokrazy/cmd/* $TMPDIR/p9/cmd/* -GOARCH=arm64 GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on ./src/cmd/makebb/makebb $TMPDIR/u-root/cmds/*/* $TMPDIR/gokrazy/cmd/* $TMPDIR/p9/cmd/* +GOARCH=amd64 GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on $MAKEBB -go-mod=readonly ./u-root/cmds/*/* ./gokrazy/cmd/* ./p9/cmd/* +GOARCH=arm64 GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on $MAKEBB -go-mod=readonly ./u-root/cmds/*/* ./gokrazy/cmd/* ./p9/cmd/* +GOARCH=riscv64 GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on $MAKEBB -go-mod=readonly ./u-root/cmds/*/* ./gokrazy/cmd/* ./p9/cmd/* -if grep -q -v "go1.13" <<< "$($GO version)"; then - GOARCH=riscv64 GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on ./src/cmd/makebb/makebb $TMPDIR/u-root/cmds/*/* $TMPDIR/gokrazy/cmd/* $TMPDIR/p9/cmd/* +# Try an offline build in go workspaces. +# go work vendor is a Go 1.22 feature. +if grep -q -v "go1.21" <<< "$($GO version)" && grep -q -v "go1.20" <<< "$($GO version)"; +then + go work vendor + GOARCH=amd64 GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on $MAKEBB -go-mod=vendor ./u-root/cmds/*/* ./gokrazy/cmd/* ./p9/cmd/* fi +popd rm -rf $TMPDIR # https://github.com/golang/go/issues/27455 GOPATH=$EMPTY_TMPDIR $GO clean -cache -modcache rm -rf $EMPTY_TMPDIR - -# Try vendor-based $GOPATH u-root. -GOPATH_TMPDIR=$(mktemp -d) -function ctrl_c() { - rm -rf $GOPATH_TMPDIR -} -trap ctrl_c INT - -mkdir -p $GOPATH_TMPDIR/src/github.com/u-root -(cd $GOPATH_TMPDIR/src/github.com/u-root && git clone https://github.com/u-root/u-root && cd u-root && git checkout 6ca118b0a77c23ae859cddeee15762d9cd74c63f) -GOROOT=$GOROOT GOPATH=$GOPATH_TMPDIR GO111MODULE=off ./src/cmd/makebb/makebb -o bb3 $GOPATH_TMPDIR/src/github.com/u-root/u-root/cmds/*/* -GOARCH=arm64 GOROOT=$GOROOT GOPATH=$GOPATH_TMPDIR GO111MODULE=off ./src/cmd/makebb/makebb -o bb3 $GOPATH_TMPDIR/src/github.com/u-root/u-root/cmds/*/* -GOARCH=riscv64 GOROOT=$GOROOT GOPATH=$GOPATH_TMPDIR GO111MODULE=off ./src/cmd/makebb/makebb -o bb3 $GOPATH_TMPDIR/src/github.com/u-root/u-root/cmds/*/* - -rm -rf $GOPATH_TMPDIR bb3 diff --git a/test-multi-simple.sh b/test-multi-simple.sh deleted file mode 100755 index 8ece6014..00000000 --- a/test-multi-simple.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -set -ex - -if [ -z "$GOROOT" ]; then - GO="go" -else - GO="$GOROOT/bin/go" -fi - -cd src/cmd/makebb - -$GO generate -$GO build - -cd ../../.. - -TMPDIR=$(mktemp -d) -EMPTY_TMPDIR=$(mktemp -d) - -function ctrl_c() { - rm -rf $TMPDIR - # https://github.com/golang/go/issues/27455 - GOPATH=$EMPTY_TMPDIR $GO clean -cache -modcache - rm -rf $EMPTY_TMPDIR -} -trap ctrl_c INT - -# Pin to commit before Go 1.20 was required. (We test 1.18+.) -(cd $TMPDIR && git clone https://github.com/gokrazy/gokrazy && cd gokrazy && git checkout 254af2bf3c82ff9f56e89794b2c146ef9cc85dc6) -# Pin to commit before Go 1.20 was required. (We test 1.18+.) -(cd $TMPDIR && git clone https://github.com/hugelgupf/p9 && cd p9 && git checkout 660eb2337e3c1878298fe550ad03248f329eeb72) - -# Compile gokrazy and p9 together. Got ideas for what to add here? Let me know. -GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on ./src/cmd/makebb/makebb $TMPDIR/gokrazy/cmd/\* $TMPDIR/p9/cmd/* -GOARCH=arm64 GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on ./src/cmd/makebb/makebb $TMPDIR/gokrazy/cmd/\* $TMPDIR/p9/cmd/* - -if grep -q -v "go1.13" <<< "$($GO version)"; then - GOARCH=riscv64 GOROOT=$GOROOT GOPATH=$EMPTY_TMPDIR GO111MODULE=on ./src/cmd/makebb/makebb $TMPDIR/gokrazy/cmd/* $TMPDIR/p9/cmd/* -fi - -rm -rf $TMPDIR diff --git a/test.sh b/test.sh deleted file mode 100755 index da230435..00000000 --- a/test.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -set -eux - -./gobuilds.sh -./test-external.sh diff --git a/test/all_test.go b/test/all_test.go index 7ffb18ea..c49c1d7d 100644 --- a/test/all_test.go +++ b/test/all_test.go @@ -29,6 +29,8 @@ func TestMakeBB(t *testing.T) { if *makebb == "" { t.Fatalf("Path to makebb is not set") } + mkbb, _ := filepath.Abs(*makebb) + wd, _ := os.Getwd() goVersion, err := golang.Default().Version() if err != nil { @@ -39,6 +41,8 @@ func TestMakeBB(t *testing.T) { testname string // file paths to commands to compile cmds []string + // Working directory + wd string // extra args to makebb extraArgs []string // command name -> expected output @@ -48,33 +52,39 @@ func TestMakeBB(t *testing.T) { }{ { testname: "goembed", - cmds: []string{"./goembed"}, + cmds: []string{"."}, + wd: filepath.Join(wd, "goembed"), want: map[string]string{"goembed": "hello\n"}, unsupportedGoVersions: []string{"go1.15"}, }, { testname: "12-fancy-cmd", - cmds: []string{"./12-fancy-cmd"}, + cmds: []string{"."}, + wd: filepath.Join(wd, "12-fancy-cmd"), want: map[string]string{"12-fancy-cmd": "12-fancy-cmd\n"}, }, { testname: "injectldvar", - cmds: []string{"./injectldvar"}, + cmds: []string{"."}, + wd: filepath.Join(wd, "injectldvar"), extraArgs: []string{"-go-extra-args=-ldflags", "-go-extra-args=-X 'github.com/u-root/gobusybox/test/injectldvar.Something=Hello World'"}, want: map[string]string{"injectldvar": "Hello World\n"}, }, { testname: "implicitimport", - cmds: []string{"./implicitimport/cmd/loghello"}, + cmds: []string{"./cmd/loghello"}, + wd: filepath.Join(wd, "implicitimport"), want: map[string]string{"loghello": "Log Hello\n"}, }, - { + /*{ testname: "nested-modules", - cmds: []string{"./nested/cmd/dmesg", "./nested/cmd/strace", "./nested/nestedmod/cmd/p9ufs"}, - }, + cmds: []string{"./cmd/dmesg", "./cmd/strace", "./nestedmod/cmd/p9ufs"}, + wd: filepath.Join(wd, "nested"), + },*/ { testname: "cross-module-deps", - cmds: []string{"./normaldeps/mod1/cmd/helloworld", "./normaldeps/mod1/cmd/getppid"}, + wd: filepath.Join(wd, "normaldeps/mod1"), + cmds: []string{"./cmd/helloworld", "./cmd/getppid"}, want: map[string]string{ "helloworld": "test/normaldeps/mod2/hello: test/normaldeps/mod2/v2/hello\n", "getppid": fmt.Sprintf("%d\n", os.Getpid()), @@ -82,11 +92,13 @@ func TestMakeBB(t *testing.T) { }, { testname: "import-name-conflict", - cmds: []string{"./nameconflict/cmd/nameconflict"}, + wd: filepath.Join(wd, "nameconflict"), + cmds: []string{"./cmd/nameconflict"}, }, { testname: "diamond-module-dependency", - cmds: []string{"./diamonddep/mod1/cmd/hellowithdep", "./diamonddep/mod1/cmd/helloworld"}, + wd: filepath.Join(wd, "diamonddep/mod1"), + cmds: []string{"./cmd/hellowithdep", "./cmd/helloworld"}, want: map[string]string{ "hellowithdep": "test/diamonddep/mod1/hello: test/diamonddep/mod1/hello\n" + "test/diamonddep/mod2/hello: test/diamonddep/mod2/hello\n" + @@ -110,9 +122,10 @@ func TestMakeBB(t *testing.T) { binary := filepath.Join(dir, fmt.Sprintf("bb-%s", go111module)) // Build the bb. - t.Logf("Run: %s %s -o %s %v %s", goEnv, *makebb, binary, strings.Join(tt.extraArgs, " "), strings.Join(tt.cmds, " ")) + t.Logf("Run: %s %s -o %s %v %s", goEnv, mkbb, binary, strings.Join(tt.extraArgs, " "), strings.Join(tt.cmds, " ")) args := append([]string{"-o", binary}, tt.extraArgs...) - cmd := exec.Command(*makebb, append(args, tt.cmds...)...) + cmd := exec.Command(mkbb, append(args, tt.cmds...)...) + cmd.Dir = tt.wd cmd.Env = append(os.Environ(), goEnv) out, err := cmd.CombinedOutput() if err != nil { @@ -165,18 +178,21 @@ func TestBBSymlink(t *testing.T) { if *makebb == "" { t.Fatalf("Path to makebb is not set") } + mkbb, _ := filepath.Abs(*makebb) + dir := t.TempDir() - cmdPath := "./implicitimport/cmd/loghello" + cmdPath := "./cmd/loghello" want := "Log Hello\n" goEnv := "GO111MODULE=on" binary := filepath.Join(dir, "bb") // Build the bb. - t.Logf("Run: %s %s -o %s %s", goEnv, *makebb, binary, cmdPath) + t.Logf("Run: (cd ./implicitimport && %s %s -o %s %s)", goEnv, *makebb, binary, cmdPath) - cmd := exec.Command(*makebb, "-o", binary, cmdPath) + cmd := exec.Command(mkbb, "-o", binary, cmdPath) + cmd.Dir = "./implicitimport" cmd.Env = append(os.Environ(), goEnv) out, err := cmd.CombinedOutput() if err != nil {