star/gdu/pkg/analyze/symlink_test.go

43 lines
1.0 KiB
Go
Raw Normal View History

2025-04-26 19:33:14 +08:00
package analyze
import (
"os"
"testing"
"b612.me/apps/b612/gdu/internal/testdir"
"github.com/stretchr/testify/assert"
)
func TestFollowSymlinkErr(t *testing.T) {
fin := testdir.CreateTestDir()
defer fin()
err := os.Mkdir("test_dir/empty", 0o644)
assert.Nil(t, err)
err = os.Symlink(
".git/annex/objects/qx/qX/SHA256E-s967858083--"+
"3e54803fded8dc3a9ea68b106f7b51e04e33c79b4a7b32a860f0b22d89af5c65.mp4/SHA256E-s967858083--"+
"3e54803fded8dc3a9ea68b106f7b51e04e33c79b4a7b32a860f0b22d89af5c65.mp4",
"test_dir/nested/file3")
assert.Nil(t, err)
err = os.Symlink(
"test_dir/nested",
"test_dir/some_dir")
assert.Nil(t, err)
_, err = followSymlink("xxx", false)
assert.ErrorContains(t, err, "no such file or directory")
_, err = followSymlink("test_dir/nested/file3", false)
assert.ErrorContains(t, err, "no such file or directory")
_, err = followSymlink("test_dir/nested/file3", true)
assert.NoError(t, err)
res, err := followSymlink("test_dir/some_dir", true)
assert.Equal(t, nil, res)
assert.NoError(t, err)
}