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

Side by Side Diff: pkg/front_end/test/memory_file_system_test.dart

Issue 2614063007: Use URIs rather than paths in front end API. (Closed)
Patch Set: Run dartfmt Created 3 years, 11 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
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 // SharedOptions=--supermixin 4 // SharedOptions=--supermixin
5 5
6 library front_end.test.memory_file_system_test; 6 library front_end.test.memory_file_system_test;
7 7
8 import 'dart:convert'; 8 import 'dart:convert';
9 import 'dart:io' as io; 9 import 'dart:io' as io;
10 10
(...skipping 12 matching lines...) Expand all
23 } 23 }
24 24
25 @reflectiveTest 25 @reflectiveTest
26 class FileTest extends _BaseTestNative { 26 class FileTest extends _BaseTestNative {
27 String path; 27 String path;
28 MemoryFileSystemEntity file; 28 MemoryFileSystemEntity file;
29 29
30 setUp() { 30 setUp() {
31 super.setUp(); 31 super.setUp();
32 path = join(tempPath, 'file.txt'); 32 path = join(tempPath, 'file.txt');
33 file = fileSystem.entityForPath(path); 33 file = entityForPath(path);
34 } 34 }
35 35
36 test_equals_differentPaths() { 36 test_equals_differentPaths() {
37 expect( 37 expect(file == entityForPath(join(tempPath, 'file2.txt')), isFalse);
38 file == fileSystem.entityForPath(join(tempPath, 'file2.txt')), isFalse);
39 } 38 }
40 39
41 test_equals_samePath() { 40 test_equals_samePath() {
42 expect( 41 expect(file == entityForPath(join(tempPath, 'file.txt')), isTrue);
43 file == fileSystem.entityForPath(join(tempPath, 'file.txt')), isTrue);
44 } 42 }
45 43
46 test_hashCode_samePath() { 44 test_hashCode_samePath() {
47 expect(file.hashCode, 45 expect(file.hashCode, entityForPath(join(tempPath, 'file.txt')).hashCode);
48 fileSystem.entityForPath(join(tempPath, 'file.txt')).hashCode);
49 } 46 }
50 47
51 test_path() { 48 test_path() {
52 expect(file.path, path); 49 expect(file.uri, fileSystem.context.toUri(path));
53 } 50 }
54 51
55 test_readAsBytes_badUtf8() async { 52 test_readAsBytes_badUtf8() async {
56 // A file containing invalid UTF-8 can still be read as raw bytes. 53 // A file containing invalid UTF-8 can still be read as raw bytes.
57 List<int> bytes = [0xc0, 0x40]; // Invalid UTF-8 54 List<int> bytes = [0xc0, 0x40]; // Invalid UTF-8
58 file.writeAsBytesSync(bytes); 55 file.writeAsBytesSync(bytes);
59 expect(await file.readAsBytes(), bytes); 56 expect(await file.readAsBytes(), bytes);
60 } 57 }
61 58
62 test_readAsBytes_doesNotExist() { 59 test_readAsBytes_doesNotExist() {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 } 118 }
122 119
123 abstract class MemoryFileSystemTestMixin extends _BaseTest { 120 abstract class MemoryFileSystemTestMixin extends _BaseTest {
124 Uri tempUri; 121 Uri tempUri;
125 122
126 setUp() { 123 setUp() {
127 super.setUp(); 124 super.setUp();
128 tempUri = fileSystem.context.toUri(tempPath); 125 tempUri = fileSystem.context.toUri(tempPath);
129 } 126 }
130 127
131 test_entityForPath() { 128 test_currentDirectory_trailingSlash() {
132 var path = join(tempPath, 'file.txt'); 129 // The currentDirectory should already end in a trailing slash.
133 expect(fileSystem.entityForPath(path).path, path); 130 expect(fileSystem.currentDirectory.path, endsWith('/'));
131 // A trailing slash should automatically be appended when creating a
132 // MemoryFileSystem.
133 var path = fileSystem.currentDirectory.path;
134 var currentDirectoryWithoutSlash = fileSystem.currentDirectory
135 .replace(path: path.substring(0, path.length - 1));
136 expect(
137 new MemoryFileSystem(fileSystem.context, currentDirectoryWithoutSlash)
138 .currentDirectory,
139 fileSystem.currentDirectory);
140 // If the currentDirectory supplied to the MemoryFileSystem constructor
141 // already has a trailing slash, no further trailing slash should be added.
142 expect(
143 new MemoryFileSystem(fileSystem.context, fileSystem.currentDirectory)
144 .currentDirectory,
145 fileSystem.currentDirectory);
134 } 146 }
135 147
136 test_entityForPath_absolutize() { 148 test_entityForPath_absolutize() {
137 expect(fileSystem.entityForPath('file.txt').path, 149 expect(entityForPath('file.txt').uri,
138 join(fileSystem.currentDirectory, 'file.txt')); 150 fileSystem.currentDirectory.resolve('file.txt'));
139 } 151 }
140 152
141 test_entityForPath_normalize_dot() { 153 test_entityForPath_normalize_dot() {
142 expect(fileSystem.entityForPath(join(tempPath, '.', 'file.txt')).path, 154 expect(entityForPath(join(tempPath, '.', 'file.txt')).uri,
143 join(tempPath, 'file.txt')); 155 Uri.parse('$tempUri/file.txt'));
144 } 156 }
145 157
146 test_entityForPath_normalize_dotDot() { 158 test_entityForPath_normalize_dotDot() {
147 expect( 159 expect(entityForPath(join(tempPath, 'foo', '..', 'file.txt')).uri,
148 fileSystem.entityForPath(join(tempPath, 'foo', '..', 'file.txt')).path, 160 Uri.parse('$tempUri/file.txt'));
149 join(tempPath, 'file.txt'));
150 } 161 }
151 162
152 test_entityForUri() { 163 test_entityForUri() {
153 expect(fileSystem.entityForUri(Uri.parse('$tempUri/file.txt')).path, 164 expect(fileSystem.entityForUri(Uri.parse('$tempUri/file.txt')).uri,
154 join(tempPath, 'file.txt')); 165 Uri.parse('$tempUri/file.txt'));
155 }
156
157 test_entityForUri_bareUri_absolute() {
158 expect(() => fileSystem.entityForUri(Uri.parse('/file.txt')),
159 throwsA(new isInstanceOf<Error>()));
160 }
161
162 test_entityForUri_bareUri_relative() {
163 expect(() => fileSystem.entityForUri(Uri.parse('file.txt')),
164 throwsA(new isInstanceOf<Error>()));
165 } 166 }
166 167
167 test_entityForUri_fileUri_relative() { 168 test_entityForUri_fileUri_relative() {
168 // A weird quirk of the Uri class is that it doesn't seem possible to create 169 // A weird quirk of the Uri class is that it doesn't seem possible to create
169 // a `file:` uri with a relative path, no matter how many slashes you use or 170 // a `file:` uri with a relative path, no matter how many slashes you use or
170 // if you populate the fields directly. But just to be certain, try to do 171 // if you populate the fields directly. But just to be certain, try to do
171 // so, and make that `file:` uris with relative paths are rejected. 172 // so, and make that `file:` uris with relative paths are rejected.
172 for (var uri in <Uri>[ 173 for (var uri in <Uri>[
173 new Uri(scheme: 'file', path: 'file.txt'), 174 new Uri(scheme: 'file', path: 'file.txt'),
174 Uri.parse('file:file.txt'), 175 Uri.parse('file:file.txt'),
175 Uri.parse('file:/file.txt'), 176 Uri.parse('file:/file.txt'),
176 Uri.parse('file://file.txt'), 177 Uri.parse('file://file.txt'),
177 Uri.parse('file:///file.txt') 178 Uri.parse('file:///file.txt')
178 ]) { 179 ]) {
179 if (!uri.path.startsWith('/')) { 180 if (!uri.path.startsWith('/')) {
180 expect(() => fileSystem.entityForUri(uri), 181 expect(() => fileSystem.entityForUri(uri),
181 throwsA(new isInstanceOf<Error>())); 182 throwsA(new isInstanceOf<Error>()));
182 } 183 }
183 } 184 }
184 } 185 }
185 186
186 test_entityForUri_nonFileUri() { 187 test_entityForUri_nonFileUri() {
187 expect(() => fileSystem.entityForUri(Uri.parse('package:foo/bar.dart')), 188 var uri = Uri.parse('package:foo/bar.dart');
188 throwsA(new isInstanceOf<Error>())); 189 expect(fileSystem.entityForUri(uri).uri, uri);
189 } 190 }
190 191
191 test_entityForUri_normalize_dot() { 192 test_entityForUri_normalize_dot() {
192 expect(fileSystem.entityForUri(Uri.parse('$tempUri/./file.txt')).path, 193 expect(fileSystem.entityForUri(Uri.parse('$tempUri/./file.txt')).uri,
193 join(tempPath, 'file.txt')); 194 Uri.parse('$tempUri/file.txt'));
194 } 195 }
195 196
196 test_entityForUri_normalize_dotDot() { 197 test_entityForUri_normalize_dotDot() {
197 expect(fileSystem.entityForUri(Uri.parse('$tempUri/foo/../file.txt')).path, 198 expect(fileSystem.entityForUri(Uri.parse('$tempUri/foo/../file.txt')).uri,
198 join(tempPath, 'file.txt')); 199 Uri.parse('$tempUri/file.txt'));
199 } 200 }
200 } 201 }
201 202
202 @reflectiveTest 203 @reflectiveTest
203 class MemoryFileSystemTestNative extends _BaseTestNative 204 class MemoryFileSystemTestNative extends _BaseTestNative
204 with MemoryFileSystemTestMixin {} 205 with MemoryFileSystemTestMixin {}
205 206
206 @reflectiveTest 207 @reflectiveTest
207 class MemoryFileSystemTestPosix extends _BaseTestPosix 208 class MemoryFileSystemTestPosix extends _BaseTestPosix
208 with MemoryFileSystemTestMixin {} 209 with MemoryFileSystemTestMixin {}
209 210
210 @reflectiveTest 211 @reflectiveTest
211 class MemoryFileSystemTestWindows extends _BaseTestWindows 212 class MemoryFileSystemTestWindows extends _BaseTestWindows
212 with MemoryFileSystemTestMixin {} 213 with MemoryFileSystemTestMixin {}
213 214
214 abstract class _BaseTest { 215 abstract class _BaseTest {
215 MemoryFileSystem get fileSystem; 216 MemoryFileSystem get fileSystem;
217
216 String get tempPath; 218 String get tempPath;
219
220 MemoryFileSystemEntity entityForPath(String path) =>
221 fileSystem.entityForUri(fileSystem.context.toUri(path));
222
217 String join(String path1, String path2, [String path3, String path4]); 223 String join(String path1, String path2, [String path3, String path4]);
224
218 void setUp(); 225 void setUp();
219 } 226 }
220 227
221 class _BaseTestNative extends _BaseTest { 228 class _BaseTestNative extends _BaseTest {
222 MemoryFileSystem fileSystem; 229 MemoryFileSystem fileSystem;
223 String tempPath; 230 String tempPath;
224 231
225 String join(String path1, String path2, [String path3, String path4]) => 232 String join(String path1, String path2, [String path3, String path4]) =>
226 pathos.join(path1, path2, path3, path4); 233 pathos.join(path1, path2, path3, path4);
227 234
228 setUp() { 235 setUp() {
229 tempPath = pathos.join(io.Directory.systemTemp.path, 'test_file_system'); 236 tempPath = pathos.join(io.Directory.systemTemp.path, 'test_file_system');
230 fileSystem = 237 fileSystem = new MemoryFileSystem(
231 new MemoryFileSystem(pathos.context, io.Directory.current.path); 238 pathos.context, pathos.toUri(io.Directory.current.path));
232 } 239 }
233 } 240 }
234 241
235 class _BaseTestPosix extends _BaseTest { 242 class _BaseTestPosix extends _BaseTest {
236 MemoryFileSystem fileSystem; 243 MemoryFileSystem fileSystem;
237 String tempPath; 244 String tempPath;
238 245
239 String join(String path1, String path2, [String path3, String path4]) => 246 String join(String path1, String path2, [String path3, String path4]) =>
240 pathos.posix.join(path1, path2, path3, path4); 247 pathos.posix.join(path1, path2, path3, path4);
241 248
242 void setUp() { 249 void setUp() {
243 tempPath = '/test_file_system'; 250 tempPath = '/test_file_system';
244 fileSystem = new MemoryFileSystem(pathos.posix, '/cwd'); 251 fileSystem = new MemoryFileSystem(pathos.posix, Uri.parse('file:///cwd'));
245 } 252 }
246 } 253 }
247 254
248 class _BaseTestWindows extends _BaseTest { 255 class _BaseTestWindows extends _BaseTest {
249 MemoryFileSystem fileSystem; 256 MemoryFileSystem fileSystem;
250 String tempPath; 257 String tempPath;
251 258
252 String join(String path1, String path2, [String path3, String path4]) => 259 String join(String path1, String path2, [String path3, String path4]) =>
253 pathos.windows.join(path1, path2, path3, path4); 260 pathos.windows.join(path1, path2, path3, path4);
254 261
255 void setUp() { 262 void setUp() {
256 tempPath = r'c:\test_file_system'; 263 tempPath = r'c:\test_file_system';
257 fileSystem = new MemoryFileSystem(pathos.windows, r'c:\cwd'); 264 fileSystem =
265 new MemoryFileSystem(pathos.windows, Uri.parse('file:///c:/cwd'));
258 } 266 }
259 } 267 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698