# golang.org/issue/34055
# Starting in Go 1.25, go-import meta tag support an optional subdirectory paramater.
# The corresponding go-import meta tag is specified as
# 
# and contains the module in vcs-test.golang.org/git/gitreposubdir/foo/subdir.
# See testdata/vcstest/go/gitreposubdir.txt and testdata/vcstest/git/gitreposubdir.txt

[short] skip 'builds a go program'
[!git] skip

env GO111MODULE=on
env GOPROXY=direct
env GOSUMDB=off

# Get the module without having to specify the subdir.
cd a
cp go.mod go.mod.orig
go get vcs-test.golang.org/go/gitreposubdir@v1.2.3
exists $GOPATH/pkg/mod/vcs-test.golang.org/go/gitreposubdir@v1.2.3
go get vcs-test.golang.org/go/gitreposubdirv2/v2@v2.0.0
exists $GOPATH/pkg/mod/vcs-test.golang.org/go/gitreposubdirv2/v2@v2.0.0

# Import the module without having to specify the subdir.
cp go.mod.orig go.mod
go mod tidy

# Run main.go which has the import.
go run main.go
stdout 'hello, world'
stdout 'hello, world v2'

# Fail if subdir is specified in get.
! go get vcs-test.golang.org/go/gitreposubdir/foo/subdir
stderr 'module vcs-test.golang.org/go/gitreposubdir@upgrade found \(v1.2.3\), but does not contain package vcs-test.golang.org/go/gitreposubdir/foo/subdir'
! go get vcs-test.golang.org/go/gitreposubdirv2/v2/foo/subdir
stderr 'module vcs-test.golang.org/go/gitreposubdirv2/v2@upgrade found \(v2.0.0\), but does not contain package vcs-test.golang.org/go/gitreposubdirv2/v2/foo/subdir'

# Fail if subdir is specified in the import.
cd ../b
! go mod tidy
stderr 'module vcs-test.golang.org/go/gitreposubdir@latest found \(v1.2.3\), but does not contain package vcs-test.golang.org/go/gitreposubdir/foo/subdir'
stderr 'module vcs-test.golang.org/go/gitreposubdirv2/v2@latest found \(v2.0.0\), but does not contain package vcs-test.golang.org/go/gitreposubdirv2/v2/foo/subdir'

-- a/main.go --
package main

import (
    "fmt"
    "vcs-test.golang.org/go/gitreposubdir"
    "vcs-test.golang.org/go/gitreposubdirv2/v2"
)

func main() {
    fmt.Println(greeter.Hello())
    fmt.Println(greeterv2.Hello())
}
-- a/go.mod --
module example

go 1.24
-- b/main.go --
package main

import (
    "fmt"
    "vcs-test.golang.org/go/gitreposubdir/foo/subdir"
    "vcs-test.golang.org/go/gitreposubdirv2/v2/foo/subdir"
)

func main() {
    fmt.Println(greeter.Hello())
    fmt.Println(greeterv2.Hello())
}
-- b/go.mod --
module example

go 1.24
