Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Side by Side Diff: go/src/infra/tools/cipd/local/deployer_test.go

Issue 1154423015: cipd: Extract high level file system operations into the separate interface. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « go/src/infra/tools/cipd/local/deployer.go ('k') | go/src/infra/tools/cipd/local/files.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package local 5 package local
6 6
7 import ( 7 import (
8 "bytes" 8 "bytes"
9 "fmt" 9 "fmt"
10 "io" 10 "io"
(...skipping 16 matching lines...) Expand all
27 // Wrappers that accept paths relative to tempDir. 27 // Wrappers that accept paths relative to tempDir.
28 touch := func(rel string) { 28 touch := func(rel string) {
29 abs := filepath.Join(tempDir, filepath.FromSlash(rel)) 29 abs := filepath.Join(tempDir, filepath.FromSlash(rel))
30 err := os.MkdirAll(filepath.Dir(abs), 0777) 30 err := os.MkdirAll(filepath.Dir(abs), 0777)
31 So(err, ShouldBeNil) 31 So(err, ShouldBeNil)
32 f, err := os.Create(abs) 32 f, err := os.Create(abs)
33 So(err, ShouldBeNil) 33 So(err, ShouldBeNil)
34 f.Close() 34 f.Close()
35 } 35 }
36 ensureLink := func(symlinkRel string, target string) error { 36 ensureLink := func(symlinkRel string, target string) error {
37 » » » return ensureSymlink(filepath.Join(tempDir, symlinkRel), target) 37 » » » return os.Symlink(target, filepath.Join(tempDir, symlink Rel))
38 } 38 }
39 readLink := func(symlinkRel string) string {
40 val, err := os.Readlink(filepath.Join(tempDir, symlinkRe l))
41 So(err, ShouldBeNil)
42 return val
43 }
44
45 Convey("ensureSymlink creates new symlink", func() {
46 So(ensureLink("symlink", "target"), ShouldBeNil)
47 So(readLink("symlink"), ShouldEqual, "target")
48 })
49
50 Convey("ensureSymlink builds full path", func() {
51 So(ensureLink(filepath.Join("a", "b", "c"), "target"), S houldBeNil)
52 So(readLink(filepath.Join("a", "b", "c")), ShouldEqual, "target")
53 })
54
55 Convey("ensureSymlink replaces existing one", func() {
56 So(ensureLink("symlink", "target"), ShouldBeNil)
57 So(ensureLink("symlink", "another"), ShouldBeNil)
58 So(readLink("symlink"), ShouldEqual, "another")
59 })
60 39
61 Convey("scanPackageDir works with empty dir", func() { 40 Convey("scanPackageDir works with empty dir", func() {
62 err := os.Mkdir(filepath.Join(tempDir, "dir"), 0777) 41 err := os.Mkdir(filepath.Join(tempDir, "dir"), 0777)
63 So(err, ShouldBeNil) 42 So(err, ShouldBeNil)
64 files := makeStringSet() 43 files := makeStringSet()
65 err = scanPackageDir(filepath.Join(tempDir, "dir"), file s) 44 err = scanPackageDir(filepath.Join(tempDir, "dir"), file s)
66 So(err, ShouldBeNil) 45 So(err, ShouldBeNil)
67 So(len(files), ShouldEqual, 0) 46 So(len(files), ShouldEqual, 0)
68 }) 47 })
69 48
(...skipping 13 matching lines...) Expand all
83 names = append(names, filepath.ToSlash(n)) 62 names = append(names, filepath.ToSlash(n))
84 } 63 }
85 names.Sort() 64 names.Sort()
86 So(names, ShouldResemble, sort.StringSlice{ 65 So(names, ShouldResemble, sort.StringSlice{
87 "a/1", 66 "a/1",
88 "a/2", 67 "a/2",
89 "a/sym_link", 68 "a/sym_link",
90 "b/1", 69 "b/1",
91 }) 70 })
92 }) 71 })
93
94 Convey("ensureDirectoryGone works with missing dir", func() {
95 So(ensureDirectoryGone(filepath.Join(tempDir, "missing") , nil), ShouldBeNil)
96 })
97
98 Convey("ensureDirectoryGone works", func() {
99 touch("dir/a/1")
100 touch("dir/a/2")
101 touch("dir/b/1")
102 So(ensureDirectoryGone(filepath.Join(tempDir, "dir"), ni l), ShouldBeNil)
103 _, err := os.Stat(filepath.Join(tempDir, "dir"))
104 So(os.IsNotExist(err), ShouldBeTrue)
105 })
106
107 Convey("ensureFileGone works", func() {
108 touch("abc")
109 So(ensureFileGone(filepath.Join(tempDir, "abc"), nil), S houldBeNil)
110 _, err := os.Stat(filepath.Join(tempDir, "abc"))
111 So(os.IsNotExist(err), ShouldBeTrue)
112 })
113
114 Convey("ensureFileGone works with missing file", func() {
115 So(ensureFileGone(filepath.Join(tempDir, "abc"), nil), S houldBeNil)
116 })
117
118 Convey("ensureFileGone works with symlink", func() {
119 ensureLink("abc", "target")
120 So(ensureFileGone(filepath.Join(tempDir, "abc"), nil), S houldBeNil)
121 _, err := os.Stat(filepath.Join(tempDir, "abc"))
122 So(os.IsNotExist(err), ShouldBeTrue)
123 })
124 }) 72 })
125 } 73 }
126 74
127 func TestDeployInstance(t *testing.T) { 75 func TestDeployInstance(t *testing.T) {
128 Convey("Given a temp directory", t, func() { 76 Convey("Given a temp directory", t, func() {
129 tempDir, err := ioutil.TempDir("", "cipd_test") 77 tempDir, err := ioutil.TempDir("", "cipd_test")
130 So(err, ShouldBeNil) 78 So(err, ShouldBeNil)
131 Reset(func() { os.RemoveAll(tempDir) }) 79 Reset(func() { os.RemoveAll(tempDir) })
132 80
133 Convey("DeployInstance new empty package instance", func() { 81 Convey("DeployInstance new empty package instance", func() {
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 } 397 }
450 398
451 out = append(out, item+suffix) 399 out = append(out, item+suffix)
452 return nil 400 return nil
453 }) 401 })
454 if err != nil { 402 if err != nil {
455 panic("Failed to walk a directory") 403 panic("Failed to walk a directory")
456 } 404 }
457 return 405 return
458 } 406 }
OLDNEW
« no previous file with comments | « go/src/infra/tools/cipd/local/deployer.go ('k') | go/src/infra/tools/cipd/local/files.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698