summaryrefslogtreecommitdiffstats
path: root/hugofs
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-10-22 16:47:23 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-10-22 20:46:14 +0200
commit9f74dc2a52b6f568b5a060b7a4be47196804b01f (patch)
treec0f3ddff1103d7244a02f14ba9b862cf5593dced /hugofs
parentd1661b823af25c50d3bbe5366ea40a3cdd52e237 (diff)
hugolib: Improve errors in /data handlling
See #5324
Diffstat (limited to 'hugofs')
-rw-r--r--hugofs/rootmapping_fs.go14
-rw-r--r--hugofs/rootmapping_fs_test.go1
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)