Skip to content

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

Closed
@stapelberg

Description

@stapelberg

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

griesemer commented on Aug 14, 2017

@griesemer
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.

locked and limited conversation to collaborators on Aug 14, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @stapelberg@griesemer@gopherbot

        Issue actions

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