59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package sysfs
|
|
|
|
import (
|
|
"os"
|
|
"path"
|
|
"testing"
|
|
|
|
"github.com/tetratelabs/wazero/experimental/sys"
|
|
"github.com/tetratelabs/wazero/internal/testing/require"
|
|
)
|
|
|
|
func TestUnlink(t *testing.T) {
|
|
t.Run("doesn't exist", func(t *testing.T) {
|
|
name := "non-existent"
|
|
errno := unlink(name)
|
|
require.EqualErrno(t, sys.ENOENT, errno)
|
|
})
|
|
|
|
t.Run("target: dir", func(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
|
|
dir := path.Join(tmpDir, "dir")
|
|
require.NoError(t, os.Mkdir(dir, 0o700))
|
|
|
|
errno := unlink(dir)
|
|
require.EqualErrno(t, sys.EISDIR, errno)
|
|
|
|
require.NoError(t, os.Remove(dir))
|
|
})
|
|
|
|
t.Run("target: symlink to dir", func(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
|
|
// Create link target dir.
|
|
subDirRealPath := path.Join(tmpDir, "subdir")
|
|
require.NoError(t, os.Mkdir(subDirRealPath, 0o700))
|
|
|
|
// Create a symlink to the subdirectory.
|
|
const symlinkName = "symlink-to-dir"
|
|
require.NoError(t, os.Symlink("subdir", symlinkName))
|
|
|
|
// Unlinking the symlink should suceed.
|
|
errno := unlink(symlinkName)
|
|
require.EqualErrno(t, 0, errno)
|
|
})
|
|
|
|
t.Run("file exists", func(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
|
|
name := path.Join(tmpDir, "unlink")
|
|
|
|
require.NoError(t, os.WriteFile(name, []byte{}, 0o600))
|
|
|
|
require.EqualErrno(t, 0, unlink(name))
|
|
_, err := os.Stat(name)
|
|
require.Error(t, err)
|
|
})
|
|
}
|