Closed
Description
What version of Go are you using (go version
)?
go version go1.9rc2 linux/amd64
What operating system and processor architecture are you using (go env
)?
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/michael/go"
GORACE=""
GOROOT="/home/michael/sdk/go1.9rc2"
GOTOOLDIR="/home/michael/sdk/go1.9rc2/pkg/tool/linux_amd64"
GCCGO="/usr/bin/gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build444004786=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
What did you do?
I’m writing a unit test where I construct a custom GOPATH for each test case. I use types.Config{Importer: importer.For("source", nil)}
, but see no way to pass my per-test custom GOPATH to that importer: importer.For
calls srcimporter.New
as follows:
return srcimporter.New(&build.Default, token.NewFileSet(), make(map[string]*types.Package))
As srcimporter
is internal, calling importer.For
is the only way of obtaining one.
My current workaround is to overwrite build.Default
, but that precludes my unit tests from running in parallel.
Could we add a way to obtain a source importer which allows passing in a build.Context
?
cc @griesemer
Activity
griesemer commentedon Aug 14, 2017
Specialized lookup should be supported via the lookup interface - which is currently not supported. It's a known issue. I'm going to close this as a duplicate of #13847, fixing that issue will enable this request as well. The problem is that we may have to change the API (again), and that means adding yet another entry point because we cannot change what's here due to the Go 1.0 guarantee.