Open
Description
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:
- testing/fstest: TestFS fails on valid FS if it contains any symlinks #44113 (similar ticket for symlinks to regular files)
- io/fs: document how hard and symbolic links in a fs.FS should work #45470 (ticket asking for docs on what the correct behavior of an
fs.FS
is in this situation)
Metadata
Metadata
Assignees
Labels
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
cagedmantis commentedon Jan 7, 2022
/cc @mpvl