mirror of https://github.com/spf13/afero.git
Merge pull request #135 from rodaine/cacheOnRead-NotExistsError
CacheOnReadFS: erroneous NotExists error from MemMapFS layer
This commit is contained in:
commit
8a6ade7159
|
@ -64,15 +64,10 @@ func (u *CacheOnReadFs) cacheStatus(name string) (state cacheState, fi os.FileIn
|
||||||
return cacheHit, lfi, nil
|
return cacheHit, lfi, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if err == syscall.ENOENT {
|
if err == syscall.ENOENT || os.IsNotExist(err) {
|
||||||
return cacheMiss, nil, nil
|
return cacheMiss, nil, nil
|
||||||
}
|
}
|
||||||
var ok bool
|
|
||||||
if err, ok = err.(*os.PathError); ok {
|
|
||||||
if err == os.ErrNotExist {
|
|
||||||
return cacheMiss, nil, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return cacheMiss, nil, err
|
return cacheMiss, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package afero
|
package afero
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
@ -366,3 +367,38 @@ func TestUnionCacheExpire(t *testing.T) {
|
||||||
t.Errorf("cache time failed: <%s>", data)
|
t.Errorf("cache time failed: <%s>", data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCacheOnReadFs_Open_NotInLayer(t *testing.T) {
|
||||||
|
base := NewMemMapFs()
|
||||||
|
layer := NewMemMapFs()
|
||||||
|
fs := NewCacheOnReadFs(base, layer, 0)
|
||||||
|
|
||||||
|
fh, err := base.Create("/file.txt")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("unable to create file: ", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
txt := []byte("This is a test")
|
||||||
|
fh.Write(txt)
|
||||||
|
fh.Close()
|
||||||
|
|
||||||
|
fh, err = fs.Open("/file.txt")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("could not open file: ", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := ReadAll(fh)
|
||||||
|
fh.Close()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("could not read file: ", err)
|
||||||
|
} else if !bytes.Equal(txt, b) {
|
||||||
|
t.Fatalf("wanted file text %q, got %q", txt, b)
|
||||||
|
}
|
||||||
|
|
||||||
|
fh, err = layer.Open("/file.txt")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("could not open file from layer: ", err)
|
||||||
|
}
|
||||||
|
fh.Close()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue