| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| // |
| // Directory listing test. |
| |
| // @dart = 2.9 |
| |
| import "dart:io"; |
| |
| import "package:async_helper/async_helper.dart"; |
| import "package:expect/expect.dart"; |
| |
| testChangeDirectory() { |
| asyncStart(); |
| Directory.systemTemp.createTemp('dart_directory_chdir').then((temp) { |
| var initialCurrent = Directory.current; |
| Directory.current = temp; |
| var newCurrent = Directory.current; |
| new File("111").createSync(); |
| var dir = new Directory(newCurrent.path + Platform.pathSeparator + "222"); |
| dir.createSync(); |
| Directory.current = dir; |
| new File("333").createSync(); |
| Expect.isTrue(new File("333").existsSync()); |
| Expect.isTrue(new File("../111").existsSync()); |
| Directory.current = ".."; |
| Expect.isTrue(new File("111").existsSync()); |
| Expect.isTrue(new File("222/333").existsSync()); |
| // Deleting the current working directory causes an error. |
| // On Windows, the deletion fails, and on non-Windows, the getter fails. |
| Expect.throws(() { |
| temp.deleteSync(recursive: true); |
| Directory.current; |
| }, (e) => e is FileSystemException); |
| Directory.current = initialCurrent; |
| Directory.current; |
| if (temp.existsSync()) temp.deleteSync(recursive: true); |
| asyncEnd(); |
| }); |
| } |
| |
| testChangeDirectoryIllegalArguments() { |
| Expect.throwsArgumentError(() => Directory.current = 1); |
| Expect.throwsArgumentError(() => Directory.current = 9223372036854775807); |
| Expect.throwsArgumentError(() => Directory.current = true); |
| Expect.throwsArgumentError(() => Directory.current = []); |
| Expect.throwsArgumentError(() => Directory.current = new File("xxx")); |
| } |
| |
| main() { |
| testChangeDirectory(); |
| testChangeDirectoryIllegalArguments(); |
| } |