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

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

Issue 1258673004: cipd: Make it work on Windows. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Created 5 years, 4 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
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 "io/ioutil" 8 "io/ioutil"
9 "os" 9 "os"
10 "path/filepath" 10 "path/filepath"
11 "runtime"
11 "testing" 12 "testing"
12 13
13 . "github.com/smartystreets/goconvey/convey" 14 . "github.com/smartystreets/goconvey/convey"
14 ) 15 )
15 16
16 func TestCwdRelToAbs(t *testing.T) { 17 func TestCwdRelToAbs(t *testing.T) {
17 Convey("CwdRelToAbs works", t, func() { 18 Convey("CwdRelToAbs works", t, func() {
18 fs := tempFileSystem() 19 fs := tempFileSystem()
19 p, err := fs.CwdRelToAbs(fs.Root()) 20 p, err := fs.CwdRelToAbs(fs.Root())
20 So(err, ShouldBeNil) 21 So(err, ShouldBeNil)
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 So(err, ShouldBeNil) 66 So(err, ShouldBeNil)
66 So(p, ShouldEqual, fs.join("y/z")) 67 So(p, ShouldEqual, fs.join("y/z"))
67 So(fs.isDir("y/z"), ShouldBeTrue) 68 So(fs.isDir("y/z"), ShouldBeTrue)
68 // Same one. 69 // Same one.
69 _, err = fs.EnsureDirectory(fs.join("x/../y/z")) 70 _, err = fs.EnsureDirectory(fs.join("x/../y/z"))
70 So(err, ShouldBeNil) 71 So(err, ShouldBeNil)
71 }) 72 })
72 } 73 }
73 74
74 func TestEnsureSymlink(t *testing.T) { 75 func TestEnsureSymlink(t *testing.T) {
76 if runtime.GOOS == "windows" {
77 t.Skip("Skipping on Windows: no symlinks")
78 }
79
75 Convey("EnsureSymlink checks root", t, func() { 80 Convey("EnsureSymlink checks root", t, func() {
76 fs := tempFileSystem() 81 fs := tempFileSystem()
77 So(fs.EnsureSymlink(fs.join(".."), fs.Root()), ShouldNotBeNil) 82 So(fs.EnsureSymlink(fs.join(".."), fs.Root()), ShouldNotBeNil)
78 }) 83 })
79 84
80 » Convey("ensureSymlink creates new symlink", t, func() { 85 » Convey("EnsureSymlink creates new symlink", t, func() {
81 fs := tempFileSystem() 86 fs := tempFileSystem()
82 So(fs.EnsureSymlink(fs.join("symlink"), "target"), ShouldBeNil) 87 So(fs.EnsureSymlink(fs.join("symlink"), "target"), ShouldBeNil)
83 So(fs.readLink("symlink"), ShouldEqual, "target") 88 So(fs.readLink("symlink"), ShouldEqual, "target")
84 }) 89 })
85 90
86 » Convey("ensureSymlink builds full path", t, func() { 91 » Convey("EnsureSymlink builds full path", t, func() {
87 fs := tempFileSystem() 92 fs := tempFileSystem()
88 So(fs.EnsureSymlink(fs.join("a/b/c"), "target"), ShouldBeNil) 93 So(fs.EnsureSymlink(fs.join("a/b/c"), "target"), ShouldBeNil)
89 So(fs.readLink("a/b/c"), ShouldEqual, "target") 94 So(fs.readLink("a/b/c"), ShouldEqual, "target")
90 }) 95 })
91 96
92 » Convey("ensureSymlink replaces existing one", t, func() { 97 » Convey("EnsureSymlink replaces existing symlink", t, func() {
93 fs := tempFileSystem() 98 fs := tempFileSystem()
94 // Replace with same one, then with another one. 99 // Replace with same one, then with another one.
95 So(fs.EnsureSymlink(fs.join("symlink"), "target"), ShouldBeNil) 100 So(fs.EnsureSymlink(fs.join("symlink"), "target"), ShouldBeNil)
96 So(fs.EnsureSymlink(fs.join("symlink"), "target"), ShouldBeNil) 101 So(fs.EnsureSymlink(fs.join("symlink"), "target"), ShouldBeNil)
97 So(fs.EnsureSymlink(fs.join("symlink"), "another"), ShouldBeNil) 102 So(fs.EnsureSymlink(fs.join("symlink"), "another"), ShouldBeNil)
98 So(fs.readLink("symlink"), ShouldEqual, "another") 103 So(fs.readLink("symlink"), ShouldEqual, "another")
99 }) 104 })
105
106 Convey("EnsureSymlink replaces existing file", t, func() {
107 fs := tempFileSystem()
108 fs.write("path", "blah")
109 So(fs.EnsureSymlink(fs.join("path"), "target"), ShouldBeNil)
110 So(fs.readLink("path"), ShouldEqual, "target")
111 })
112
113 Convey("EnsureSymlink replaces existing directory", t, func() {
114 fs := tempFileSystem()
115 fs.write("a/b/c", "something")
116 So(fs.EnsureSymlink(fs.join("a"), "target"), ShouldBeNil)
117 So(fs.readLink("a"), ShouldEqual, "target")
118 })
119 }
120
121 func TestEnsureFile(t *testing.T) {
122 Convey("EnsureFile checks root", t, func() {
123 fs := tempFileSystem()
124 So(fs.EnsureFile(fs.join(".."), []byte("blah"), 0666), ShouldNot BeNil)
125 })
126
127 Convey("EnsureFile creates new file", t, func() {
128 fs := tempFileSystem()
129 So(fs.EnsureFile(fs.join("name"), []byte("blah"), 0666), ShouldB eNil)
130 So(fs.read("name"), ShouldEqual, "blah")
131 })
132
133 Convey("EnsureFile builds full path", t, func() {
134 fs := tempFileSystem()
135 So(fs.EnsureFile(fs.join("a/b/c"), []byte("blah"), 0666), Should BeNil)
136 So(fs.read("a/b/c"), ShouldEqual, "blah")
137 })
138
139 if runtime.GOOS != "windows" {
140 Convey("EnsureFile replaces existing symlink", t, func() {
141 fs := tempFileSystem()
142 So(fs.EnsureSymlink(fs.join("path"), "target"), ShouldBe Nil)
143 So(fs.EnsureFile(fs.join("path"), []byte("blah"), 0666), ShouldBeNil)
144 So(fs.read("path"), ShouldEqual, "blah")
145 })
146 }
147
148 Convey("EnsureFile replaces existing file", t, func() {
149 fs := tempFileSystem()
150 So(fs.EnsureFile(fs.join("path"), []byte("huh"), 0666), ShouldBe Nil)
151 So(fs.EnsureFile(fs.join("path"), []byte("blah"), 0666), ShouldB eNil)
152 So(fs.read("path"), ShouldEqual, "blah")
153 })
154
155 Convey("EnsureFile replaces existing directory", t, func() {
156 fs := tempFileSystem()
157 fs.write("a/b/c", "something")
158 So(fs.EnsureFile(fs.join("a"), []byte("blah"), 0666), ShouldBeNi l)
159 So(fs.read("a"), ShouldEqual, "blah")
160 })
100 } 161 }
101 162
102 func TestEnsureFileGone(t *testing.T) { 163 func TestEnsureFileGone(t *testing.T) {
103 Convey("EnsureFileGone checks root", t, func() { 164 Convey("EnsureFileGone checks root", t, func() {
104 fs := tempFileSystem() 165 fs := tempFileSystem()
105 So(fs.EnsureFileGone(fs.join("../abc")), ShouldNotBeNil) 166 So(fs.EnsureFileGone(fs.join("../abc")), ShouldNotBeNil)
106 }) 167 })
107 168
108 Convey("EnsureFileGone works", t, func() { 169 Convey("EnsureFileGone works", t, func() {
109 fs := tempFileSystem() 170 fs := tempFileSystem()
110 fs.write("abc", "") 171 fs.write("abc", "")
111 So(fs.EnsureFileGone(fs.join("abc")), ShouldBeNil) 172 So(fs.EnsureFileGone(fs.join("abc")), ShouldBeNil)
112 So(fs.isMissing("abc"), ShouldBeTrue) 173 So(fs.isMissing("abc"), ShouldBeTrue)
113 }) 174 })
114 175
115 Convey("EnsureFileGone works with missing file", t, func() { 176 Convey("EnsureFileGone works with missing file", t, func() {
116 fs := tempFileSystem() 177 fs := tempFileSystem()
117 So(fs.EnsureFileGone(fs.join("abc")), ShouldBeNil) 178 So(fs.EnsureFileGone(fs.join("abc")), ShouldBeNil)
118 }) 179 })
119 180
120 » Convey("EnsureFileGone works with symlink", t, func() { 181 » if runtime.GOOS != "windows" {
121 » » fs := tempFileSystem() 182 » » Convey("EnsureFileGone works with symlink", t, func() {
122 » » So(fs.EnsureSymlink(fs.join("abc"), "target"), ShouldBeNil) 183 » » » fs := tempFileSystem()
123 » » So(fs.EnsureFileGone(fs.join("abc")), ShouldBeNil) 184 » » » So(fs.EnsureSymlink(fs.join("abc"), "target"), ShouldBeN il)
124 » » So(fs.isMissing("abc"), ShouldBeTrue) 185 » » » So(fs.EnsureFileGone(fs.join("abc")), ShouldBeNil)
125 » }) 186 » » » So(fs.isMissing("abc"), ShouldBeTrue)
187 » » })
188 » }
126 } 189 }
127 190
128 func TestEnsureDirectoryGone(t *testing.T) { 191 func TestEnsureDirectoryGone(t *testing.T) {
129 Convey("EnsureDirectoryGone checks root", t, func() { 192 Convey("EnsureDirectoryGone checks root", t, func() {
130 fs := tempFileSystem() 193 fs := tempFileSystem()
131 So(fs.EnsureDirectoryGone(fs.join("../abc")), ShouldNotBeNil) 194 So(fs.EnsureDirectoryGone(fs.join("../abc")), ShouldNotBeNil)
132 }) 195 })
133 196
134 Convey("EnsureDirectoryGone works", t, func() { 197 Convey("EnsureDirectoryGone works", t, func() {
135 fs := tempFileSystem() 198 fs := tempFileSystem()
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 356
294 // isFile returns true if a file at a given slash separated path relative to 357 // isFile returns true if a file at a given slash separated path relative to
295 // Root() is a file (not a directory). 358 // Root() is a file (not a directory).
296 func (f *tempFileSystemImpl) isFile(rel string) bool { 359 func (f *tempFileSystemImpl) isFile(rel string) bool {
297 stat, err := os.Stat(f.join(rel)) 360 stat, err := os.Stat(f.join(rel))
298 if err != nil { 361 if err != nil {
299 return false 362 return false
300 } 363 }
301 return !stat.IsDir() 364 return !stat.IsDir()
302 } 365 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698