OLD | NEW |
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 import "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
6 import "package:path/path.dart"; | 6 import "package:path/path.dart"; |
7 import "dart:async"; | 7 import "dart:async"; |
8 import "dart:io"; | 8 import "dart:io"; |
9 import "dart:isolate"; | 9 import "dart:isolate"; |
10 | 10 |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 baseDir.deleteSync(recursive: true); | 193 baseDir.deleteSync(recursive: true); |
194 } | 194 } |
195 | 195 |
196 void testLinkErrorSync() { | 196 void testLinkErrorSync() { |
197 Expect.throws(() => | 197 Expect.throws(() => |
198 new Link('some-dir-that-doent exist/some link file/bla/fisk').createSync( | 198 new Link('some-dir-that-doent exist/some link file/bla/fisk').createSync( |
199 'bla bla bla/b lalal/blfir/sdfred/es'), | 199 'bla bla bla/b lalal/blfir/sdfred/es'), |
200 (e) => e is LinkException); | 200 (e) => e is LinkException); |
201 } | 201 } |
202 | 202 |
| 203 checkExists(String filePath) => Expect.isTrue(new File(filePath).existsSync()); |
| 204 |
| 205 testRelativeLinksSync() { |
| 206 Directory tempDirectory = new Directory('').createTempSync(); |
| 207 String temp = tempDirectory.path; |
| 208 String oldWorkingDirectory = Directory.current.path; |
| 209 // Make directories and files to test links. |
| 210 new Directory(join(temp, 'dir1', 'dir2')).createSync(recursive: true); |
| 211 new File(join(temp, 'dir1', 'file1')).createSync(); |
| 212 new File(join(temp, 'dir1', 'dir2', 'file2')).createSync(); |
| 213 // Make links whose path and/or target is given by a relative path. |
| 214 new Link(join(temp, 'dir1', 'link1_2')).createSync('dir2'); |
| 215 Directory.current = temp; |
| 216 new Link('link0_2').createSync(join('dir1', 'dir2')); |
| 217 new Link(join('dir1', 'link1_0')).createSync('..'); |
| 218 Directory.current = 'dir1'; |
| 219 new Link(join('..', 'link0_1')).createSync('dir1'); |
| 220 new Link(join('dir2', 'link2_1')).createSync(join(temp, 'dir1')); |
| 221 new Link(join(temp, 'dir1', 'dir2', 'link2_0')).createSync(join('..', '..')); |
| 222 // Test that the links go to the right targets. |
| 223 checkExists(join('..', 'link0_1', 'file1')); |
| 224 checkExists(join('..', 'link0_2', 'file2')); |
| 225 checkExists(join('link1_0', 'dir1', 'file1')); |
| 226 checkExists(join('link1_2', 'file2')); |
| 227 checkExists(join('dir2', 'link2_0', 'dir1', 'file1')); |
| 228 checkExists(join('dir2', 'link2_1', 'file1')); |
| 229 // Clean up |
| 230 Directory.current = oldWorkingDirectory; |
| 231 tempDirectory.deleteSync(recursive: true); |
| 232 } |
| 233 |
203 main() { | 234 main() { |
204 testCreateSync(); | 235 testCreateSync(); |
205 testCreateLoopingLink(); | 236 testCreateLoopingLink(); |
206 testRenameSync(); | 237 testRenameSync(); |
207 testLinkErrorSync(); | 238 testLinkErrorSync(); |
| 239 testRelativeLinksSync(); |
208 } | 240 } |
OLD | NEW |