Index: tests/standalone/src/io/FileTest.dart |
diff --git a/tests/standalone/src/io/FileTest.dart b/tests/standalone/src/io/FileTest.dart |
index df49cf83a652ff6bcee8c9d3731753df7bfd58c3..085a755eaaa7c5c13c537b18fc324a95a7767277 100644 |
--- a/tests/standalone/src/io/FileTest.dart |
+++ b/tests/standalone/src/io/FileTest.dart |
@@ -534,6 +534,207 @@ class FileTest { |
Expect.throws(file_dir.directorySync, (e) { return e is FileIOException; }); |
} |
+ static void testFileError() { |
+ bool checkOpenNonExistentFileException(e) { |
+ Expect.isTrue(e is FileIOException); |
+ Expect.isTrue(e.osError != null); |
+ Expect.isTrue(e.toString().indexOf("Cannot open file") != -1); |
+ Platform platform = new Platform(); |
+ if (platform.operatingSystem() == "linux") { |
+ Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); |
+ } |
+ else if (platform.operatingSystem() == "macos") { |
+ Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); |
+ } |
+ else if (platform.operatingSystem() == "windows") { |
+ Expect.isTrue( |
+ e.toString().indexOf( |
+ "The system cannot find the file specified") != -1); |
+ } |
+ // File not not found has error code 2 on all supported platforms. |
+ Expect.equals(2, e.osError.errorCode); |
+ |
+ return true; |
+ } |
+ |
+ bool checkDeleteNonExistentFileException(e) { |
+ Expect.isTrue(e is FileIOException); |
+ Expect.isTrue(e.osError != null); |
+ Expect.isTrue(e.toString().indexOf("Cannot delete file") != -1); |
+ Platform platform = new Platform(); |
+ if (platform.operatingSystem() == "linux") { |
+ Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); |
+ } |
+ else if (platform.operatingSystem() == "macos") { |
+ Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); |
+ } |
+ else if (platform.operatingSystem() == "windows") { |
+ Expect.isTrue( |
+ e.toString().indexOf( |
+ "The system cannot find the file specified") != -1); |
+ } |
+ // File not not found has error code 2 on all supported platforms. |
+ Expect.equals(2, e.osError.errorCode); |
+ |
+ return true; |
+ } |
+ |
+ bool checkCreateInNonExistentDirectoryException(e) { |
+ Expect.isTrue(e is FileIOException); |
+ Expect.isTrue(e.osError != null); |
+ Expect.isTrue(e.toString().indexOf("Cannot create file") != -1); |
+ Platform platform = new Platform(); |
+ if (platform.operatingSystem() == "linux") { |
+ Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); |
+ Expect.equals(2, e.osError.errorCode); |
+ } |
+ else if (platform.operatingSystem() == "macos") { |
+ Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); |
+ Expect.equals(2, e.osError.errorCode); |
+ } |
+ else if (platform.operatingSystem() == "windows") { |
+ Expect.isTrue( |
+ e.toString().indexOf( |
+ "The system cannot find the path specified") != -1); |
+ Expect.equals(3, e.osError.errorCode); |
+ } |
+ |
+ return true; |
+ } |
+ |
+ bool checkFullPathOnNonExistentDirectoryException(e) { |
+ Expect.isTrue(e is FileIOException); |
+ Expect.isTrue(e.osError != null); |
+ Expect.isTrue(e.toString().indexOf("Cannot retrieve full path") != -1); |
+ Platform platform = new Platform(); |
+ if (platform.operatingSystem() == "linux") { |
+ Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); |
+ } |
+ else if (platform.operatingSystem() == "macos") { |
+ Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); |
+ } |
+ else if (platform.operatingSystem() == "windows") { |
+ Expect.isTrue( |
+ e.toString().indexOf( |
+ "The system cannot find the file specified") != -1); |
+ } |
+ // File not not found has error code 2 on all supported platforms. |
+ Expect.equals(2, e.osError.errorCode); |
+ |
+ return true; |
+ } |
+ |
+ bool checkDirectoryInNonExistentDirectoryException(e) { |
+ Expect.isTrue(e is FileIOException); |
+ Expect.isTrue(e.osError != null); |
+ Expect.isTrue( |
+ e.toString().indexOf("Cannot retrieve directory for file") != -1); |
+ Platform platform = new Platform(); |
+ if (platform.operatingSystem() == "linux") { |
+ Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); |
+ } |
+ else if (platform.operatingSystem() == "macos") { |
+ Expect.isTrue(e.toString().indexOf("No such file or directory") != -1); |
+ } |
+ else if (platform.operatingSystem() == "windows") { |
+ Expect.isTrue( |
+ e.toString().indexOf( |
+ "The system cannot find the file specified") != -1); |
+ } |
+ // File not not found has error code 2 on all supported platforms. |
+ Expect.equals(2, e.osError.errorCode); |
+ |
+ return true; |
+ } |
+ |
+ var tempDir = tempDirectory.path; |
+ { |
Mads Ager (google)
2012/03/13 10:56:17
How about lifting the helpers to the top level and
Søren Gjesse
2012/03/13 12:39:49
Split into individual tests and moved to a separat
|
+ var file = new File("${tempDir}/nonExistentFile1"); |
+ |
+ // Non-existing file should throw exception. |
+ Expect.throws(() => file.openSync(), |
+ (e) => checkOpenNonExistentFileException(e)); |
+ |
+ file.open(FileMode.READ, (raf) => Expect.fail("Unreachable code")); |
+ file.onError = (e) => checkOpenNonExistentFileException(e); |
+ } |
+ |
+ { |
+ var file = new File("${tempDir}/nonExistentFile2"); |
+ |
+ // Non-existing file should throw exception. |
+ Expect.throws(() => file.deleteSync(), |
+ (e) => checkDeleteNonExistentFileException(e)); |
+ |
+ file.delete(() => Expect.fail("Unreachable code")); |
+ file.onError = (e) => checkDeleteNonExistentFileException(e); |
+ } |
+ |
+ { |
+ var file = new File("${tempDir}/nonExistentDirectory/newFile"); |
+ |
+ // Create in non-existent directory should throw exception. |
+ Expect.throws(() => file.createSync(), |
+ (e) => checkCreateInNonExistentDirectoryException(e)); |
+ |
+ file.create(() => Expect.fail("Unreachable code")); |
+ file.onError = (e) => checkCreateInNonExistentDirectoryException(e); |
+ } |
+ |
+ { |
+ var file = new File("${tempDir}/nonExistentDirectory"); |
+ |
+ // Create in non-existent directory should throw exception. |
+ Expect.throws(() => file.fullPathSync(), |
+ (e) => checkFullPathOnNonExistentDirectoryException(e)); |
+ |
+ file.fullPath((path) => Expect.fail("Unreachable code $path")); |
+ file.onError = (e) => checkFullPathOnNonExistentDirectoryException(e); |
+ } |
+ |
+ { |
+ var file = new File("${tempDir}/nonExistentDirectory/newFile"); |
+ |
+ // Create in non-existent directory should throw exception. |
+ Expect.throws(() => file.directorySync(), |
+ (e) => checkDirectoryInNonExistentDirectoryException(e)); |
+ |
+ file.directory((directory) => Expect.fail("Unreachable code")); |
+ file.onError = (e) => checkDirectoryInNonExistentDirectoryException(e); |
+ } |
+ |
+ { |
+ var file = new File("${tempDir}/nonExistentFile3"); |
+ |
+ // Non-existing file should throw exception. |
+ Expect.throws(() => file.readAsBytesSync(), |
+ (e) => checkOpenNonExistentFileException(e)); |
+ |
+ // TODO(sgjesse): Handle error for file.readAsBytes as well. |
+ } |
+ |
+ { |
+ var file = new File("${tempDir}/nonExistentFile4"); |
+ |
+ // Non-existing file should throw exception. |
+ Expect.throws(() => file.readAsTextSync(), |
+ (e) => checkOpenNonExistentFileException(e)); |
+ |
+ // TODO(sgjesse): Handle error for file.readAsText as well. |
+ } |
+ |
+ { |
+ var file = new File("${tempDir}/nonExistentFile5"); |
+ |
+ // Non-existing file should throw exception. |
+ Expect.throws(() => file.readAsLinesSync(), |
+ (e) => checkOpenNonExistentFileException(e)); |
+ |
+ // TODO(sgjesse): Handle error for file.readAsLines as well. |
+ } |
+ } |
+ |
+ |
// Test for file length functionality. |
static void testLength() { |
String filename = getFilename("tests/vm/data/fixed_length_file"); |
@@ -1106,6 +1307,7 @@ class FileTest { |
testWriteVariousLists(); |
testDirectory(); |
testDirectorySync(); |
+ testFileError(); |
}); |
} |
} |