Improve memory medium metadata
This commit is contained in:
parent
3c8c16320a
commit
3efb43aaf7
2 changed files with 18 additions and 4 deletions
13
io.go
13
io.go
|
|
@ -374,6 +374,7 @@ func (medium *MemoryMedium) Open(path string) (fs.File, error) {
|
|||
name: core.PathBase(path),
|
||||
content: []byte(content),
|
||||
mode: medium.fileMode(path),
|
||||
modTime: medium.modificationTime(path),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
|
@ -410,10 +411,11 @@ type MemoryFile struct {
|
|||
content []byte
|
||||
offset int64
|
||||
mode fs.FileMode
|
||||
modTime time.Time
|
||||
}
|
||||
|
||||
func (file *MemoryFile) Stat() (fs.FileInfo, error) {
|
||||
return NewFileInfo(file.name, int64(len(file.content)), file.mode, time.Time{}, false), nil
|
||||
return NewFileInfo(file.name, int64(len(file.content)), file.mode, file.modTime, false), nil
|
||||
}
|
||||
|
||||
func (file *MemoryFile) Read(buffer []byte) (int, error) {
|
||||
|
|
@ -457,6 +459,13 @@ func (medium *MemoryMedium) fileMode(path string) fs.FileMode {
|
|||
return 0644
|
||||
}
|
||||
|
||||
func (medium *MemoryMedium) modificationTime(path string) time.Time {
|
||||
if modTime, ok := medium.modificationTimes[path]; ok {
|
||||
return modTime
|
||||
}
|
||||
return time.Time{}
|
||||
}
|
||||
|
||||
func (medium *MemoryMedium) List(path string) ([]fs.DirEntry, error) {
|
||||
if _, ok := medium.directories[path]; !ok {
|
||||
hasChildren := false
|
||||
|
|
@ -518,7 +527,7 @@ func (medium *MemoryMedium) List(path string) ([]fs.DirEntry, error) {
|
|||
rest,
|
||||
false,
|
||||
medium.fileMode(filePath),
|
||||
NewFileInfo(rest, int64(len(content)), medium.fileMode(filePath), time.Time{}, false),
|
||||
NewFileInfo(rest, int64(len(content)), medium.fileMode(filePath), medium.modificationTime(filePath), false),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -234,6 +234,9 @@ func TestMemoryMedium_StreamAndFSHelpers_Good(t *testing.T) {
|
|||
require.NoError(t, memoryMedium.EnsureDir("dir"))
|
||||
require.NoError(t, memoryMedium.Write("dir/file.txt", "alpha"))
|
||||
|
||||
statInfo, err := memoryMedium.Stat("dir/file.txt")
|
||||
require.NoError(t, err)
|
||||
|
||||
file, err := memoryMedium.Open("dir/file.txt")
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -242,7 +245,7 @@ func TestMemoryMedium_StreamAndFSHelpers_Good(t *testing.T) {
|
|||
assert.Equal(t, "file.txt", info.Name())
|
||||
assert.Equal(t, int64(5), info.Size())
|
||||
assert.Equal(t, fs.FileMode(0644), info.Mode())
|
||||
assert.True(t, info.ModTime().IsZero())
|
||||
assert.Equal(t, statInfo.ModTime(), info.ModTime())
|
||||
assert.False(t, info.IsDir())
|
||||
assert.Nil(t, info.Sys())
|
||||
|
||||
|
|
@ -263,6 +266,7 @@ func TestMemoryMedium_StreamAndFSHelpers_Good(t *testing.T) {
|
|||
assert.Equal(t, "file.txt", entryInfo.Name())
|
||||
assert.Equal(t, int64(5), entryInfo.Size())
|
||||
assert.Equal(t, fs.FileMode(0644), entryInfo.Mode())
|
||||
assert.Equal(t, statInfo.ModTime(), entryInfo.ModTime())
|
||||
|
||||
writer, err := memoryMedium.Create("created.txt")
|
||||
require.NoError(t, err)
|
||||
|
|
@ -290,9 +294,10 @@ func TestMemoryMedium_StreamAndFSHelpers_Good(t *testing.T) {
|
|||
require.NoError(t, writeStream.Close())
|
||||
|
||||
assert.Equal(t, "stream output", memoryMedium.fileContents["streamed.txt"])
|
||||
statInfo, err := memoryMedium.Stat("streamed.txt")
|
||||
statInfo, err = memoryMedium.Stat("streamed.txt")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, fs.FileMode(0644), statInfo.Mode())
|
||||
assert.False(t, statInfo.ModTime().IsZero())
|
||||
}
|
||||
|
||||
func TestIO_Read_Good(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue