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

Side by Side Diff: pkg/path/test/windows_test.dart

Issue 19231002: Port dart:io Path tests to package:path. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add comment to relative(path, from: from) Created 7 years, 5 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/path/test/url_test.dart ('k') | tests/standalone/io/path_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) 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 path.test.windows_test; 5 library path.test.windows_test;
6 6
7 import 'package:unittest/unittest.dart'; 7 import 'package:unittest/unittest.dart';
8 import 'package:path/path.dart' as path; 8 import 'package:path/path.dart' as path;
9 9
10 main() { 10 main() {
11 var builder = new path.Builder(style: path.Style.windows, 11 var builder = new path.Builder(style: path.Style.windows,
12 root: r'C:\root\path'); 12 root: r'C:\root\path');
13 13
14 if (new path.Builder().style == path.Style.windows) { 14 if (new path.Builder().style == path.Style.windows) {
15 group('absolute', () { 15 group('absolute', () {
16 expect(path.absolute(r'a\b.txt'), path.join(path.current, r'a\b.txt')); 16 expect(path.absolute(r'a\b.txt'), path.join(path.current, r'a\b.txt'));
17 expect(path.absolute(r'C:\a\b.txt'), r'C:\a\b.txt'); 17 expect(path.absolute(r'C:\a\b.txt'), r'C:\a\b.txt');
18 expect(path.absolute(r'\\a\b.txt'), r'\\a\b.txt'); 18 expect(path.absolute(r'\\a\b.txt'), r'\\a\b.txt');
19 }); 19 });
20 } 20 }
21 21
22 group('separator', () { 22 group('separator', () {
23 expect(builder.separator, '\\'); 23 expect(builder.separator, '\\');
24 }); 24 });
25 25
26 test('extension', () { 26 test('extension', () {
27 expect(builder.extension(''), ''); 27 expect(builder.extension(''), '');
28 expect(builder.extension('.'), '');
29 expect(builder.extension('..'), '');
30 expect(builder.extension('a/..'), '');
28 expect(builder.extension('foo.dart'), '.dart'); 31 expect(builder.extension('foo.dart'), '.dart');
29 expect(builder.extension('foo.dart.js'), '.js'); 32 expect(builder.extension('foo.dart.js'), '.js');
33 expect(builder.extension('foo bar\gule fisk.dart.js'), '.js');
30 expect(builder.extension(r'a.b\c'), ''); 34 expect(builder.extension(r'a.b\c'), '');
31 expect(builder.extension('a.b/c.d'), '.d'); 35 expect(builder.extension('a.b/c.d'), '.d');
32 expect(builder.extension(r'~\.bashrc'), ''); 36 expect(builder.extension(r'~\.bashrc'), '');
33 expect(builder.extension(r'a.b/c'), r''); 37 expect(builder.extension(r'a.b/c'), r'');
34 }); 38 });
35 39
36 test('rootPrefix', () { 40 test('rootPrefix', () {
37 expect(builder.rootPrefix(''), ''); 41 expect(builder.rootPrefix(''), '');
38 expect(builder.rootPrefix('a'), ''); 42 expect(builder.rootPrefix('a'), '');
39 expect(builder.rootPrefix(r'a\b'), ''); 43 expect(builder.rootPrefix(r'a\b'), '');
(...skipping 17 matching lines...) Expand all
57 expect(builder.dirname(r'a\b/c'), r'a\b'); 61 expect(builder.dirname(r'a\b/c'), r'a\b');
58 expect(builder.dirname(r'C:\a'), r'C:\'); 62 expect(builder.dirname(r'C:\a'), r'C:\');
59 expect(builder.dirname(r'C:\\\a'), r'C:\'); 63 expect(builder.dirname(r'C:\\\a'), r'C:\');
60 expect(builder.dirname(r'C:\'), r'C:\'); 64 expect(builder.dirname(r'C:\'), r'C:\');
61 expect(builder.dirname(r'C:\\\'), r'C:\'); 65 expect(builder.dirname(r'C:\\\'), r'C:\');
62 expect(builder.dirname(r'a\b\'), r'a'); 66 expect(builder.dirname(r'a\b\'), r'a');
63 expect(builder.dirname(r'a/b\c'), 'a/b'); 67 expect(builder.dirname(r'a/b\c'), 'a/b');
64 expect(builder.dirname(r'a\\'), r'.'); 68 expect(builder.dirname(r'a\\'), r'.');
65 expect(builder.dirname(r'a\b\\'), 'a'); 69 expect(builder.dirname(r'a\b\\'), 'a');
66 expect(builder.dirname(r'a\\b'), 'a'); 70 expect(builder.dirname(r'a\\b'), 'a');
71 expect(builder.dirname(r'foo bar\gule fisk'), 'foo bar');
67 }); 72 });
68 73
69 test('basename', () { 74 test('basename', () {
70 expect(builder.basename(r''), ''); 75 expect(builder.basename(r''), '');
76 expect(builder.basename(r'.'), '.');
77 expect(builder.basename(r'..'), '..');
78 expect(builder.basename(r'.hest'), '.hest');
71 expect(builder.basename(r'a'), 'a'); 79 expect(builder.basename(r'a'), 'a');
72 expect(builder.basename(r'a\b'), 'b'); 80 expect(builder.basename(r'a\b'), 'b');
73 expect(builder.basename(r'a\b\c'), 'c'); 81 expect(builder.basename(r'a\b\c'), 'c');
74 expect(builder.basename(r'a\b.c'), 'b.c'); 82 expect(builder.basename(r'a\b.c'), 'b.c');
75 expect(builder.basename(r'a\'), 'a'); 83 expect(builder.basename(r'a\'), 'a');
76 expect(builder.basename(r'a/'), 'a'); 84 expect(builder.basename(r'a/'), 'a');
77 expect(builder.basename(r'a\.'), '.'); 85 expect(builder.basename(r'a\.'), '.');
78 expect(builder.basename(r'a\b/c'), r'c'); 86 expect(builder.basename(r'a\b/c'), r'c');
79 expect(builder.basename(r'C:\a'), 'a'); 87 expect(builder.basename(r'C:\a'), 'a');
80 expect(builder.basename(r'C:\'), r'C:\'); 88 expect(builder.basename(r'C:\'), r'C:\');
81 expect(builder.basename(r'a\b\'), 'b'); 89 expect(builder.basename(r'a\b\'), 'b');
82 expect(builder.basename(r'a/b\c'), 'c'); 90 expect(builder.basename(r'a/b\c'), 'c');
83 expect(builder.basename(r'a\\'), 'a'); 91 expect(builder.basename(r'a\\'), 'a');
84 expect(builder.basename(r'a\b\\'), 'b'); 92 expect(builder.basename(r'a\b\\'), 'b');
85 expect(builder.basename(r'a\\b'), 'b'); 93 expect(builder.basename(r'a\\b'), 'b');
94 expect(builder.basename(r'a\\b'), 'b');
95 expect(builder.basename(r'a\fisk hest.ma pa'), 'fisk hest.ma pa');
86 }); 96 });
87 97
88 test('basenameWithoutExtension', () { 98 test('basenameWithoutExtension', () {
89 expect(builder.basenameWithoutExtension(''), ''); 99 expect(builder.basenameWithoutExtension(''), '');
100 expect(builder.basenameWithoutExtension('.'), '.');
101 expect(builder.basenameWithoutExtension('..'), '..');
102 expect(builder.basenameWithoutExtension('.hest'), '.hest');
90 expect(builder.basenameWithoutExtension('a'), 'a'); 103 expect(builder.basenameWithoutExtension('a'), 'a');
91 expect(builder.basenameWithoutExtension(r'a\b'), 'b'); 104 expect(builder.basenameWithoutExtension(r'a\b'), 'b');
92 expect(builder.basenameWithoutExtension(r'a\b\c'), 'c'); 105 expect(builder.basenameWithoutExtension(r'a\b\c'), 'c');
93 expect(builder.basenameWithoutExtension(r'a\b.c'), 'b'); 106 expect(builder.basenameWithoutExtension(r'a\b.c'), 'b');
94 expect(builder.basenameWithoutExtension(r'a\'), 'a'); 107 expect(builder.basenameWithoutExtension(r'a\'), 'a');
95 expect(builder.basenameWithoutExtension(r'a\.'), '.'); 108 expect(builder.basenameWithoutExtension(r'a\.'), '.');
96 expect(builder.basenameWithoutExtension(r'a\b/c'), r'c'); 109 expect(builder.basenameWithoutExtension(r'a\b/c'), r'c');
97 expect(builder.basenameWithoutExtension(r'a\.bashrc'), '.bashrc'); 110 expect(builder.basenameWithoutExtension(r'a\.bashrc'), '.bashrc');
98 expect(builder.basenameWithoutExtension(r'a\b\c.d.e'), 'c.d'); 111 expect(builder.basenameWithoutExtension(r'a\b\c.d.e'), 'c.d');
99 expect(builder.basenameWithoutExtension(r'a\\'), 'a'); 112 expect(builder.basenameWithoutExtension(r'a\\'), 'a');
100 expect(builder.basenameWithoutExtension(r'a\b\\'), 'b'); 113 expect(builder.basenameWithoutExtension(r'a\b\\'), 'b');
101 expect(builder.basenameWithoutExtension(r'a\\b'), 'b'); 114 expect(builder.basenameWithoutExtension(r'a\\b'), 'b');
102 expect(builder.basenameWithoutExtension(r'a\b.c\'), 'b'); 115 expect(builder.basenameWithoutExtension(r'a\b.c\'), 'b');
103 expect(builder.basenameWithoutExtension(r'a\b.c\\'), 'b'); 116 expect(builder.basenameWithoutExtension(r'a\b.c\\'), 'b');
117 expect(builder.basenameWithoutExtension(r'C:\f h.ma pa.f s'), 'f h.ma pa');
104 }); 118 });
105 119
106 test('isAbsolute', () { 120 test('isAbsolute', () {
107 expect(builder.isAbsolute(''), false); 121 expect(builder.isAbsolute(''), false);
122 expect(builder.isAbsolute('.'), false);
123 expect(builder.isAbsolute('..'), false);
108 expect(builder.isAbsolute('a'), false); 124 expect(builder.isAbsolute('a'), false);
109 expect(builder.isAbsolute(r'a\b'), false); 125 expect(builder.isAbsolute(r'a\b'), false);
110 expect(builder.isAbsolute(r'\a'), false); 126 expect(builder.isAbsolute(r'\a'), false);
111 expect(builder.isAbsolute(r'\a\b'), false); 127 expect(builder.isAbsolute(r'\a\b'), false);
112 expect(builder.isAbsolute('~'), false); 128 expect(builder.isAbsolute('~'), false);
113 expect(builder.isAbsolute('.'), false); 129 expect(builder.isAbsolute('.'), false);
114 expect(builder.isAbsolute(r'..\a'), false); 130 expect(builder.isAbsolute(r'..\a'), false);
115 expect(builder.isAbsolute(r'a:/a\b'), true); 131 expect(builder.isAbsolute(r'a:/a\b'), true);
116 expect(builder.isAbsolute(r'D:/a/b'), true); 132 expect(builder.isAbsolute(r'D:/a/b'), true);
117 expect(builder.isAbsolute(r'c:\'), true); 133 expect(builder.isAbsolute(r'c:\'), true);
118 expect(builder.isAbsolute(r'B:\'), true); 134 expect(builder.isAbsolute(r'B:\'), true);
119 expect(builder.isAbsolute(r'c:\a'), true); 135 expect(builder.isAbsolute(r'c:\a'), true);
120 expect(builder.isAbsolute(r'C:\a'), true); 136 expect(builder.isAbsolute(r'C:\a'), true);
121 expect(builder.isAbsolute(r'\\a'), true); 137 expect(builder.isAbsolute(r'\\a'), true);
122 expect(builder.isAbsolute(r'\\'), true); 138 expect(builder.isAbsolute(r'\\'), true);
123 }); 139 });
124 140
125 test('isRelative', () { 141 test('isRelative', () {
126 expect(builder.isRelative(''), true); 142 expect(builder.isRelative(''), true);
143 expect(builder.isRelative('.'), true);
144 expect(builder.isRelative('..'), true);
127 expect(builder.isRelative('a'), true); 145 expect(builder.isRelative('a'), true);
128 expect(builder.isRelative(r'a\b'), true); 146 expect(builder.isRelative(r'a\b'), true);
129 expect(builder.isRelative(r'\a'), true); 147 expect(builder.isRelative(r'\a'), true);
130 expect(builder.isRelative(r'\a\b'), true); 148 expect(builder.isRelative(r'\a\b'), true);
131 expect(builder.isRelative('~'), true); 149 expect(builder.isRelative('~'), true);
132 expect(builder.isRelative('.'), true); 150 expect(builder.isRelative('.'), true);
133 expect(builder.isRelative(r'..\a'), true); 151 expect(builder.isRelative(r'..\a'), true);
134 expect(builder.isRelative(r'a:/a\b'), false); 152 expect(builder.isRelative(r'a:/a\b'), false);
135 expect(builder.isRelative(r'D:/a/b'), false); 153 expect(builder.isRelative(r'D:/a/b'), false);
136 expect(builder.isRelative(r'c:\'), false); 154 expect(builder.isRelative(r'c:\'), false);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 expect(builder.join('', ''), ''); 195 expect(builder.join('', ''), '');
178 expect(builder.join('', 'a'), 'a'); 196 expect(builder.join('', 'a'), 'a');
179 expect(builder.join('a', '', 'b', '', '', '', 'c'), r'a\b\c'); 197 expect(builder.join('a', '', 'b', '', '', '', 'c'), r'a\b\c');
180 expect(builder.join('a', 'b', ''), r'a\b'); 198 expect(builder.join('a', 'b', ''), r'a\b');
181 }); 199 });
182 200
183 test('disallows intermediate nulls', () { 201 test('disallows intermediate nulls', () {
184 expect(() => builder.join('a', null, 'b'), throwsArgumentError); 202 expect(() => builder.join('a', null, 'b'), throwsArgumentError);
185 expect(() => builder.join(null, 'a'), throwsArgumentError); 203 expect(() => builder.join(null, 'a'), throwsArgumentError);
186 }); 204 });
205
206 test('join does not modify internal ., .., or trailing separators', () {
207 expect(builder.join('a/', 'b/c/'), 'a/b/c/');
208 expect(builder.join(r'a\b\./c\..\\', r'd\..\.\..\\e\f\\'),
209 r'a\b\./c\..\\d\..\.\..\\e\f\\');
210 expect(builder.join(r'a\b', r'c\..\..\..\..'), r'a\b\c\..\..\..\..');
211 expect(builder.join(r'a', 'b${builder.separator}'), r'a\b\');
212 });
187 }); 213 });
188 214
189 group('joinAll', () { 215 group('joinAll', () {
190 test('allows more than eight parts', () { 216 test('allows more than eight parts', () {
191 expect(builder.joinAll(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']), 217 expect(builder.joinAll(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']),
192 r'a\b\c\d\e\f\g\h\i'); 218 r'a\b\c\d\e\f\g\h\i');
193 }); 219 });
194 220
195 test('does not add separator if a part ends or begins in one', () { 221 test('does not add separator if a part ends or begins in one', () {
196 expect(builder.joinAll([r'a\', 'b', r'c\', 'd']), r'a\b\c\d'); 222 expect(builder.joinAll([r'a\', 'b', r'c\', 'd']), r'a\b\c\d');
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 257
232 // TODO(nweiz): enable these once issue 7323 is fixed. 258 // TODO(nweiz): enable these once issue 7323 is fixed.
233 // expect(builder.split(r'\\server\foo\bar\baz'), 259 // expect(builder.split(r'\\server\foo\bar\baz'),
234 // equals([r'\\server\', 'foo', 'bar', 'baz'])); 260 // equals([r'\\server\', 'foo', 'bar', 'baz']));
235 // expect(builder.split(r'\\server\'), equals([r'\\server\'])); 261 // expect(builder.split(r'\\server\'), equals([r'\\server\']));
236 }); 262 });
237 }); 263 });
238 264
239 group('normalize', () { 265 group('normalize', () {
240 test('simple cases', () { 266 test('simple cases', () {
241 expect(builder.normalize(''), ''); 267 expect(builder.normalize(''), '.');
242 expect(builder.normalize('.'), '.'); 268 expect(builder.normalize('.'), '.');
243 expect(builder.normalize('..'), '..'); 269 expect(builder.normalize('..'), '..');
244 expect(builder.normalize('a'), 'a'); 270 expect(builder.normalize('a'), 'a');
271 expect(builder.normalize(r'\'), '.');
272 expect(builder.normalize('/'), r'.');
245 expect(builder.normalize('C:/'), r'C:\'); 273 expect(builder.normalize('C:/'), r'C:\');
246 expect(builder.normalize(r'C:\'), r'C:\'); 274 expect(builder.normalize(r'C:\'), r'C:\');
247 expect(builder.normalize(r'\\'), r'\\'); 275 expect(builder.normalize(r'\\'), r'\\');
276 expect(builder.normalize('a\\.\\\xc5\u0bf8-;\u{1f085}\u{00}\\c\\d\\..\\'),
277 'a\\\xc5\u0bf8-;\u{1f085}\u{00}\x5cc');
248 }); 278 });
249 279
250 test('collapses redundant separators', () { 280 test('collapses redundant separators', () {
251 expect(builder.normalize(r'a\b\c'), r'a\b\c'); 281 expect(builder.normalize(r'a\b\c'), r'a\b\c');
252 expect(builder.normalize(r'a\\b\\\c\\\\d'), r'a\b\c\d'); 282 expect(builder.normalize(r'a\\b\\\c\\\\d'), r'a\b\c\d');
253 }); 283 });
254 284
255 test('eliminates "." parts', () { 285 test('eliminates "." parts', () {
256 expect(builder.normalize(r'.\'), '.'); 286 expect(builder.normalize(r'.\'), '.');
257 expect(builder.normalize(r'c:\.'), r'c:\'); 287 expect(builder.normalize(r'c:\.'), r'c:\');
(...skipping 13 matching lines...) Expand all
271 expect(builder.normalize(r'..\'), '..'); 301 expect(builder.normalize(r'..\'), '..');
272 expect(builder.normalize(r'..\..\..'), r'..\..\..'); 302 expect(builder.normalize(r'..\..\..'), r'..\..\..');
273 expect(builder.normalize(r'../..\..\'), r'..\..\..'); 303 expect(builder.normalize(r'../..\..\'), r'..\..\..');
274 // TODO(rnystrom): Is this how Python handles absolute paths on Windows? 304 // TODO(rnystrom): Is this how Python handles absolute paths on Windows?
275 expect(builder.normalize(r'\\..'), r'\\'); 305 expect(builder.normalize(r'\\..'), r'\\');
276 expect(builder.normalize(r'\\..\..\..'), r'\\'); 306 expect(builder.normalize(r'\\..\..\..'), r'\\');
277 expect(builder.normalize(r'\\..\../..\a'), r'\\a'); 307 expect(builder.normalize(r'\\..\../..\a'), r'\\a');
278 expect(builder.normalize(r'c:\..'), r'c:\'); 308 expect(builder.normalize(r'c:\..'), r'c:\');
279 expect(builder.normalize(r'A:/..\..\..'), r'A:\'); 309 expect(builder.normalize(r'A:/..\..\..'), r'A:\');
280 expect(builder.normalize(r'b:\..\..\..\a'), r'b:\a'); 310 expect(builder.normalize(r'b:\..\..\..\a'), r'b:\a');
311 expect(builder.normalize(r'b:\r\..\..\..\a\c\.\..'), r'b:\a');
281 expect(builder.normalize(r'a\..'), '.'); 312 expect(builder.normalize(r'a\..'), '.');
313 expect(builder.normalize(r'..\a'), r'..\a');
314 expect(builder.normalize(r'c:\..\a'), r'c:\a');
315 // A path starting with '\' is not an absolute path on Windows.
316 expect(builder.normalize(r'\..\a'), r'..\a');
282 expect(builder.normalize(r'a\b\..'), 'a'); 317 expect(builder.normalize(r'a\b\..'), 'a');
318 expect(builder.normalize(r'..\a\b\..'), r'..\a');
283 expect(builder.normalize(r'a\..\b'), 'b'); 319 expect(builder.normalize(r'a\..\b'), 'b');
284 expect(builder.normalize(r'a\.\..\b'), 'b'); 320 expect(builder.normalize(r'a\.\..\b'), 'b');
285 expect(builder.normalize(r'a\b\c\..\..\d\e\..'), r'a\d'); 321 expect(builder.normalize(r'a\b\c\..\..\d\e\..'), r'a\d');
286 expect(builder.normalize(r'a\b\..\..\..\..\c'), r'..\..\c'); 322 expect(builder.normalize(r'a\b\..\..\..\..\c'), r'..\..\c');
323 expect(builder.normalize(r'a/b/c/../../..d/./.e/f././'), r'a\..d\.e\f.');
287 }); 324 });
288 325
289 test('removes trailing separators', () { 326 test('removes trailing separators', () {
290 expect(builder.normalize(r'.\'), '.'); 327 expect(builder.normalize(r'.\'), '.');
291 expect(builder.normalize(r'.\\'), '.'); 328 expect(builder.normalize(r'.\\'), '.');
292 expect(builder.normalize(r'a/'), 'a'); 329 expect(builder.normalize(r'a/'), 'a');
293 expect(builder.normalize(r'a\b\'), r'a\b'); 330 expect(builder.normalize(r'a\b\'), r'a\b');
294 expect(builder.normalize(r'a\b\\\'), r'a\b'); 331 expect(builder.normalize(r'a\b\\\'), r'a\b');
295 }); 332 });
296 333
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 Uri.parse('file:///C:/path/to/foo/')); 514 Uri.parse('file:///C:/path/to/foo/'));
478 expect(builder.toUri(r'C:\'), Uri.parse('file:///C:/')); 515 expect(builder.toUri(r'C:\'), Uri.parse('file:///C:/'));
479 expect(builder.toUri(r'\\hostname\'), Uri.parse('file://hostname/')); 516 expect(builder.toUri(r'\\hostname\'), Uri.parse('file://hostname/'));
480 expect(builder.toUri(r'foo\bar'), Uri.parse('foo/bar')); 517 expect(builder.toUri(r'foo\bar'), Uri.parse('foo/bar'));
481 expect(builder.toUri(r'C:\path\to\foo#bar'), 518 expect(builder.toUri(r'C:\path\to\foo#bar'),
482 Uri.parse('file:///C:/path/to/foo%23bar')); 519 Uri.parse('file:///C:/path/to/foo%23bar'));
483 expect(builder.toUri(r'\\hostname\path\to\foo#bar'), 520 expect(builder.toUri(r'\\hostname\path\to\foo#bar'),
484 Uri.parse('file://hostname/path/to/foo%23bar')); 521 Uri.parse('file://hostname/path/to/foo%23bar'));
485 }); 522 });
486 } 523 }
OLDNEW
« no previous file with comments | « pkg/path/test/url_test.dart ('k') | tests/standalone/io/path_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698