visit parent folder first

This commit is contained in:
Chris Lu 2018-05-11 02:27:57 -07:00
parent 8a1d640dc4
commit a808df5019
2 changed files with 11 additions and 9 deletions

View file

@ -39,7 +39,7 @@ func (f *Filer) CreateEntry(entry Entry) (error) {
3. add the file entry
*/
f.recursivelyEnsureDirectory(entry.Dir, func(parent, name string) error {
recursivelyEnsureDirectory(entry.Dir, func(parent, name string) error {
return nil
})
@ -66,7 +66,7 @@ func (f *Filer) UpdateEntry(entry Entry) (error) {
return f.store.UpdateEntry(entry)
}
func (f *Filer) recursivelyEnsureDirectory(fullPath string, fn func(parent, name string) error) (error) {
func recursivelyEnsureDirectory(fullPath string, fn func(parent, name string) error) (error) {
if strings.HasSuffix(fullPath, "/") {
fullPath = fullPath[0:len(fullPath)-1]
}
@ -82,11 +82,15 @@ func (f *Filer) recursivelyEnsureDirectory(fullPath string, fn func(parent, name
parentDirPath = "/"
}
if err := recursivelyEnsureDirectory(parentDirPath, fn); err != nil {
return err
}
if err := fn(parentDirPath, dirName); err != nil {
return err
}
return f.recursivelyEnsureDirectory(parentDirPath, fn)
return nil
}
func (f *Filer) cacheGetDirectory(dirpath string) (error) {

View file

@ -7,21 +7,19 @@ import (
)
func TestRecursion(t *testing.T) {
filer := NewFiler("")
fullPath := "/home/chris/some/file/abc.jpg"
expected := []string{
"/home/chris/some", "file",
"/home/chris", "some",
"/home", "chris",
"/", "home",
"/home", "chris",
"/home/chris", "some",
"/home/chris/some", "file",
}
dir, _ := filepath.Split(fullPath)
i := 0
filer.recursivelyEnsureDirectory(dir, func(parent, name string) error {
recursivelyEnsureDirectory(dir, func(parent, name string) error {
if parent != expected[i] || name != expected[i+1] {
t.Errorf("recursive directory is wrong! parent=%s dirName=%s", parent, name)
}