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

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

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

Powered by Google App Engine
This is Rietveld 408576698