What version of Go are you using (go version)?
$ go version
go version go1.17.5 linux/amd64
I also tried with:
$ PATH=$HOME/.local/go1.18beta1/bin:$PATH
$ go version
go version go1.18beta1 linux/amd64
Does this issue reproduce with the latest release?
Yes, 1.17.5 is the latest release. It also reproduces with go1.18beta1.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/lukeshu/.cache/go-build"
GOENV="/home/lukeshu/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/lukeshu/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/lukeshu/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/lib/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.17.5"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/run/user/1000/tmpdir/go-build139097469=/tmp/go-build -gno-record-gcc-switches"
What did you do?
I ran this test (closely based on testing/fstest's TestSymlink):
package x_test
import (
"os"
"path/filepath"
"testing"
"testing/fstest"
)
func TestSymlinkDir(t *testing.T) {
tmp := t.TempDir()
tmpfs := os.DirFS(tmp)
if err := os.Mkdir(filepath.Join(tmp, "subdir"), 0755); err != nil {
t.Fatal(err)
}
if err := os.Symlink(filepath.Join(tmp, "subdir"), filepath.Join(tmp, "subdir.link")); err != nil {
t.Fatal(err)
}
if err := fstest.TestFS(tmpfs, "subdir", "subdir.link"); err != nil {
t.Fatal(err)
}
}
What did you expect to see?
I expected the test to pass.
What did you see instead?
$ go test -v .
=== RUN TestSymlinkDir
x_test.go:27: TestFS found errors:
subdir.link: Open+ReadAll: read /run/user/1000/tmpdir/TestSymlinkDir3706588029/001/subdir.link: is a directory
--- FAIL: TestSymlinkDir (0.00s)
I am not sure whether the problem is with os.DirFS or with fstest.TestFS. See also:
What version of Go are you using (
go version)?I also tried with:
Does this issue reproduce with the latest release?
Yes, 1.17.5 is the latest release. It also reproduces with go1.18beta1.
What operating system and processor architecture are you using (
go env)?go envOutputWhat did you do?
I ran this test (closely based on
testing/fstest'sTestSymlink):What did you expect to see?
I expected the test to pass.
What did you see instead?
I am not sure whether the problem is with
os.DirFSor withfstest.TestFS. See also:fs.FSis in this situation)