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

Side by Side Diff: pkg/scheduled_test/lib/src/descriptor/nothing.dart

Issue 12853005: Change the way Patterns work in scheduled_test/descriptor. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 9 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 descriptor.async; 5 library descriptor.async;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import '../../../../../pkg/pathos/lib/path.dart' as path; 10 import '../../../../../pkg/pathos/lib/path.dart' as path;
11 11
12 import '../../descriptor.dart' as descriptor; 12 import '../../descriptor.dart' as descriptor;
13 import '../../scheduled_test.dart'; 13 import '../../scheduled_test.dart';
14 import '../utils.dart'; 14 import '../utils.dart';
15 import 'utils.dart';
16 15
17 /// A descriptor that validates that no file exists with the given name. 16 /// A descriptor that validates that no file exists with the given name.
18 /// Creating this descriptor is a no-op and loading from it is invalid. 17 /// Creating this descriptor is a no-op and loading from it is invalid.
19 class Nothing extends descriptor.Entry { 18 class Nothing extends descriptor.Entry {
20 Nothing(Pattern name) 19 Nothing(String name)
21 : super(name); 20 : super(name);
22 21
23 Future create([String parent]) => new Future.immediate(null); 22 Future create([String parent]) => new Future.immediate(null);
24 23
25 Future validate([String parent]) => schedule(() { 24 Future validate([String parent]) => schedule(() {
26 if (parent == null) parent = descriptor.defaultRoot; 25 if (parent == null) parent = descriptor.defaultRoot;
27 if (name is String) { 26 var fullPath = path.join(parent, name);
28 var fullPath = path.join(parent, name); 27 if (new File(fullPath).existsSync()) {
29 if (new File(fullPath).existsSync()) { 28 throw "Expected nothing to exist at '$fullPath', but found a file.";
30 throw "Expected nothing to exist at '$fullPath', but found a file."; 29 } else if (new Directory(fullPath).existsSync()) {
31 } else if (new Directory(fullPath).existsSync()) { 30 throw "Expected nothing to exist at '$fullPath', but found a "
32 throw "Expected nothing to exist at '$fullPath', but found a " 31 "directory.";
33 "directory."; 32 } else {
34 } else { 33 return;
35 return;
36 }
37 } 34 }
38 35 }, "validating '$name' doesn't exist");
39 return new Directory(parent).list().toList().then((entries) {
40 var matchingEntries = entries
41 .map((entry) => entry is File ? entry.fullPathSync() : entry.path)
42 .where((entry) => path.basename(entry).contains(name))
43 .toList();
44 matchingEntries.sort();
45
46 if (matchingEntries.length == 0) return;
47 throw "Expected nothing to exist in '$parent' matching $nameDescription, "
48 "but found:\n"
49 "${matchingEntries.map((entry) => '* $entry').join('\n')}";
50 });
51 }, "validating $nameDescription doesn't exist");
52 36
53 Stream<List<int>> load(String pathToLoad) => errorStream("Nothing " 37 Stream<List<int>> load(String pathToLoad) => errorStream("Nothing "
54 "descriptors don't support load()."); 38 "descriptors don't support load().");
55 39
56 Stream<List<int>> read() => errorStream("Nothing descriptors don't support " 40 Stream<List<int>> read() => errorStream("Nothing descriptors don't support "
57 "read()."); 41 "read().");
58 42
59 String describe() => "nothing at $nameDescription"; 43 String describe() => "nothing at '$name'";
60 } 44 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698