Revert "sysfs: requires all methods to return syscall.Errno"

This reverts commit 4ea9d1a7b5.
This commit is contained in:
Adrian Cole
2023-03-21 22:22:36 +08:00
parent 4ea9d1a7b5
commit a43a0f11e4
65 changed files with 1279 additions and 1349 deletions

View File

@@ -76,8 +76,8 @@ func TestNewFSContext(t *testing.T) {
// Verify that each call to OpenFile returns a different file
// descriptor.
f1, errno := fsc.OpenFile(preopenedDir.FS, preopenedDir.Name, 0, 0)
require.Zero(t, errno)
f1, err := fsc.OpenFile(preopenedDir.FS, preopenedDir.Name, 0, 0)
require.NoError(t, err)
require.NotEqual(t, FdPreopen, f1)
// Verify that file descriptors are reused.
@@ -88,9 +88,9 @@ func TestNewFSContext(t *testing.T) {
// test to ensure that our implementation properly reuses descriptor
// numbers but if we were to change the reuse strategy, this test
// would likely break and need to be updated.
require.Zero(t, fsc.CloseFile(f1))
f2, errno := fsc.OpenFile(preopenedDir.FS, preopenedDir.Name, 0, 0)
require.Zero(t, errno)
require.NoError(t, fsc.CloseFile(f1))
f2, err := fsc.OpenFile(preopenedDir.FS, preopenedDir.Name, 0, 0)
require.NoError(t, err)
require.Equal(t, f1, f2)
})
}
@@ -105,14 +105,14 @@ func TestFSContext_CloseFile(t *testing.T) {
require.NoError(t, err)
defer fsc.Close(testCtx)
fdToClose, errno := fsc.OpenFile(testFS, "empty.txt", os.O_RDONLY, 0)
require.Zero(t, errno)
fdToClose, err := fsc.OpenFile(testFS, "empty.txt", os.O_RDONLY, 0)
require.NoError(t, err)
fdToKeep, errno := fsc.OpenFile(testFS, "test.txt", os.O_RDONLY, 0)
require.Zero(t, errno)
fdToKeep, err := fsc.OpenFile(testFS, "test.txt", os.O_RDONLY, 0)
require.NoError(t, err)
// Close
require.Zero(t, fsc.CloseFile(fdToClose))
require.NoError(t, fsc.CloseFile(fdToClose))
// Verify fdToClose is closed and removed from the opened FDs.
_, ok := fsc.LookupFile(fdToClose)
@@ -123,10 +123,10 @@ func TestFSContext_CloseFile(t *testing.T) {
require.True(t, ok)
t.Run("EBADF for an invalid FD", func(t *testing.T) {
require.EqualErrno(t, syscall.EBADF, fsc.CloseFile(42)) // 42 is an arbitrary invalid FD
require.Equal(t, syscall.EBADF, fsc.CloseFile(42)) // 42 is an arbitrary invalid FD
})
t.Run("ENOTSUP for a preopen", func(t *testing.T) {
require.EqualErrno(t, syscall.ENOTSUP, fsc.CloseFile(FdPreopen)) // 42 is an arbitrary invalid FD
require.Equal(t, syscall.ENOTSUP, fsc.CloseFile(FdPreopen)) // 42 is an arbitrary invalid FD
})
}
@@ -187,8 +187,8 @@ func TestContext_Close(t *testing.T) {
// Verify base case
require.Equal(t, 1+FdPreopen, uint32(fsc.openedFiles.Len()))
_, errno := fsc.OpenFile(testFS, "foo", os.O_RDONLY, 0)
require.Zero(t, errno)
_, err = fsc.OpenFile(testFS, "foo", os.O_RDONLY, 0)
require.NoError(t, err)
require.Equal(t, 2+FdPreopen, uint32(fsc.openedFiles.Len()))
// Closing should not err.
@@ -210,8 +210,8 @@ func TestContext_Close_Error(t *testing.T) {
require.NoError(t, err)
// open another file
_, errno := fsc.OpenFile(testFS, "foo", os.O_RDONLY, 0)
require.Zero(t, errno)
_, err = fsc.OpenFile(testFS, "foo", os.O_RDONLY, 0)
require.NoError(t, err)
require.EqualError(t, fsc.Close(testCtx), "error closing")
@@ -224,8 +224,8 @@ func TestFSContext_ReOpenDir(t *testing.T) {
dirFs := sysfs.NewDirFS(tmpDir)
const dirName = "dir"
errno := dirFs.Mkdir(dirName, 0o700)
require.Zero(t, errno)
err := dirFs.Mkdir(dirName, 0o700)
require.NoError(t, err)
fsc, err := NewFSContext(nil, nil, nil, dirFs)
require.NoError(t, err)
@@ -234,8 +234,8 @@ func TestFSContext_ReOpenDir(t *testing.T) {
}()
t.Run("ok", func(t *testing.T) {
dirFd, errno := fsc.OpenFile(dirFs, dirName, os.O_RDONLY, 0o600)
require.Zero(t, errno)
dirFd, err := fsc.OpenFile(dirFs, dirName, os.O_RDONLY, 0o600)
require.NoError(t, err)
ent, ok := fsc.LookupFile(dirFd)
require.True(t, ok)
@@ -244,25 +244,24 @@ func TestFSContext_ReOpenDir(t *testing.T) {
ent.ReadDir = &ReadDir{Dirents: make([]*platform.Dirent, 10), CountRead: 12345}
// Then reopen the same file descriptor.
ent, errno = fsc.ReOpenDir(dirFd)
require.Zero(t, errno)
ent, err = fsc.ReOpenDir(dirFd)
require.NoError(t, err)
// Verify the read dir state has been reset.
require.Equal(t, &ReadDir{}, ent.ReadDir)
})
t.Run("non existing ", func(t *testing.T) {
_, errno = fsc.ReOpenDir(12345)
require.EqualErrno(t, syscall.EBADF, errno)
_, err = fsc.ReOpenDir(12345)
require.ErrorIs(t, err, syscall.EBADF)
})
t.Run("not dir", func(t *testing.T) {
const fileName = "dog"
fd, errno := fsc.OpenFile(dirFs, fileName, os.O_CREATE, 0o600)
require.Zero(t, errno)
_, errno = fsc.ReOpenDir(fd)
require.EqualErrno(t, syscall.EISDIR, errno)
fd, err := fsc.OpenFile(dirFs, fileName, os.O_CREATE, 0o600)
require.NoError(t, err)
_, err = fsc.ReOpenDir(fd)
require.ErrorIs(t, err, syscall.EISDIR)
})
}
@@ -271,8 +270,8 @@ func TestFSContext_Renumber(t *testing.T) {
dirFs := sysfs.NewDirFS(tmpDir)
const dirName = "dir"
errno := dirFs.Mkdir(dirName, 0o700)
require.Zero(t, errno)
err := dirFs.Mkdir(dirName, 0o700)
require.NoError(t, err)
c, err := NewFSContext(nil, nil, nil, dirFs)
require.NoError(t, err)
@@ -281,13 +280,13 @@ func TestFSContext_Renumber(t *testing.T) {
}()
for _, toFd := range []uint32{10, 100, 100} {
fromFd, errno := c.OpenFile(dirFs, dirName, os.O_RDONLY, 0)
require.Zero(t, errno)
fromFd, err := c.OpenFile(dirFs, dirName, os.O_RDONLY, 0)
require.NoError(t, err)
prevDirFile, ok := c.LookupFile(fromFd)
require.True(t, ok)
require.Zero(t, c.Renumber(fromFd, toFd))
require.Equal(t, nil, c.Renumber(fromFd, toFd))
renumberedDirFile, ok := c.LookupFile(toFd)
require.True(t, ok)
@@ -323,28 +322,27 @@ func TestFSContext_ChangeOpenFlag(t *testing.T) {
const fileName = "dir"
require.NoError(t, os.WriteFile(path.Join(tmpDir, fileName), []byte("0123456789"), 0o600))
c, errno := NewFSContext(nil, nil, nil, dirFs)
require.NoError(t, errno)
c, err := NewFSContext(nil, nil, nil, dirFs)
require.NoError(t, err)
defer func() {
require.NoError(t, c.Close(context.Background()))
}()
// Without APPEND.
fd, errno := c.OpenFile(dirFs, fileName, os.O_RDWR, 0o600)
require.Zero(t, errno)
fd, err := c.OpenFile(dirFs, fileName, os.O_RDWR, 0o600)
require.NoError(t, err)
f0, ok := c.openedFiles.Lookup(fd)
require.True(t, ok)
require.Equal(t, f0.openFlag&syscall.O_APPEND, 0)
// Set the APPEND flag.
require.Zero(t, c.ChangeOpenFlag(fd, syscall.O_APPEND))
require.NoError(t, c.ChangeOpenFlag(fd, syscall.O_APPEND))
f1, ok := c.openedFiles.Lookup(fd)
require.True(t, ok)
require.Equal(t, f1.openFlag&syscall.O_APPEND, syscall.O_APPEND)
// Remove the APPEND flag.
require.Zero(t, c.ChangeOpenFlag(fd, 0))
require.NoError(t, c.ChangeOpenFlag(fd, 0))
f2, ok := c.openedFiles.Lookup(fd)
require.True(t, ok)
require.Equal(t, f2.openFlag&syscall.O_APPEND, 0)