Index: tests/standalone/io/file_system_delete_test.dart |
diff --git a/tests/standalone/io/file_system_delete_test.dart b/tests/standalone/io/file_system_delete_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8768ed7a0ca3c6536d4eb488de24c8aa39c4ddc8 |
--- /dev/null |
+++ b/tests/standalone/io/file_system_delete_test.dart |
@@ -0,0 +1,393 @@ |
+// 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. |
+ |
+import "dart:async"; |
+import "dart:io"; |
+ |
+Future throws(callback()) { |
+ return new Future.immediate(null) |
+ .then((_) => callback()) |
+ .then((_) { throw "Expected error"; }, |
+ onError: (_) {}); |
+} |
+ |
+void testDeleteFileSync() { |
+ var tmp = new Directory("").createTempSync(); |
+ 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()); |
+ Expect.throws(() => new Directory(file.path).deleteSync()); |
+ Expect.isTrue(file.existsSync()); |
+ |
+ Expect.isTrue(file.existsSync()); |
+ Expect.throws(() => new Directory(file.path).deleteSync(recursive: true)); |
+ 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() { |
+ new Directory("").createTemp().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((_) => throws(() => new Directory(file.path).delete())) |
+ .then((_) => file.exists().then(Expect.isTrue)) |
+ |
+ .then((_) => file.exists().then(Expect.isTrue)) |
+ .then((_) => throws( |
+ () => new Directory(file.path).delete(recursive: true))) |
+ .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 = new Directory("").createTempSync(); |
+ 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() { |
+ new Directory("").createTemp().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 = new Directory("").createTempSync(); |
+ 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()); |
+ Expect.throws(() => new Directory(link.path).deleteSync()); |
+ Expect.isTrue(link.existsSync()); |
+ |
+ Expect.isTrue(link.existsSync()); |
+ Expect.throws(() => new Directory(link.path).deleteSync(recursive: true)); |
+ Expect.isTrue(link.existsSync()); |
+ |
+ link.deleteSync(); |
+ Expect.isFalse(link.existsSync()); |
+ |
+ Expect.isTrue(file.existsSync()); |
+ file.deleteSync(); |
+ Expect.isFalse(file.existsSync()); |
+ |
+ tmp.deleteSync(); |
+} |
+ |
+void testDeleteFileLink() { |
+ new Directory("").createTemp().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((_) => throws(() => new Directory(link.path).delete())) |
+ .then((_) => link.exists().then(Expect.isTrue)) |
+ |
+ .then((_) => link.exists().then(Expect.isTrue)) |
+ .then((_) => throws( |
+ () => new Directory(link.path).delete(recursive: true))) |
+ .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 = new Directory("").createTempSync(); |
+ 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() { |
+ new Directory("").createTemp().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 = new Directory("").createTempSync(); |
+ 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()); |
+ Expect.throws(() => new Directory(link.path).deleteSync()); |
+ Expect.isTrue(link.existsSync()); |
+ |
+ Expect.isTrue(link.existsSync()); |
+ Expect.throws(() => new Directory(link.path).deleteSync(recursive: true)); |
+ 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() { |
+ new Directory("").createTemp().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((_) => throws(() => new Directory(link.path).delete())) |
+ .then((_) => link.exists().then(Expect.isTrue)) |
+ |
+ .then((_) => link.exists().then(Expect.isTrue)) |
+ .then((_) => throws( |
+ () => new Directory(link.path).delete(recursive: true))) |
+ .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(); |
+} |