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

Side by Side Diff: sdk/lib/_internal/pub_generated/test/io_test.dart

Issue 657673002: Regenerate pub sources. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
1 library io_test; 5 library io_test;
6
2 import 'dart:async'; 7 import 'dart:async';
3 import 'dart:io'; 8 import 'dart:io';
9
4 import 'package:path/path.dart' as path; 10 import 'package:path/path.dart' as path;
5 import 'package:unittest/unittest.dart'; 11 import 'package:unittest/unittest.dart';
12
6 import '../lib/src/io.dart'; 13 import '../lib/src/io.dart';
7 import 'test_pub.dart'; 14 import 'test_pub.dart';
15
8 main() { 16 main() {
9 initConfig(); 17 initConfig();
18
10 group('listDir', () { 19 group('listDir', () {
11 test('ignores hidden files by default', () { 20 test('ignores hidden files by default', () {
12 expect(withTempDir((temp) { 21 expect(withTempDir((temp) {
13 writeTextFile(path.join(temp, 'file1.txt'), ''); 22 writeTextFile(path.join(temp, 'file1.txt'), '');
14 writeTextFile(path.join(temp, 'file2.txt'), ''); 23 writeTextFile(path.join(temp, 'file2.txt'), '');
15 writeTextFile(path.join(temp, '.file3.txt'), ''); 24 writeTextFile(path.join(temp, '.file3.txt'), '');
16 createDir(path.join(temp, '.subdir')); 25 createDir(path.join(temp, '.subdir'));
17 writeTextFile(path.join(temp, '.subdir', 'file3.txt'), ''); 26 writeTextFile(path.join(temp, '.subdir', 'file3.txt'), '');
27
18 expect( 28 expect(
19 listDir(temp, recursive: true), 29 listDir(temp, recursive: true),
20 unorderedEquals([path.join(temp, 'file1.txt'), path.join(temp, 'file 2.txt')])); 30 unorderedEquals([path.join(temp, 'file1.txt'), path.join(temp, 'file 2.txt')]));
21 }), completes); 31 }), completes);
22 }); 32 });
33
23 test('includes hidden files when told to', () { 34 test('includes hidden files when told to', () {
24 expect(withTempDir((temp) { 35 expect(withTempDir((temp) {
25 writeTextFile(path.join(temp, 'file1.txt'), ''); 36 writeTextFile(path.join(temp, 'file1.txt'), '');
26 writeTextFile(path.join(temp, 'file2.txt'), ''); 37 writeTextFile(path.join(temp, 'file2.txt'), '');
27 writeTextFile(path.join(temp, '.file3.txt'), ''); 38 writeTextFile(path.join(temp, '.file3.txt'), '');
28 createDir(path.join(temp, '.subdir')); 39 createDir(path.join(temp, '.subdir'));
29 writeTextFile(path.join(temp, '.subdir', 'file3.txt'), ''); 40 writeTextFile(path.join(temp, '.subdir', 'file3.txt'), '');
41
30 expect( 42 expect(
31 listDir(temp, recursive: true, includeHidden: true), 43 listDir(temp, recursive: true, includeHidden: true),
32 unorderedEquals( 44 unorderedEquals(
33 [ 45 [
34 path.join(temp, 'file1.txt'), 46 path.join(temp, 'file1.txt'),
35 path.join(temp, 'file2.txt'), 47 path.join(temp, 'file2.txt'),
36 path.join(temp, '.file3.txt'), 48 path.join(temp, '.file3.txt'),
37 path.join(temp, '.subdir'), 49 path.join(temp, '.subdir'),
38 path.join(temp, '.subdir', 'file3.txt')])); 50 path.join(temp, '.subdir', 'file3.txt')]));
39 }), completes); 51 }), completes);
40 }); 52 });
53
41 test("doesn't ignore hidden files above the directory being listed", () { 54 test("doesn't ignore hidden files above the directory being listed", () {
42 expect(withTempDir((temp) { 55 expect(withTempDir((temp) {
43 var dir = path.join(temp, '.foo', 'bar'); 56 var dir = path.join(temp, '.foo', 'bar');
44 ensureDir(dir); 57 ensureDir(dir);
45 writeTextFile(path.join(dir, 'file1.txt'), ''); 58 writeTextFile(path.join(dir, 'file1.txt'), '');
46 writeTextFile(path.join(dir, 'file2.txt'), ''); 59 writeTextFile(path.join(dir, 'file2.txt'), '');
47 writeTextFile(path.join(dir, 'file3.txt'), ''); 60 writeTextFile(path.join(dir, 'file3.txt'), '');
61
48 expect( 62 expect(
49 listDir(dir, recursive: true), 63 listDir(dir, recursive: true),
50 unorderedEquals( 64 unorderedEquals(
51 [ 65 [
52 path.join(dir, 'file1.txt'), 66 path.join(dir, 'file1.txt'),
53 path.join(dir, 'file2.txt'), 67 path.join(dir, 'file2.txt'),
54 path.join(dir, 'file3.txt')])); 68 path.join(dir, 'file3.txt')]));
55 }), completes); 69 }), completes);
56 }); 70 });
57 }); 71 });
72
58 group('canonicalize', () { 73 group('canonicalize', () {
59 test('resolves a non-link', () { 74 test('resolves a non-link', () {
60 expect(withCanonicalTempDir((temp) { 75 expect(withCanonicalTempDir((temp) {
61 var filePath = path.join(temp, 'file'); 76 var filePath = path.join(temp, 'file');
62 writeTextFile(filePath, ''); 77 writeTextFile(filePath, '');
63 expect(canonicalize(filePath), equals(filePath)); 78 expect(canonicalize(filePath), equals(filePath));
64 }), completes); 79 }), completes);
65 }); 80 });
81
66 test('resolves a non-existent file', () { 82 test('resolves a non-existent file', () {
67 expect(withCanonicalTempDir((temp) { 83 expect(withCanonicalTempDir((temp) {
68 expect( 84 expect(
69 canonicalize(path.join(temp, 'nothing')), 85 canonicalize(path.join(temp, 'nothing')),
70 equals(path.join(temp, 'nothing'))); 86 equals(path.join(temp, 'nothing')));
71 }), completes); 87 }), completes);
72 }); 88 });
89
73 test('resolves a symlink', () { 90 test('resolves a symlink', () {
74 expect(withCanonicalTempDir((temp) { 91 expect(withCanonicalTempDir((temp) {
75 createDir(path.join(temp, 'linked-dir')); 92 createDir(path.join(temp, 'linked-dir'));
76 createSymlink(path.join(temp, 'linked-dir'), path.join(temp, 'dir')); 93 createSymlink(path.join(temp, 'linked-dir'), path.join(temp, 'dir'));
77 expect( 94 expect(
78 canonicalize(path.join(temp, 'dir')), 95 canonicalize(path.join(temp, 'dir')),
79 equals(path.join(temp, 'linked-dir'))); 96 equals(path.join(temp, 'linked-dir')));
80 }), completes); 97 }), completes);
81 }); 98 });
99
82 test('resolves a relative symlink', () { 100 test('resolves a relative symlink', () {
83 expect(withCanonicalTempDir((temp) { 101 expect(withCanonicalTempDir((temp) {
84 createDir(path.join(temp, 'linked-dir')); 102 createDir(path.join(temp, 'linked-dir'));
85 createSymlink( 103 createSymlink(
86 path.join(temp, 'linked-dir'), 104 path.join(temp, 'linked-dir'),
87 path.join(temp, 'dir'), 105 path.join(temp, 'dir'),
88 relative: true); 106 relative: true);
89 expect( 107 expect(
90 canonicalize(path.join(temp, 'dir')), 108 canonicalize(path.join(temp, 'dir')),
91 equals(path.join(temp, 'linked-dir'))); 109 equals(path.join(temp, 'linked-dir')));
92 }), completes); 110 }), completes);
93 }); 111 });
112
94 test('resolves a single-level horizontally recursive symlink', () { 113 test('resolves a single-level horizontally recursive symlink', () {
95 expect(withCanonicalTempDir((temp) { 114 expect(withCanonicalTempDir((temp) {
96 var linkPath = path.join(temp, 'foo'); 115 var linkPath = path.join(temp, 'foo');
97 createSymlink(linkPath, linkPath); 116 createSymlink(linkPath, linkPath);
98 expect(canonicalize(linkPath), equals(linkPath)); 117 expect(canonicalize(linkPath), equals(linkPath));
99 }), completes); 118 }), completes);
100 }); 119 });
120
101 test('resolves a multi-level horizontally recursive symlink', () { 121 test('resolves a multi-level horizontally recursive symlink', () {
102 expect(withCanonicalTempDir((temp) { 122 expect(withCanonicalTempDir((temp) {
103 var fooPath = path.join(temp, 'foo'); 123 var fooPath = path.join(temp, 'foo');
104 var barPath = path.join(temp, 'bar'); 124 var barPath = path.join(temp, 'bar');
105 var bazPath = path.join(temp, 'baz'); 125 var bazPath = path.join(temp, 'baz');
106 createSymlink(barPath, fooPath); 126 createSymlink(barPath, fooPath);
107 createSymlink(bazPath, barPath); 127 createSymlink(bazPath, barPath);
108 createSymlink(fooPath, bazPath); 128 createSymlink(fooPath, bazPath);
109 expect(canonicalize(fooPath), equals(fooPath)); 129 expect(canonicalize(fooPath), equals(fooPath));
110 expect(canonicalize(barPath), equals(barPath)); 130 expect(canonicalize(barPath), equals(barPath));
111 expect(canonicalize(bazPath), equals(bazPath)); 131 expect(canonicalize(bazPath), equals(bazPath));
132
112 createSymlink(fooPath, path.join(temp, 'outer')); 133 createSymlink(fooPath, path.join(temp, 'outer'));
113 expect(canonicalize(path.join(temp, 'outer')), equals(fooPath)); 134 expect(canonicalize(path.join(temp, 'outer')), equals(fooPath));
114 }), completes); 135 }), completes);
115 }); 136 });
137
116 test('resolves a broken symlink', () { 138 test('resolves a broken symlink', () {
117 expect(withCanonicalTempDir((temp) { 139 expect(withCanonicalTempDir((temp) {
118 createSymlink(path.join(temp, 'nonexistent'), path.join(temp, 'foo')); 140 createSymlink(path.join(temp, 'nonexistent'), path.join(temp, 'foo'));
119 expect( 141 expect(
120 canonicalize(path.join(temp, 'foo')), 142 canonicalize(path.join(temp, 'foo')),
121 equals(path.join(temp, 'nonexistent'))); 143 equals(path.join(temp, 'nonexistent')));
122 }), completes); 144 }), completes);
123 }); 145 });
146
124 test('resolves multiple nested symlinks', () { 147 test('resolves multiple nested symlinks', () {
125 expect(withCanonicalTempDir((temp) { 148 expect(withCanonicalTempDir((temp) {
126 var dir1 = path.join(temp, 'dir1'); 149 var dir1 = path.join(temp, 'dir1');
127 var dir2 = path.join(temp, 'dir2'); 150 var dir2 = path.join(temp, 'dir2');
128 var subdir1 = path.join(dir1, 'subdir1'); 151 var subdir1 = path.join(dir1, 'subdir1');
129 var subdir2 = path.join(dir2, 'subdir2'); 152 var subdir2 = path.join(dir2, 'subdir2');
130 createDir(dir2); 153 createDir(dir2);
131 createDir(subdir2); 154 createDir(subdir2);
132 createSymlink(dir2, dir1); 155 createSymlink(dir2, dir1);
133 createSymlink(subdir2, subdir1); 156 createSymlink(subdir2, subdir1);
134 expect( 157 expect(
135 canonicalize(path.join(subdir1, 'file')), 158 canonicalize(path.join(subdir1, 'file')),
136 equals(path.join(subdir2, 'file'))); 159 equals(path.join(subdir2, 'file')));
137 }), completes); 160 }), completes);
138 }); 161 });
162
139 test('resolves a nested vertical symlink', () { 163 test('resolves a nested vertical symlink', () {
140 expect(withCanonicalTempDir((temp) { 164 expect(withCanonicalTempDir((temp) {
141 var dir1 = path.join(temp, 'dir1'); 165 var dir1 = path.join(temp, 'dir1');
142 var dir2 = path.join(temp, 'dir2'); 166 var dir2 = path.join(temp, 'dir2');
143 var subdir = path.join(dir1, 'subdir'); 167 var subdir = path.join(dir1, 'subdir');
144 createDir(dir1); 168 createDir(dir1);
145 createDir(dir2); 169 createDir(dir2);
146 createSymlink(dir2, subdir); 170 createSymlink(dir2, subdir);
147 expect( 171 expect(
148 canonicalize(path.join(subdir, 'file')), 172 canonicalize(path.join(subdir, 'file')),
149 equals(path.join(dir2, 'file'))); 173 equals(path.join(dir2, 'file')));
150 }), completes); 174 }), completes);
151 }); 175 });
176
152 test('resolves a vertically recursive symlink', () { 177 test('resolves a vertically recursive symlink', () {
153 expect(withCanonicalTempDir((temp) { 178 expect(withCanonicalTempDir((temp) {
154 var dir = path.join(temp, 'dir'); 179 var dir = path.join(temp, 'dir');
155 var subdir = path.join(dir, 'subdir'); 180 var subdir = path.join(dir, 'subdir');
156 createDir(dir); 181 createDir(dir);
157 createSymlink(dir, subdir); 182 createSymlink(dir, subdir);
158 expect( 183 expect(
159 canonicalize( 184 canonicalize(
160 path.join(temp, 'dir', 'subdir', 'subdir', 'subdir', 'subdir', ' file')), 185 path.join(temp, 'dir', 'subdir', 'subdir', 'subdir', 'subdir', ' file')),
161 equals(path.join(dir, 'file'))); 186 equals(path.join(dir, 'file')));
162 }), completes); 187 }), completes);
163 }); 188 });
189
164 test( 190 test(
165 'resolves a symlink that links to a path that needs more resolving', 191 'resolves a symlink that links to a path that needs more resolving',
166 () { 192 () {
167 expect(withCanonicalTempDir((temp) { 193 expect(withCanonicalTempDir((temp) {
168 var dir = path.join(temp, 'dir'); 194 var dir = path.join(temp, 'dir');
169 var linkdir = path.join(temp, 'linkdir'); 195 var linkdir = path.join(temp, 'linkdir');
170 var linkfile = path.join(dir, 'link'); 196 var linkfile = path.join(dir, 'link');
171 createDir(dir); 197 createDir(dir);
172 createSymlink(dir, linkdir); 198 createSymlink(dir, linkdir);
173 createSymlink(path.join(linkdir, 'file'), linkfile); 199 createSymlink(path.join(linkdir, 'file'), linkfile);
174 expect(canonicalize(linkfile), equals(path.join(dir, 'file'))); 200 expect(canonicalize(linkfile), equals(path.join(dir, 'file')));
175 }), completes); 201 }), completes);
176 }); 202 });
203
177 test('resolves a pair of pathologically-recursive symlinks', () { 204 test('resolves a pair of pathologically-recursive symlinks', () {
178 expect(withCanonicalTempDir((temp) { 205 expect(withCanonicalTempDir((temp) {
179 var foo = path.join(temp, 'foo'); 206 var foo = path.join(temp, 'foo');
180 var subfoo = path.join(foo, 'subfoo'); 207 var subfoo = path.join(foo, 'subfoo');
181 var bar = path.join(temp, 'bar'); 208 var bar = path.join(temp, 'bar');
182 var subbar = path.join(bar, 'subbar'); 209 var subbar = path.join(bar, 'subbar');
183 createSymlink(subbar, foo); 210 createSymlink(subbar, foo);
184 createSymlink(subfoo, bar); 211 createSymlink(subfoo, bar);
185 expect( 212 expect(
186 canonicalize(subfoo), 213 canonicalize(subfoo),
187 equals(path.join(subfoo, 'subbar', 'subfoo'))); 214 equals(path.join(subfoo, 'subbar', 'subfoo')));
188 }), completes); 215 }), completes);
189 }); 216 });
190 }); 217 });
218
191 testExistencePredicate( 219 testExistencePredicate(
192 "entryExists", 220 "entryExists",
193 entryExists, 221 entryExists,
194 forFile: true, 222 forFile: true,
195 forFileSymlink: true, 223 forFileSymlink: true,
196 forMultiLevelFileSymlink: true, 224 forMultiLevelFileSymlink: true,
197 forDirectory: true, 225 forDirectory: true,
198 forDirectorySymlink: true, 226 forDirectorySymlink: true,
199 forMultiLevelDirectorySymlink: true, 227 forMultiLevelDirectorySymlink: true,
200 forBrokenSymlink: true, 228 forBrokenSymlink: true,
201 forMultiLevelBrokenSymlink: true); 229 forMultiLevelBrokenSymlink: true);
230
202 testExistencePredicate( 231 testExistencePredicate(
203 "linkExists", 232 "linkExists",
204 linkExists, 233 linkExists,
205 forFile: false, 234 forFile: false,
206 forFileSymlink: true, 235 forFileSymlink: true,
207 forMultiLevelFileSymlink: true, 236 forMultiLevelFileSymlink: true,
208 forDirectory: false, 237 forDirectory: false,
209 forDirectorySymlink: true, 238 forDirectorySymlink: true,
210 forMultiLevelDirectorySymlink: true, 239 forMultiLevelDirectorySymlink: true,
211 forBrokenSymlink: true, 240 forBrokenSymlink: true,
212 forMultiLevelBrokenSymlink: true); 241 forMultiLevelBrokenSymlink: true);
242
213 testExistencePredicate( 243 testExistencePredicate(
214 "fileExists", 244 "fileExists",
215 fileExists, 245 fileExists,
216 forFile: true, 246 forFile: true,
217 forFileSymlink: true, 247 forFileSymlink: true,
218 forMultiLevelFileSymlink: true, 248 forMultiLevelFileSymlink: true,
219 forDirectory: false, 249 forDirectory: false,
220 forDirectorySymlink: false, 250 forDirectorySymlink: false,
221 forMultiLevelDirectorySymlink: false, 251 forMultiLevelDirectorySymlink: false,
222 forBrokenSymlink: false, 252 forBrokenSymlink: false,
223 forMultiLevelBrokenSymlink: false); 253 forMultiLevelBrokenSymlink: false);
254
224 testExistencePredicate( 255 testExistencePredicate(
225 "dirExists", 256 "dirExists",
226 dirExists, 257 dirExists,
227 forFile: false, 258 forFile: false,
228 forFileSymlink: false, 259 forFileSymlink: false,
229 forMultiLevelFileSymlink: false, 260 forMultiLevelFileSymlink: false,
230 forDirectory: true, 261 forDirectory: true,
231 forDirectorySymlink: true, 262 forDirectorySymlink: true,
232 forMultiLevelDirectorySymlink: true, 263 forMultiLevelDirectorySymlink: true,
233 forBrokenSymlink: false, 264 forBrokenSymlink: false,
234 forMultiLevelBrokenSymlink: false); 265 forMultiLevelBrokenSymlink: false);
235 } 266 }
267
236 void testExistencePredicate(String name, bool predicate(String path), 268 void testExistencePredicate(String name, bool predicate(String path),
237 {bool forFile, bool forFileSymlink, bool forMultiLevelFileSymlink, 269 {bool forFile, bool forFileSymlink, bool forMultiLevelFileSymlink,
238 bool forDirectory, bool forDirectorySymlink, bool forMultiLevelDirectorySyml ink, 270 bool forDirectory, bool forDirectorySymlink, bool forMultiLevelDirectorySyml ink,
239 bool forBrokenSymlink, bool forMultiLevelBrokenSymlink}) { 271 bool forBrokenSymlink, bool forMultiLevelBrokenSymlink}) {
240 group(name, () { 272 group(name, () {
241 test('returns $forFile for a file', () { 273 test('returns $forFile for a file', () {
242 expect(withTempDir((temp) { 274 expect(withTempDir((temp) {
243 var file = path.join(temp, "test.txt"); 275 var file = path.join(temp, "test.txt");
244 writeTextFile(file, "contents"); 276 writeTextFile(file, "contents");
245 expect(predicate(file), equals(forFile)); 277 expect(predicate(file), equals(forFile));
246 }), completes); 278 }), completes);
247 }); 279 });
280
248 test('returns $forDirectory for a directory', () { 281 test('returns $forDirectory for a directory', () {
249 expect(withTempDir((temp) { 282 expect(withTempDir((temp) {
250 var file = path.join(temp, "dir"); 283 var file = path.join(temp, "dir");
251 createDir(file); 284 createDir(file);
252 expect(predicate(file), equals(forDirectory)); 285 expect(predicate(file), equals(forDirectory));
253 }), completes); 286 }), completes);
254 }); 287 });
288
255 test('returns $forDirectorySymlink for a symlink to a directory', () { 289 test('returns $forDirectorySymlink for a symlink to a directory', () {
256 expect(withTempDir((temp) { 290 expect(withTempDir((temp) {
257 var targetPath = path.join(temp, "dir"); 291 var targetPath = path.join(temp, "dir");
258 var symlinkPath = path.join(temp, "linkdir"); 292 var symlinkPath = path.join(temp, "linkdir");
259 createDir(targetPath); 293 createDir(targetPath);
260 createSymlink(targetPath, symlinkPath); 294 createSymlink(targetPath, symlinkPath);
261 expect(predicate(symlinkPath), equals(forDirectorySymlink)); 295 expect(predicate(symlinkPath), equals(forDirectorySymlink));
262 }), completes); 296 }), completes);
263 }); 297 });
298
264 test( 299 test(
265 'returns $forMultiLevelDirectorySymlink for a multi-level symlink to ' 300 'returns $forMultiLevelDirectorySymlink for a multi-level symlink to '
266 'a directory', 301 'a directory',
267 () { 302 () {
268 expect(withTempDir((temp) { 303 expect(withTempDir((temp) {
269 var targetPath = path.join(temp, "dir"); 304 var targetPath = path.join(temp, "dir");
270 var symlink1Path = path.join(temp, "link1dir"); 305 var symlink1Path = path.join(temp, "link1dir");
271 var symlink2Path = path.join(temp, "link2dir"); 306 var symlink2Path = path.join(temp, "link2dir");
272 createDir(targetPath); 307 createDir(targetPath);
273 createSymlink(targetPath, symlink1Path); 308 createSymlink(targetPath, symlink1Path);
274 createSymlink(symlink1Path, symlink2Path); 309 createSymlink(symlink1Path, symlink2Path);
275 expect(predicate(symlink2Path), equals(forMultiLevelDirectorySymlink)); 310 expect(predicate(symlink2Path), equals(forMultiLevelDirectorySymlink));
276 }), completes); 311 }), completes);
277 }); 312 });
313
278 test('returns $forBrokenSymlink for a broken symlink', () { 314 test('returns $forBrokenSymlink for a broken symlink', () {
279 expect(withTempDir((temp) { 315 expect(withTempDir((temp) {
280 var targetPath = path.join(temp, "dir"); 316 var targetPath = path.join(temp, "dir");
281 var symlinkPath = path.join(temp, "linkdir"); 317 var symlinkPath = path.join(temp, "linkdir");
282 createDir(targetPath); 318 createDir(targetPath);
283 createSymlink(targetPath, symlinkPath); 319 createSymlink(targetPath, symlinkPath);
284 deleteEntry(targetPath); 320 deleteEntry(targetPath);
285 expect(predicate(symlinkPath), equals(forBrokenSymlink)); 321 expect(predicate(symlinkPath), equals(forBrokenSymlink));
286 }), completes); 322 }), completes);
287 }); 323 });
324
288 test( 325 test(
289 'returns $forMultiLevelBrokenSymlink for a multi-level broken symlink', 326 'returns $forMultiLevelBrokenSymlink for a multi-level broken symlink',
290 () { 327 () {
291 expect(withTempDir((temp) { 328 expect(withTempDir((temp) {
292 var targetPath = path.join(temp, "dir"); 329 var targetPath = path.join(temp, "dir");
293 var symlink1Path = path.join(temp, "link1dir"); 330 var symlink1Path = path.join(temp, "link1dir");
294 var symlink2Path = path.join(temp, "link2dir"); 331 var symlink2Path = path.join(temp, "link2dir");
295 createDir(targetPath); 332 createDir(targetPath);
296 createSymlink(targetPath, symlink1Path); 333 createSymlink(targetPath, symlink1Path);
297 createSymlink(symlink1Path, symlink2Path); 334 createSymlink(symlink1Path, symlink2Path);
298 deleteEntry(targetPath); 335 deleteEntry(targetPath);
299 expect(predicate(symlink2Path), equals(forMultiLevelBrokenSymlink)); 336 expect(predicate(symlink2Path), equals(forMultiLevelBrokenSymlink));
300 }), completes); 337 }), completes);
301 }); 338 });
339
340 // Windows doesn't support symlinking to files.
302 if (Platform.operatingSystem != 'windows') { 341 if (Platform.operatingSystem != 'windows') {
303 test('returns $forFileSymlink for a symlink to a file', () { 342 test('returns $forFileSymlink for a symlink to a file', () {
304 expect(withTempDir((temp) { 343 expect(withTempDir((temp) {
305 var targetPath = path.join(temp, "test.txt"); 344 var targetPath = path.join(temp, "test.txt");
306 var symlinkPath = path.join(temp, "link.txt"); 345 var symlinkPath = path.join(temp, "link.txt");
307 writeTextFile(targetPath, "contents"); 346 writeTextFile(targetPath, "contents");
308 createSymlink(targetPath, symlinkPath); 347 createSymlink(targetPath, symlinkPath);
309 expect(predicate(symlinkPath), equals(forFileSymlink)); 348 expect(predicate(symlinkPath), equals(forFileSymlink));
310 }), completes); 349 }), completes);
311 }); 350 });
351
312 test( 352 test(
313 'returns $forMultiLevelFileSymlink for a multi-level symlink to a ' 'f ile', 353 'returns $forMultiLevelFileSymlink for a multi-level symlink to a ' 'f ile',
314 () { 354 () {
315 expect(withTempDir((temp) { 355 expect(withTempDir((temp) {
316 var targetPath = path.join(temp, "test.txt"); 356 var targetPath = path.join(temp, "test.txt");
317 var symlink1Path = path.join(temp, "link1.txt"); 357 var symlink1Path = path.join(temp, "link1.txt");
318 var symlink2Path = path.join(temp, "link2.txt"); 358 var symlink2Path = path.join(temp, "link2.txt");
319 writeTextFile(targetPath, "contents"); 359 writeTextFile(targetPath, "contents");
320 createSymlink(targetPath, symlink1Path); 360 createSymlink(targetPath, symlink1Path);
321 createSymlink(symlink1Path, symlink2Path); 361 createSymlink(symlink1Path, symlink2Path);
322 expect(predicate(symlink2Path), equals(forMultiLevelFileSymlink)); 362 expect(predicate(symlink2Path), equals(forMultiLevelFileSymlink));
323 }), completes); 363 }), completes);
324 }); 364 });
325 } 365 }
326 }); 366 });
327 } 367 }
368
369 /// Like [withTempDir], but canonicalizes the path before passing it to [fn].
328 Future withCanonicalTempDir(Future fn(String path)) => 370 Future withCanonicalTempDir(Future fn(String path)) =>
329 withTempDir((temp) => fn(canonicalize(temp))); 371 withTempDir((temp) => fn(canonicalize(temp)));
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698