| // 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. |
| |
| // @dart = 2.9 |
| |
| import "package:expect/expect.dart"; |
| import "dart:async"; |
| import "dart:io"; |
| |
| Future throws(callback()) { |
| return new Future.value().then((_) => callback()).then((_) { |
| throw "Expected error"; |
| }, onError: (_) {}); |
| } |
| |
| void testDeleteFileSync() { |
| var tmp = Directory.systemTemp.createTempSync('dart_file_system_delete'); |
| var path = "${tmp.path}${Platform.pathSeparator}"; |
| |
| var file = new File("${path}myFile"); |
| |
| file.createSync(); |
| |
| Expect.isTrue(file.existsSync()); |
| new File(file.path).deleteSync(); |
| Expect.isFalse(file.existsSync()); |
| |
| file.createSync(); |
| |
| Expect.isTrue(file.existsSync()); |
| new Directory(file.path).deleteSync(recursive: true); |
| Expect.isFalse(file.existsSync()); |
| |
| file.createSync(); |
| |
| Expect.isTrue(file.existsSync()); |
| Expect.throws(() => new Directory(file.path).deleteSync()); |
| Expect.isTrue(file.existsSync()); |
| |
| Expect.isTrue(file.existsSync()); |
| Expect.throws(() => new Link(file.path).deleteSync()); |
| Expect.isTrue(file.existsSync()); |
| |
| file.deleteSync(); |
| Expect.isFalse(file.existsSync()); |
| |
| tmp.deleteSync(); |
| } |
| |
| void testDeleteFile() { |
| Directory.systemTemp.createTemp('dart_file_system_delete').then((tmp) { |
| var path = "${tmp.path}${Platform.pathSeparator}"; |
| var file = new File("${path}myFile"); |
| return file |
| .create() |
| .then((_) => file.exists().then(Expect.isTrue)) |
| .then((_) => new File(file.path).delete()) |
| .then((_) => file.exists().then(Expect.isFalse)) |
| .then((_) => file.create()) |
| .then((_) => file.exists().then(Expect.isTrue)) |
| .then((_) => new Directory(file.path).delete(recursive: true)) |
| .then((_) => file.exists().then(Expect.isFalse)) |
| .then((_) => file.create()) |
| .then((_) => file.exists().then(Expect.isTrue)) |
| .then((_) => throws(() => new Directory(file.path).delete())) |
| .then((_) => file.exists().then(Expect.isTrue)) |
| .then((_) => file.exists().then(Expect.isTrue)) |
| .then((_) => throws(() => new Link(file.path).delete())) |
| .then((_) => file.exists().then(Expect.isTrue)) |
| .then((_) => file.delete()) |
| .then((_) => tmp.delete()); |
| }); |
| } |
| |
| void testDeleteDirectorySync() { |
| var tmp = Directory.systemTemp.createTempSync('dart_file_system_delete'); |
| var path = "${tmp.path}${Platform.pathSeparator}"; |
| |
| var dir = new Directory("${path}myDirectory"); |
| |
| dir.createSync(); |
| |
| Expect.isTrue(dir.existsSync()); |
| new Directory(dir.path).deleteSync(); |
| Expect.isFalse(dir.existsSync()); |
| |
| dir.createSync(); |
| |
| Expect.isTrue(dir.existsSync()); |
| new Directory(dir.path).deleteSync(recursive: true); |
| Expect.isFalse(dir.existsSync()); |
| |
| dir.createSync(); |
| |
| Expect.isTrue(dir.existsSync()); |
| Expect.throws(() => new File(dir.path).deleteSync()); |
| Expect.isTrue(dir.existsSync()); |
| |
| Expect.isTrue(dir.existsSync()); |
| Expect.throws(() => new Link(dir.path).deleteSync()); |
| Expect.isTrue(dir.existsSync()); |
| |
| dir.deleteSync(); |
| Expect.isFalse(dir.existsSync()); |
| |
| tmp.deleteSync(); |
| } |
| |
| void testDeleteDirectory() { |
| Directory.systemTemp.createTemp('dart_file_system_delete').then((tmp) { |
| var path = "${tmp.path}${Platform.pathSeparator}"; |
| var dir = new Directory("${path}myDirectory"); |
| return dir |
| .create() |
| .then((_) => dir.exists().then(Expect.isTrue)) |
| .then((_) => new Directory(dir.path).delete()) |
| .then((_) => dir.exists().then(Expect.isFalse)) |
| .then((_) => dir.create()) |
| .then((_) => dir.exists().then(Expect.isTrue)) |
| .then((_) => new Directory(dir.path).delete(recursive: true)) |
| .then((_) => dir.exists().then(Expect.isFalse)) |
| .then((_) => dir.create()) |
| .then((_) => dir.exists().then(Expect.isTrue)) |
| .then((_) => throws(() => new File(dir.path).delete())) |
| .then((_) => dir.exists().then(Expect.isTrue)) |
| .then((_) => dir.exists().then(Expect.isTrue)) |
| .then((_) => throws(() => new Link(dir.path).delete())) |
| .then((_) => dir.exists().then(Expect.isTrue)) |
| .then((_) => dir.delete()) |
| .then((_) => tmp.delete()); |
| }); |
| } |
| |
| void testDeleteFileLinkSync() { |
| var tmp = Directory.systemTemp.createTempSync('dart_file_system_delete'); |
| var path = "${tmp.path}${Platform.pathSeparator}"; |
| |
| var file = new File("${path}myFile"); |
| file.createSync(); |
| |
| var link = new Link("${path}myLink"); |
| |
| link.createSync(file.path); |
| |
| Expect.isTrue(link.existsSync()); |
| new File(link.path).deleteSync(); |
| Expect.isFalse(link.existsSync()); |
| |
| link.createSync(file.path); |
| |
| Expect.isTrue(link.existsSync()); |
| new Link(link.path).deleteSync(); |
| Expect.isFalse(link.existsSync()); |
| |
| link.createSync(file.path); |
| |
| Expect.isTrue(link.existsSync()); |
| new Directory(link.path).deleteSync(recursive: true); |
| Expect.isFalse(link.existsSync()); |
| |
| link.createSync(file.path); |
| |
| Expect.isTrue(link.existsSync()); |
| Expect.throws(() => new Directory(link.path).deleteSync()); |
| Expect.isTrue(link.existsSync()); |
| |
| link.deleteSync(); |
| Expect.isFalse(link.existsSync()); |
| |
| Expect.isTrue(file.existsSync()); |
| file.deleteSync(); |
| Expect.isFalse(file.existsSync()); |
| |
| tmp.deleteSync(); |
| } |
| |
| void testDeleteFileLink() { |
| Directory.systemTemp.createTemp('dart_file_system_delete').then((tmp) { |
| var path = "${tmp.path}${Platform.pathSeparator}"; |
| var file = new File("${path}myFile"); |
| var link = new Link("${path}myLink"); |
| return file |
| .create() |
| .then((_) => link.create(file.path)) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => new File(link.path).delete()) |
| .then((_) => link.exists().then(Expect.isFalse)) |
| .then((_) => link.create(file.path)) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => new Link(link.path).delete()) |
| .then((_) => link.exists().then(Expect.isFalse)) |
| .then((_) => link.create(file.path)) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => new Directory(link.path).delete(recursive: true)) |
| .then((_) => link.exists().then(Expect.isFalse)) |
| .then((_) => link.create(file.path)) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => throws(() => new Directory(link.path).delete())) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => link.deleteSync()) |
| .then((_) => link.exists().then(Expect.isFalse)) |
| .then((_) => file.exists().then(Expect.isTrue)) |
| .then((_) => file.delete()) |
| .then((_) => file.exists().then(Expect.isFalse)) |
| .then((_) => tmp.delete()); |
| }); |
| } |
| |
| void testDeleteDirectoryLinkSync() { |
| var tmp = Directory.systemTemp.createTempSync('dart_file_system_delete'); |
| var path = "${tmp.path}${Platform.pathSeparator}"; |
| |
| var directory = new Directory("${path}myDirectory"); |
| directory.createSync(); |
| |
| var link = new Link("${path}myLink"); |
| |
| link.createSync(directory.path); |
| |
| Expect.isTrue(link.existsSync()); |
| new Link(link.path).deleteSync(); |
| Expect.isFalse(link.existsSync()); |
| |
| link.createSync(directory.path); |
| |
| Expect.isTrue(link.existsSync()); |
| new Directory(link.path).deleteSync(); |
| Expect.isFalse(link.existsSync()); |
| |
| link.createSync(directory.path); |
| |
| Expect.isTrue(link.existsSync()); |
| new Directory(link.path).deleteSync(recursive: true); |
| Expect.isFalse(link.existsSync()); |
| |
| link.createSync(directory.path); |
| |
| Expect.isTrue(link.existsSync()); |
| Expect.throws(() => new File(link.path).deleteSync()); |
| Expect.isTrue(link.existsSync()); |
| |
| link.deleteSync(); |
| Expect.isFalse(link.existsSync()); |
| |
| Expect.isTrue(directory.existsSync()); |
| directory.deleteSync(); |
| Expect.isFalse(directory.existsSync()); |
| |
| tmp.deleteSync(); |
| } |
| |
| void testDeleteDirectoryLink() { |
| Directory.systemTemp.createTemp('dart_file_system_delete').then((tmp) { |
| var path = "${tmp.path}${Platform.pathSeparator}"; |
| var dir = new Directory("${path}myDir"); |
| var link = new Link("${path}myLink"); |
| return dir |
| .create() |
| .then((_) => link.create(dir.path)) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => new Directory(link.path).delete()) |
| .then((_) => link.exists().then(Expect.isFalse)) |
| .then((_) => link.create(dir.path)) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => new Directory(link.path).delete(recursive: true)) |
| .then((_) => link.exists().then(Expect.isFalse)) |
| .then((_) => link.create(dir.path)) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => new Link(link.path).delete()) |
| .then((_) => link.exists().then(Expect.isFalse)) |
| .then((_) => link.create(dir.path)) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => throws(() => new File(link.path).delete())) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => link.deleteSync()) |
| .then((_) => link.exists().then(Expect.isFalse)) |
| .then((_) => dir.exists().then(Expect.isTrue)) |
| .then((_) => dir.delete()) |
| .then((_) => dir.exists().then(Expect.isFalse)) |
| .then((_) => tmp.delete()); |
| }); |
| } |
| |
| void testDeleteBrokenLinkSync() { |
| var tmp = Directory.systemTemp.createTempSync('dart_file_system_delete'); |
| var path = "${tmp.path}${Platform.pathSeparator}"; |
| |
| var directory = new Directory("${path}myDirectory"); |
| directory.createSync(); |
| |
| var link = new Link("${path}myLink"); |
| |
| link.createSync(directory.path); |
| directory.deleteSync(); |
| |
| Expect.isTrue(link.existsSync()); |
| new Link(link.path).deleteSync(); |
| Expect.isFalse(link.existsSync()); |
| |
| directory.createSync(); |
| link.createSync(directory.path); |
| directory.deleteSync(); |
| |
| Expect.isTrue(link.existsSync()); |
| new Directory(link.path).deleteSync(recursive: true); |
| Expect.isFalse(link.existsSync()); |
| |
| directory.createSync(); |
| link.createSync(directory.path); |
| directory.deleteSync(); |
| |
| Expect.isTrue(link.existsSync()); |
| Expect.throws(() => new Directory(link.path).deleteSync()); |
| Expect.isTrue(link.existsSync()); |
| |
| Expect.isTrue(link.existsSync()); |
| Expect.throws(() => new File(link.path).deleteSync()); |
| Expect.isTrue(link.existsSync()); |
| |
| link.deleteSync(); |
| Expect.isFalse(link.existsSync()); |
| |
| tmp.deleteSync(); |
| } |
| |
| void testDeleteBrokenLink() { |
| Directory.systemTemp.createTemp('dart_file_system_delete').then((tmp) { |
| var path = "${tmp.path}${Platform.pathSeparator}"; |
| var dir = new Directory("${path}myDir"); |
| var link = new Link("${path}myLink"); |
| return dir |
| .create() |
| .then((_) => link.create(dir.path)) |
| .then((_) => dir.delete()) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => new Link(link.path).delete()) |
| .then((_) => link.exists().then(Expect.isFalse)) |
| .then((_) => dir.create()) |
| .then((_) => link.create(dir.path)) |
| .then((_) => dir.delete()) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => new Directory(link.path).delete(recursive: true)) |
| .then((_) => link.exists().then(Expect.isFalse)) |
| .then((_) => dir.create()) |
| .then((_) => link.create(dir.path)) |
| .then((_) => dir.delete()) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => throws(() => new Directory(link.path).delete())) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => throws(() => new File(link.path).delete())) |
| .then((_) => link.exists().then(Expect.isTrue)) |
| .then((_) => link.deleteSync()) |
| .then((_) => link.exists().then(Expect.isFalse)) |
| .then((_) => tmp.delete()); |
| }); |
| } |
| |
| void main() { |
| testDeleteFileSync(); |
| testDeleteFile(); |
| testDeleteDirectorySync(); |
| testDeleteDirectory(); |
| if (Platform.operatingSystem != 'windows') { |
| testDeleteFileLinkSync(); |
| testDeleteFileLink(); |
| } |
| testDeleteDirectoryLinkSync(); |
| testDeleteDirectoryLink(); |
| testDeleteBrokenLinkSync(); |
| testDeleteBrokenLink(); |
| } |