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

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

Issue 598103003: Fix pkg/glob tests on Windows. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 3 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
« no previous file with comments | « pkg/glob/pubspec.yaml ('k') | no next file » | 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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 syncAndAsync((list) { 55 syncAndAsync((list) {
56 group("literals", () { 56 group("literals", () {
57 test("lists a single literal", () { 57 test("lists a single literal", () {
58 expect(list("foo/baz/qux"), completion(equals(["foo/baz/qux"]))); 58 expect(list("foo/baz/qux"),
59 completion(equals([p.join("foo", "baz", "qux")])));
59 }); 60 });
60 61
61 test("lists a non-matching literal", () { 62 test("lists a non-matching literal", () {
62 expect(list("foo/baz/nothing"), completion(isEmpty)); 63 expect(list("foo/baz/nothing"), completion(isEmpty));
63 }); 64 });
64 }); 65 });
65 66
66 group("star", () { 67 group("star", () {
67 test("lists within filenames but not across directories", () { 68 test("lists within filenames but not across directories", () {
68 expect(list("foo/b*"), 69 expect(list("foo/b*"), completion(unorderedEquals([
69 completion(unorderedEquals(["foo/bar", "foo/baz"]))); 70 p.join("foo", "bar"),
71 p.join("foo", "baz")
72 ])));
70 }); 73 });
71 74
72 test("lists the empy string", () { 75 test("lists the empy string", () {
73 expect(list("foo/bar*"), completion(equals(["foo/bar"]))); 76 expect(list("foo/bar*"), completion(equals([p.join("foo", "bar")])));
74 }); 77 });
75 }); 78 });
76 79
77 group("double star", () { 80 group("double star", () {
78 test("lists within filenames", () { 81 test("lists within filenames", () {
79 expect(list("foo/baz/**"), 82 expect(list("foo/baz/**"), completion(unorderedEquals([
80 completion(unorderedEquals(["foo/baz/qux", "foo/baz/bang"]))); 83 p.join("foo", "baz", "qux"),
84 p.join("foo", "baz", "bang")
85 ])));
81 }); 86 });
82 87
83 test("lists the empty string", () { 88 test("lists the empty string", () {
84 expect(list("foo/bar**"), completion(equals(["foo/bar"]))); 89 expect(list("foo/bar**"), completion(equals([p.join("foo", "bar")])));
85 }); 90 });
86 91
87 test("lists recursively", () { 92 test("lists recursively", () {
88 expect(list("foo/**"), completion(unorderedEquals( 93 expect(list("foo/**"), completion(unorderedEquals([
89 ["foo/bar", "foo/baz", "foo/baz/qux", "foo/baz/bang"]))); 94 p.join("foo", "bar"),
95 p.join("foo", "baz"),
96 p.join("foo", "baz", "qux"),
97 p.join("foo", "baz", "bang")
98 ])));
90 }); 99 });
91 100
92 test("combines with literals", () { 101 test("combines with literals", () {
93 expect(list("foo/ba**"), completion(unorderedEquals( 102 expect(list("foo/ba**"), completion(unorderedEquals([
94 ["foo/bar", "foo/baz", "foo/baz/qux", "foo/baz/bang"]))); 103 p.join("foo", "bar"),
104 p.join("foo", "baz"),
105 p.join("foo", "baz", "qux"),
106 p.join("foo", "baz", "bang")
107 ])));
95 }); 108 });
96 109
97 test("lists recursively in the middle of a glob", () { 110 test("lists recursively in the middle of a glob", () {
98 d.dir("deep", [ 111 d.dir("deep", [
99 d.dir("a", [ 112 d.dir("a", [
100 d.dir("b", [ 113 d.dir("b", [
101 d.dir("c", [ 114 d.dir("c", [
102 d.file("d"), 115 d.file("d"),
103 d.file("long-file") 116 d.file("long-file")
104 ]), 117 ]),
105 d.dir("long-dir", [d.file("x")]) 118 d.dir("long-dir", [d.file("x")])
106 ]) 119 ])
107 ]) 120 ])
108 ]).create(); 121 ]).create();
109 122
110 expect(list("deep/**/?/?"), 123 expect(list("deep/**/?/?"), completion(unorderedEquals([
111 completion(unorderedEquals(["deep/a/b/c", "deep/a/b/c/d"]))); 124 p.join("deep", "a", "b", "c"),
125 p.join("deep", "a", "b", "c", "d")
126 ])));
112 }); 127 });
113 }); 128 });
114 129
115 group("any char", () { 130 group("any char", () {
116 test("matches a character", () { 131 test("matches a character", () {
117 expect(list("foo/ba?"), 132 expect(list("foo/ba?"), completion(unorderedEquals([
118 completion(unorderedEquals(["foo/bar", "foo/baz"]))); 133 p.join("foo", "bar"),
134 p.join("foo", "baz")
135 ])));
119 }); 136 });
120 137
121 test("doesn't match a separator", () { 138 test("doesn't match a separator", () {
122 expect(list("foo?bar"), completion(isEmpty)); 139 expect(list("foo?bar"), completion(isEmpty));
123 }); 140 });
124 }); 141 });
125 142
126 group("range", () { 143 group("range", () {
127 test("matches a range of characters", () { 144 test("matches a range of characters", () {
128 expect(list("foo/ba[a-z]"), 145 expect(list("foo/ba[a-z]"), completion(unorderedEquals([
129 completion(unorderedEquals(["foo/bar", "foo/baz"]))); 146 p.join("foo", "bar"),
147 p.join("foo", "baz")
148 ])));
130 }); 149 });
131 150
132 test("matches a specific list of characters", () { 151 test("matches a specific list of characters", () {
133 expect(list("foo/ba[rz]"), 152 expect(list("foo/ba[rz]"), completion(unorderedEquals([
134 completion(unorderedEquals(["foo/bar", "foo/baz"]))); 153 p.join("foo", "bar"),
154 p.join("foo", "baz")
155 ])));
135 }); 156 });
136 157
137 test("doesn't match outside its range", () { 158 test("doesn't match outside its range", () {
138 expect(list("foo/ba[a-x]"), 159 expect(list("foo/ba[a-x]"),
139 completion(unorderedEquals(["foo/bar"]))); 160 completion(unorderedEquals([p.join("foo", "bar")])));
140 }); 161 });
141 162
142 test("doesn't match outside its specific list", () { 163 test("doesn't match outside its specific list", () {
143 expect(list("foo/ba[rx]"), 164 expect(list("foo/ba[rx]"),
144 completion(unorderedEquals(["foo/bar"]))); 165 completion(unorderedEquals([p.join("foo", "bar")])));
145 }); 166 });
146 }); 167 });
147 168
148 test("the same file shouldn't be non-recursively listed multiple times", 169 test("the same file shouldn't be non-recursively listed multiple times",
149 () { 170 () {
150 d.dir("multi", [ 171 d.dir("multi", [
151 d.dir("start-end", [d.file("file")]) 172 d.dir("start-end", [d.file("file")])
152 ]).create(); 173 ]).create();
153 174
154 expect(list("multi/{start-*/f*,*-end/*e}"), 175 expect(list("multi/{start-*/f*,*-end/*e}"),
155 completion(equals(["multi/start-end/file"]))); 176 completion(equals([p.join("multi", "start-end", "file")])));
156 }); 177 });
157 178
158 test("the same file shouldn't be recursively listed multiple times", () { 179 test("the same file shouldn't be recursively listed multiple times", () {
159 d.dir("multi", [ 180 d.dir("multi", [
160 d.dir("a", [ 181 d.dir("a", [
161 d.dir("b", [ 182 d.dir("b", [
162 d.file("file"), 183 d.file("file"),
163 d.dir("c", [ 184 d.dir("c", [
164 d.file("file") 185 d.file("file")
165 ]) 186 ])
166 ]), 187 ]),
167 d.dir("x", [ 188 d.dir("x", [
168 d.dir("y", [ 189 d.dir("y", [
169 d.file("file") 190 d.file("file")
170 ]) 191 ])
171 ]) 192 ])
172 ]) 193 ])
173 ]).create(); 194 ]).create();
174 195
175 expect(list("multi/{*/*/*/file,a/**/file}"), completion(unorderedEquals([ 196 expect(list("multi/{*/*/*/file,a/**/file}"), completion(unorderedEquals([
176 "multi/a/b/file", "multi/a/b/c/file", "multi/a/x/y/file" 197 p.join("multi", "a", "b", "file"),
198 p.join("multi", "a", "b", "c", "file"),
199 p.join("multi", "a", "x", "y", "file")
177 ]))); 200 ])));
178 }); 201 });
179 202
180 group("with symlinks", () { 203 group("with symlinks", () {
181 setUp(() { 204 setUp(() {
182 schedule(() { 205 schedule(() {
183 return new Link(p.join(sandbox, "dir", "link")) 206 return new Link(p.join(sandbox, "dir", "link"))
184 .create(p.join(sandbox, "foo", "baz"), recursive: true); 207 .create(p.join(sandbox, "foo", "baz"), recursive: true);
185 }, "symlink foo/baz to dir/link"); 208 }, "symlink foo/baz to dir/link");
186 }); 209 });
187 210
188 test("follows symlinks by default", () { 211 test("follows symlinks by default", () {
189 expect(list("dir/**"), completion(unorderedEquals([ 212 expect(list("dir/**"), completion(unorderedEquals([
190 "dir/link", "dir/link/bang", "dir/link/qux" 213 p.join("dir", "link"),
214 p.join("dir", "link", "bang"),
215 p.join("dir", "link", "qux")
191 ]))); 216 ])));
192 }); 217 });
193 218
194 test("doesn't follow symlinks with followLinks: false", () { 219 test("doesn't follow symlinks with followLinks: false", () {
195 expect(list("dir/**", followLinks: false), 220 expect(list("dir/**", followLinks: false),
196 completion(equals(["dir/link"]))); 221 completion(equals([p.join("dir", "link")])));
197 }); 222 });
198 223
199 test("shouldn't crash on broken symlinks", () { 224 test("shouldn't crash on broken symlinks", () {
200 schedule(() { 225 schedule(() {
201 return new Directory(p.join(sandbox, "foo")).delete(recursive: true); 226 return new Directory(p.join(sandbox, "foo")).delete(recursive: true);
202 }); 227 });
203 228
204 expect(list("dir/**"), completion(equals(["dir/link"]))); 229 expect(list("dir/**"), completion(equals([p.join("dir", "link")])));
205 }); 230 });
206 }); 231 });
207 232
208 test("always lists recursively with recursive: true", () { 233 test("always lists recursively with recursive: true", () {
209 expect(list("foo", recursive: true), completion(unorderedEquals( 234 expect(list("foo", recursive: true), completion(unorderedEquals([
210 ["foo", "foo/bar", "foo/baz", "foo/baz/qux", "foo/baz/bang"]))); 235 "foo",
236 p.join("foo", "bar"),
237 p.join("foo", "baz"),
238 p.join("foo", "baz", "qux"),
239 p.join("foo", "baz", "bang")
240 ])));
211 }); 241 });
212 242
213 test("lists an absolute glob", () { 243 test("lists an absolute glob", () {
214 expect(schedule(() { 244 expect(schedule(() {
215 var pattern = separatorToForwardSlash( 245 var pattern = separatorToForwardSlash(
216 p.absolute(p.join(sandbox, 'foo/baz/**'))); 246 p.absolute(p.join(sandbox, 'foo/baz/**')));
217 247
218 return list(pattern); 248 return list(pattern);
219 }), completion(unorderedEquals(["foo/baz/bang", "foo/baz/qux"]))); 249 }), completion(unorderedEquals([
250 p.join("foo", "baz", "bang"),
251 p.join("foo", "baz", "qux")
252 ])));
220 }); 253 });
221 }); 254 });
222 } 255 }
223 256
224 typedef Future<List<String>> ListFn(String glob, 257 typedef Future<List<String>> ListFn(String glob,
225 {bool recursive, bool followLinks}); 258 {bool recursive, bool followLinks});
226 259
227 /// Runs [callback] in two groups with two values of [listFn]: one that uses 260 /// Runs [callback] in two groups with two values of [listFn]: one that uses
228 /// [Glob.list], one that uses [Glob.listSync]. 261 /// [Glob.list], one that uses [Glob.listSync].
229 void syncAndAsync(callback(ListFn listFn)) { 262 void syncAndAsync(callback(ListFn listFn)) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 }, 'creating sandbox'); 296 }, 'creating sandbox');
264 297
265 currentSchedule.onComplete.schedule(() { 298 currentSchedule.onComplete.schedule(() {
266 d.defaultRoot = null; 299 d.defaultRoot = null;
267 if (sandbox == null) return null; 300 if (sandbox == null) return null;
268 var oldSandbox = sandbox; 301 var oldSandbox = sandbox;
269 sandbox = null; 302 sandbox = null;
270 return new Directory(oldSandbox).delete(recursive: true); 303 return new Directory(oldSandbox).delete(recursive: true);
271 }); 304 });
272 } 305 }
OLDNEW
« no previous file with comments | « pkg/glob/pubspec.yaml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698