# Relative imports in command line package

env GO111MODULE=off

# Run tests outside GOPATH.
env GOPATH=$WORK/tmp

go test ./testimport/p.go ./testimport/p_test.go ./testimport/x_test.go
stdout '^ok'

-- testimport/p.go --
package p

func F() int { return 1 }
-- testimport/p1/p1.go --
package p1

func F() int { return 1 }
-- testimport/p2/p2.go --
package p2

func F() int { return 1 }
-- testimport/p_test.go --
package p

import (
	"./p1"

	"testing"
)

func TestF(t *testing.T) {
	if F() != p1.F() {
		t.Fatal(F())
	}
}
-- testimport/x_test.go --
package p_test

import (
	. "../testimport"

	"./p2"

	"testing"
)

func TestF1(t *testing.T) {
	if F() != p2.F() {
		t.Fatal(F())
	}
}
