mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -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
|
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)
|
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