Skip to content

memfs doesn't handle creating and opening files in directory which is a symlink #72

@gildor478

Description

@gildor478

Whenever I create a symlink to a directory, I cannot create/open files using this symlink. It works perfectly, if I use "osfs".

Here is a test for this bug:

import (
	"testing"

	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
	"gopkg.in/src-d/go-billy.v4/memfs"
	"gopkg.in/src-d/go-billy.v4/util"
)

func TestSymlink_Mkdir(t *testing.T) {
	fs := memfs.New()
	//fs := osfs.New("/tmp")
	require.NoError(t, fs.MkdirAll("dir", 0755))
	require.NoError(t, util.WriteFile(fs, "dir/file.txt", nil, 0644))
	require.NoError(t, fs.Symlink("dir", "link"))

	_, err := fs.Stat("dir/file.txt")
	assert.NoError(t, err, "reading directly /dir/file.txt")
	_, err = fs.Stat("link/file.txt")
	assert.NoError(t, err, "reading /dir/file.txt through /link")

	fd, err := fs.Create("link/file2.txt")
	assert.NoError(t, err)
	assert.NoError(t, fd.Close())
	_, err = fs.Stat("dir/file2.txt")
	assert.NoError(t, err, "reading file2.txt created into the /link")
}

Let me know if I have made a mistake.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions