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

Side by Side Diff: packages/glob/test/list_test.dart

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 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
« no previous file with comments | « packages/glob/test/glob_test.dart ('k') | packages/glob/test/match_test.dart » ('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 (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:io'; 6 import 'dart:io';
7 7
8 import 'package:glob/glob.dart'; 8 import 'package:glob/glob.dart';
9 import 'package:glob/src/utils.dart'; 9 import 'package:glob/src/utils.dart';
10 import 'package:path/path.dart' as p; 10 import 'package:path/path.dart' as p;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 }); 45 });
46 46
47 test("reports exceptions for non-existent directories", () { 47 test("reports exceptions for non-existent directories", () {
48 schedule(() { 48 schedule(() {
49 expect(new Glob("non/existent/**").listSync, 49 expect(new Glob("non/existent/**").listSync,
50 throwsA(new isInstanceOf<FileSystemException>())); 50 throwsA(new isInstanceOf<FileSystemException>()));
51 }); 51 });
52 }); 52 });
53 }); 53 });
54 54
55 group("when case-sensitive", () {
56 test("lists literals case-sensitively", () {
57 schedule(() {
58 expect(new Glob("foo/BAZ/qux", caseSensitive: true).listSync,
59 throwsA(new isInstanceOf<FileSystemException>()));
60 });
61 });
62
63 test("lists ranges case-sensitively", () {
64 schedule(() {
65 expect(new Glob("foo/[BX][A-Z]z/qux", caseSensitive: true).listSync,
66 throwsA(new isInstanceOf<FileSystemException>()));
67 });
68 });
69
70 test("options preserve case-sensitivity", () {
71 schedule(() {
72 expect(new Glob("foo/{BAZ,ZAP}/qux", caseSensitive: true).listSync,
73 throwsA(new isInstanceOf<FileSystemException>()));
74 });
75 });
76 });
77
55 syncAndAsync((list) { 78 syncAndAsync((list) {
56 group("literals", () { 79 group("literals", () {
57 test("lists a single literal", () { 80 test("lists a single literal", () {
58 expect(list("foo/baz/qux"), 81 expect(list("foo/baz/qux"),
59 completion(equals([p.join("foo", "baz", "qux")]))); 82 completion(equals([p.join("foo", "baz", "qux")])));
60 }); 83 });
61 84
62 test("lists a non-matching literal", () { 85 test("lists a non-matching literal", () {
63 expect(list("foo/baz/nothing"), completion(isEmpty)); 86 expect(list("foo/baz/nothing"), completion(isEmpty));
64 }); 87 });
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 var pattern = separatorToForwardSlash( 268 var pattern = separatorToForwardSlash(
246 p.absolute(p.join(sandbox, 'foo/baz/**'))); 269 p.absolute(p.join(sandbox, 'foo/baz/**')));
247 270
248 return list(pattern); 271 return list(pattern);
249 }), completion(unorderedEquals([ 272 }), completion(unorderedEquals([
250 p.join("foo", "baz", "bang"), 273 p.join("foo", "baz", "bang"),
251 p.join("foo", "baz", "qux") 274 p.join("foo", "baz", "qux")
252 ]))); 275 ])));
253 }); 276 });
254 277
278 // Regression test for #4.
279 test("lists an absolute case-insensitive glob", () {
280 expect(schedule(() {
281 var pattern = separatorToForwardSlash(
282 p.absolute(p.join(sandbox, 'foo/Baz/**')));
283
284 return list(pattern, caseSensitive: false);
285 }), completion(unorderedEquals([
286 p.join("foo", "baz", "bang"),
287 p.join("foo", "baz", "qux")
288 ])));
289 });
290
255 test("lists a subdirectory that sometimes exists", () { 291 test("lists a subdirectory that sometimes exists", () {
256 d.dir("top", [ 292 d.dir("top", [
257 d.dir("dir1", [ 293 d.dir("dir1", [
258 d.dir("subdir", [d.file("file")]) 294 d.dir("subdir", [d.file("file")])
259 ]), 295 ]),
260 d.dir("dir2", []) 296 d.dir("dir2", [])
261 ]).create(); 297 ]).create();
262 298
263 expect(list("top/*/subdir/**"), 299 expect(list("top/*/subdir/**"),
264 completion(equals([p.join("top", "dir1", "subdir", "file")]))); 300 completion(equals([p.join("top", "dir1", "subdir", "file")])));
265 }); 301 });
302
303 group("when case-insensitive", () {
304 test("lists literals case-insensitively", () {
305 expect(list("foo/baz/qux", caseSensitive: false),
306 completion(equals([p.join("foo", "baz", "qux")])));
307 expect(list("foo/BAZ/qux", caseSensitive: false),
308 completion(equals([p.join("foo", "baz", "qux")])));
309 });
310
311 test("lists ranges case-insensitively", () {
312 expect(list("foo/[bx][a-z]z/qux", caseSensitive: false),
313 completion(equals([p.join("foo", "baz", "qux")])));
314 expect(list("foo/[BX][A-Z]z/qux", caseSensitive: false),
315 completion(equals([p.join("foo", "baz", "qux")])));
316 });
317
318 test("options preserve case-insensitivity", () {
319 expect(list("foo/{bar,baz}/qux", caseSensitive: false),
320 completion(equals([p.join("foo", "baz", "qux")])));
321 expect(list("foo/{BAR,BAZ}/qux", caseSensitive: false),
322 completion(equals([p.join("foo", "baz", "qux")])));
323 });
324 });
266 }); 325 });
267 } 326 }
268 327
269 typedef Future<List<String>> ListFn(String glob, 328 typedef Future<List<String>> ListFn(String glob,
270 {bool recursive, bool followLinks}); 329 {bool recursive, bool followLinks, bool caseSensitive});
271 330
272 /// Runs [callback] in two groups with two values of [listFn]: one that uses 331 /// Runs [callback] in two groups with two values of [listFn]: one that uses
273 /// [Glob.list], one that uses [Glob.listSync]. 332 /// [Glob.list], one that uses [Glob.listSync].
274 void syncAndAsync(callback(ListFn listFn)) { 333 void syncAndAsync(callback(ListFn listFn)) {
275 group("async", () { 334 group("async", () {
276 callback((glob, {recursive: false, followLinks: true}) { 335 callback((pattern, {recursive: false, followLinks: true, caseSensitive}) {
277 return schedule(() { 336 return schedule(() {
278 return new Glob(glob, recursive: recursive) 337 var glob = new Glob(pattern,
338 recursive: recursive, caseSensitive: caseSensitive);
339
340 return glob
279 .list(root: sandbox, followLinks: followLinks) 341 .list(root: sandbox, followLinks: followLinks)
280 .map((entity) => p.relative(entity.path, from: sandbox)) 342 .map((entity) => p.relative(entity.path, from: sandbox))
281 .toList(); 343 .toList();
282 }, 'listing $glob'); 344 }, 'listing $pattern');
283 }); 345 });
284 }); 346 });
285 347
286 group("sync", () { 348 group("sync", () {
287 callback((glob, {recursive: false, followLinks: true}) { 349 callback((pattern, {recursive: false, followLinks: true, caseSensitive}) {
288 return schedule(() { 350 return schedule(() {
289 return new Glob(glob, recursive: recursive) 351 var glob = new Glob(pattern,
352 recursive: recursive, caseSensitive: caseSensitive);
353
354 return glob
290 .listSync(root: sandbox, followLinks: followLinks) 355 .listSync(root: sandbox, followLinks: followLinks)
291 .map((entity) => p.relative(entity.path, from: sandbox)) 356 .map((entity) => p.relative(entity.path, from: sandbox))
292 .toList(); 357 .toList();
293 }, 'listing $glob'); 358 }, 'listing $pattern');
294 }); 359 });
295 }); 360 });
296 } 361 }
297 362
298 void scheduleSandbox() { 363 void scheduleSandbox() {
299 schedule(() { 364 schedule(() {
300 return Directory.systemTemp.createTemp('glob_').then((dir) { 365 return Directory.systemTemp.createTemp('glob_').then((dir) {
301 sandbox = dir.path; 366 sandbox = dir.path;
302 d.defaultRoot = sandbox; 367 d.defaultRoot = sandbox;
303 }); 368 });
304 }, 'creating sandbox'); 369 }, 'creating sandbox');
305 370
306 currentSchedule.onComplete.schedule(() { 371 currentSchedule.onComplete.schedule(() {
307 d.defaultRoot = null; 372 d.defaultRoot = null;
308 if (sandbox == null) return null; 373 if (sandbox == null) return null;
309 var oldSandbox = sandbox; 374 var oldSandbox = sandbox;
310 sandbox = null; 375 sandbox = null;
311 return new Directory(oldSandbox).delete(recursive: true); 376 return new Directory(oldSandbox).delete(recursive: true);
312 }); 377 });
313 } 378 }
OLDNEW
« no previous file with comments | « packages/glob/test/glob_test.dart ('k') | packages/glob/test/match_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698