Codebase list golang-github-spf13-afero / 58a0671
New upstream version 1.2.0 Anthony Fok 5 years ago
4 changed file(s) with 42 addition(s) and 15 deletion(s). Raw diff Collapse all Expand all
266266 return u.layer.MkdirAll(name, perm)
267267 }
268268 if dir {
269 return syscall.EEXIST
269 return ErrFileExists
270270 }
271271 return u.layer.MkdirAll(name, perm)
272272 }
281281 return u.layer.MkdirAll(name, perm)
282282 }
283283 if dir {
284 return syscall.EEXIST
284 // This is in line with how os.MkdirAll behaves.
285 return nil
285286 }
286287 return u.layer.MkdirAll(name, perm)
287288 }
00 package afero
11
2 import "testing"
2 import (
3 "os"
4 "path/filepath"
5 "testing"
6 )
37
48 func TestCopyOnWrite(t *testing.T) {
5 var fs Fs
6 var err error
7 base := NewOsFs()
8 roBase := NewReadOnlyFs(base)
9 ufs := NewCopyOnWriteFs(roBase, NewMemMapFs())
9 osFs := NewOsFs()
10 writeDir, err := TempDir(osFs, "", "copy-on-write-test")
11 if err != nil {
12 t.Fatal("error creating tempDir", err)
13 }
14 defer osFs.RemoveAll(writeDir)
1015
11 fs = ufs
12 err = fs.MkdirAll("nonexistent/directory/", 0744)
16 compositeFs := NewCopyOnWriteFs(NewReadOnlyFs(NewOsFs()), osFs)
17
18 var dir = filepath.Join(writeDir, "some/path")
19
20 err = compositeFs.MkdirAll(dir, 0744)
1321 if err != nil {
14 t.Error(err)
15 return
22 t.Fatal(err)
1623 }
17 _, err = fs.Create("nonexistent/directory/newfile")
24 _, err = compositeFs.Create(filepath.Join(dir, "newfile"))
1825 if err != nil {
19 t.Error(err)
20 return
26 t.Fatal(err)
2127 }
2228
29 // https://github.com/spf13/afero/issues/189
30 // We want the composite file system to behave like the OS file system
31 // on Mkdir and MkdirAll
32 for _, fs := range []Fs{osFs, compositeFs} {
33 err = fs.Mkdir(dir, 0744)
34 if err == nil || !os.IsExist(err) {
35 t.Errorf("Mkdir: Got %q for %T", err, fs)
36 }
37
38 // MkdirAll does not return an error when the directory already exists
39 err = fs.MkdirAll(dir, 0744)
40 if err != nil {
41 t.Errorf("MkdirAll: Got %q for %T", err, fs)
42 }
43
44 }
2345 }
2446
2547 func TestCopyOnWriteFileInMemMapBase(t *testing.T) {
00 module github.com/spf13/afero
1
2 require golang.org/x/text v0.3.0
0 golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
1 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=