diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/fileInfo.go | 5 | ||||
-rw-r--r-- | source/fileInfo_test.go | 22 |
2 files changed, 26 insertions, 1 deletions
diff --git a/source/fileInfo.go b/source/fileInfo.go index e4b4a80fb..a20ba27e5 100644 --- a/source/fileInfo.go +++ b/source/fileInfo.go @@ -162,9 +162,12 @@ func (fi *FileInfo) init() { } func (sp *SourceSpec) NewFileInfo(baseDir, filename string, fi os.FileInfo) *FileInfo { + dir, name := filepath.Split(filename) + if !strings.HasSuffix(dir, helpers.FilePathSeparator) { + dir = dir + helpers.FilePathSeparator + } - dir = strings.TrimSuffix(dir, helpers.FilePathSeparator) baseDir = strings.TrimSuffix(baseDir, helpers.FilePathSeparator) relDir := "" diff --git a/source/fileInfo_test.go b/source/fileInfo_test.go index 3f99497ad..1d7c86ec2 100644 --- a/source/fileInfo_test.go +++ b/source/fileInfo_test.go @@ -14,9 +14,31 @@ package source import ( + "path/filepath" "testing" + + "github.com/stretchr/testify/require" ) func TestFileInfo(t *testing.T) { + assert := require.New(t) + + s := newTestSourceSpec() + + for _, this := range []struct { + base string + filename string + assert func(f *FileInfo) + }{ + {"/a/", filepath.FromSlash("/a/b/page.md"), func(f *FileInfo) { + assert.Equal(filepath.FromSlash("/a/b/page.md"), f.Filename()) + assert.Equal(filepath.FromSlash("b/"), f.Dir()) + assert.Equal(filepath.FromSlash("b/page.md"), f.Path()) + + }}, + } { + f := s.NewFileInfo(this.base, this.filename, nil) + this.assert(f) + } } |