diff --git a/io/fs/disk.go b/io/fs/disk.go index 99662993..fc614556 100644 --- a/io/fs/disk.go +++ b/io/fs/disk.go @@ -203,7 +203,7 @@ func NewRootedDiskFilesystem(config RootedDiskConfig) (Filesystem, error) { info, err := os.Stat(fs.root) if err != nil { - return nil, err + return nil, os.ErrNotExist } if !info.IsDir() { @@ -285,7 +285,7 @@ func (fs *diskFilesystem) Symlink(oldname, newname string) error { info, err := os.Lstat(oldname) if err != nil { - return err + return os.ErrNotExist } if info.Mode()&os.ModeSymlink != 0 { @@ -494,7 +494,7 @@ func (fs *diskFilesystem) Stat(path string) (FileInfo, error) { info, err := os.Lstat(path) if err != nil { - return nil, err + return nil, os.ErrNotExist } dif.mode = info.Mode() @@ -502,7 +502,7 @@ func (fs *diskFilesystem) Stat(path string) (FileInfo, error) { if info.Mode()&os.ModeSymlink != 0 { info, err = os.Stat(path) if err != nil { - return nil, err + return nil, os.ErrNotExist } } diff --git a/session/snapshot.go b/session/snapshot.go index ef303ef4..82c61d1e 100644 --- a/session/snapshot.go +++ b/session/snapshot.go @@ -2,6 +2,7 @@ package session import ( "bytes" + "errors" "io" "os" @@ -39,8 +40,12 @@ func NewHistorySource(fs fs.Filesystem, path string) (SnapshotSource, error) { path: path, } - if _, err := s.fs.Stat(s.path); err == os.ErrNotExist { - return nil, nil + if _, err := s.fs.Stat(s.path); err != nil { + if errors.Is(err, os.ErrNotExist) { + return nil, nil + } + + return nil, err } data, err := s.fs.ReadFile(s.path) diff --git a/session/snapshot_test.go b/session/snapshot_test.go new file mode 100644 index 00000000..b98cf26e --- /dev/null +++ b/session/snapshot_test.go @@ -0,0 +1,26 @@ +package session + +import ( + "testing" + + "github.com/datarhei/core/v16/io/fs" + "github.com/stretchr/testify/require" +) + +func TestHistorySource(t *testing.T) { + memfs, err := fs.NewMemFilesystem(fs.MemConfig{}) + require.NoError(t, err) + + s, err := NewHistorySource(memfs, "/foobar.json") + require.NoError(t, err) + require.Nil(t, s) +} + +func TestHistorySourceDisk(t *testing.T) { + diskfs, err := fs.NewDiskFilesystem(fs.DiskConfig{}) + require.NoError(t, err) + + s, err := NewHistorySource(diskfs, "./foobar.json") + require.NoError(t, err) + require.Nil(t, s) +}