mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
ecf025f006
commit
e55466ce70
2 changed files with 41 additions and 0 deletions
|
@ -144,3 +144,15 @@ func (ns *Namespace) Join(elements ...interface{}) (string, error) {
|
|||
}
|
||||
return _path.Join(pathElements...), nil
|
||||
}
|
||||
|
||||
// Clean replaces the separators used with standard slashes and then
|
||||
// extraneous slashes are removed.
|
||||
func (ns *Namespace) Clean(path interface{}) (string, error) {
|
||||
spath, err := cast.ToStringE(path)
|
||||
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
spath = filepath.ToSlash(spath)
|
||||
return _path.Clean(spath), nil
|
||||
}
|
||||
|
|
|
@ -175,3 +175,32 @@ func TestSplit(t *testing.T) {
|
|||
c.Assert(result, qt.Equals, test.expect)
|
||||
}
|
||||
}
|
||||
|
||||
func TestClean(t *testing.T) {
|
||||
t.Parallel()
|
||||
c := qt.New(t)
|
||||
|
||||
for _, test := range []struct {
|
||||
path interface{}
|
||||
expect interface{}
|
||||
}{
|
||||
{filepath.FromSlash(`foo/bar.txt`), `foo/bar.txt`},
|
||||
{filepath.FromSlash(`foo/bar/txt`), `foo/bar/txt`},
|
||||
{filepath.FromSlash(`foo/bar`), `foo/bar`},
|
||||
{filepath.FromSlash(`foo/bar.t`), `foo/bar.t`},
|
||||
{``, `.`},
|
||||
// errors
|
||||
{tstNoStringer{}, false},
|
||||
} {
|
||||
|
||||
result, err := ns.Clean(test.path)
|
||||
|
||||
if b, ok := test.expect.(bool); ok && !b {
|
||||
c.Assert(err, qt.Not(qt.IsNil))
|
||||
continue
|
||||
}
|
||||
|
||||
c.Assert(err, qt.IsNil)
|
||||
c.Assert(result, qt.Equals, test.expect)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue