env GO111MODULE=on

# TODO(bcmills): Convert the 'go test' calls below to 'go list -test' once 'go
# list' is more sensitive to package loading errors.

# A test in the module's root package should work.
cd a/
cp go.mod.empty go.mod
go test
stdout PASS

cp go.mod.empty go.mod
go list -deps
! stdout ^testing$

# list all should include test dependencies, like testing
cp go.mod.empty go.mod
go list all
stdout ^testing$
stdout ^rsc.io/quote$
stdout ^rsc.io/testonly$

# list -deps -tests should also include testing
# but not deps of tests of deps (rsc.io/testonly).
go list -deps -test
stdout ^testing$
stdout ^rsc.io/quote$
! stdout ^rsc.io/testonly$

# list -test all should succeed
cp go.mod.empty go.mod
go list -test all
stdout '^testing'

cp go.mod.empty go.mod
go test
stdout PASS

# A test with the "_test" suffix in the module root should also work.
cd ../b/
go test
stdout PASS

# A test with the "_test" suffix of a *package* with a "_test" suffix should
# even work (not that you should ever do that).
cd ../c_test
go test
stdout PASS

cd ../d_test
go test
stdout PASS

cd ../e
go test
stdout PASS

-- a/go.mod.empty --
module example.com/user/a

-- a/a.go --
package a

-- a/a_test.go --
package a

import "testing"
import _ "rsc.io/quote"

func Test(t *testing.T) {}

-- b/go.mod --
module example.com/user/b

-- b/b.go --
package b

-- b/b_test.go --
package b_test

import "testing"

func Test(t *testing.T) {}

-- c_test/go.mod --
module example.com/c_test

-- c_test/umm.go --
// Package c_test is the non-test package for its import path!
package c_test

-- c_test/c_test_test.go --
package c_test_test

import "testing"

func Test(t *testing.T) {}

-- d_test/go.mod --
// Package d is an ordinary package in a deceptively-named directory.
module example.com/d

-- d_test/d.go --
package d

-- d_test/d_test.go --
package d_test

import "testing"

func Test(t *testing.T) {}

-- e/go.mod --
module example.com/e_test

-- e/wat.go --
// Package e_test is the non-test package for its import path,
// in a deceptively-named directory!
package e_test

-- e/e_test.go --
package e_test_test

import "testing"

func Test(t *testing.T) {}
