Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

go/importer: lacking a way to pass a build.Context to obtained srcimporter #21418

Closed
stapelberg opened this issue Aug 12, 2017 · 1 comment
Closed

Comments

@stapelberg
Copy link
Contributor

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

@griesemer
Copy link
Contributor

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.

@golang golang locked and limited conversation to collaborators Aug 14, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants