diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-10-22 17:47:23 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-10-22 21:46:14 +0300 |
commit | 9f74dc2a52b6f568b5a060b7a4be47196804b01f (patch) | |
tree | c0f3ddff1103d7244a02f14ba9b862cf5593dced /hugofs | |
parent | d1661b823af25c50d3bbe5366ea40a3cdd52e237 (diff) |
hugolib: Improve errors in /data handlling
See #5324
Diffstat (limited to 'hugofs')
-rw-r--r-- | hugofs/rootmapping_fs.go | 14 | ||||
-rw-r--r-- | hugofs/rootmapping_fs_test.go | 1 |
2 files changed, 13 insertions, 2 deletions
diff --git a/hugofs/rootmapping_fs.go b/hugofs/rootmapping_fs.go index 176edaa07..2b8b8d2c0 100644 --- a/hugofs/rootmapping_fs.go +++ b/hugofs/rootmapping_fs.go @@ -101,7 +101,14 @@ func (fs *RootMappingFs) Stat(name string) (os.FileInfo, error) { return newRootMappingDirFileInfo(name), nil } realName := fs.realName(name) - return fs.Fs.Stat(realName) + + fi, err := fs.Fs.Stat(realName) + if rfi, ok := fi.(RealFilenameInfo); ok { + return rfi, err + } + + return &realFilenameInfo{FileInfo: fi, realFilename: realName}, err + } func (fs *RootMappingFs) isRoot(name string) bool { @@ -126,12 +133,15 @@ func (fs *RootMappingFs) Open(name string) (afero.File, error) { // It attempts to use Lstat if supported or defers to the os. In addition to // the FileInfo, a boolean is returned telling whether Lstat was called. func (fs *RootMappingFs) LstatIfPossible(name string) (os.FileInfo, bool, error) { + if fs.isRoot(name) { return newRootMappingDirFileInfo(name), false, nil } name = fs.realName(name) + if ls, ok := fs.Fs.(afero.Lstater); ok { - return ls.LstatIfPossible(name) + fi, b, err := ls.LstatIfPossible(name) + return &realFilenameInfo{FileInfo: fi, realFilename: name}, b, err } fi, err := fs.Stat(name) return fi, false, err diff --git a/hugofs/rootmapping_fs_test.go b/hugofs/rootmapping_fs_test.go index a84f41151..d76e00d2e 100644 --- a/hugofs/rootmapping_fs_test.go +++ b/hugofs/rootmapping_fs_test.go @@ -50,6 +50,7 @@ func TestRootMappingFsDirnames(t *testing.T) { fif, err := rfs.Stat(filepath.Join("cf2", testfile)) assert.NoError(err) assert.Equal("myfile.txt", fif.Name()) + assert.Equal("f2t/myfile.txt", fif.(RealFilenameInfo).RealFilename()) root, err := rfs.Open(filepathSeparator) assert.NoError(err) |