| Index: tests/standalone/src/io/FileErrorTest.dart
|
| diff --git a/tests/standalone/src/io/FileErrorTest.dart b/tests/standalone/src/io/FileErrorTest.dart
|
| deleted file mode 100644
|
| index 40f2b62c9b3b2cfb7c4a05c7efecd16e7b0683f7..0000000000000000000000000000000000000000
|
| --- a/tests/standalone/src/io/FileErrorTest.dart
|
| +++ /dev/null
|
| @@ -1,465 +0,0 @@
|
| -// Copyright (c) 2012, 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 test program for testing error handling in file I/O.
|
| -
|
| -#import("dart:io");
|
| -#import("dart:isolate");
|
| -
|
| -Directory tempDir() {
|
| - var d = new Directory('');
|
| - d.createTempSync();
|
| - return d;
|
| -}
|
| -
|
| -
|
| -bool checkNonExistentFileException(e, str) {
|
| - Expect.isTrue(e is FileIOException);
|
| - Expect.isTrue(e.osError != null);
|
| - Expect.isTrue(e.toString().indexOf(str) != -1);
|
| - 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 checkOpenNonExistentFileException(e) {
|
| - return checkNonExistentFileException(e, "Cannot open file");
|
| -}
|
| -
|
| -
|
| -bool checkDeleteNonExistentFileException(e) {
|
| - return checkNonExistentFileException(e, "Cannot delete file");
|
| -}
|
| -
|
| -
|
| -bool checkLengthNonExistentFileException(e) {
|
| - return checkNonExistentFileException(e, "Cannot retrieve length of file");
|
| -}
|
| -
|
| -
|
| -void testOpenNonExistent() {
|
| - Directory temp = tempDir();
|
| - ReceivePort p = new ReceivePort();
|
| - p.receive((x, y) {
|
| - p.close();
|
| - temp.deleteRecursivelySync();
|
| - });
|
| - var file = new File("${temp.path}/nonExistentFile");
|
| -
|
| - // 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);
|
| - p.toSendPort().send(null);
|
| - };
|
| -}
|
| -
|
| -
|
| -void testDeleteNonExistent() {
|
| - Directory temp = tempDir();
|
| - ReceivePort p = new ReceivePort();
|
| - p.receive((x, y) {
|
| - p.close();
|
| - temp.deleteRecursivelySync();
|
| - });
|
| - var file = new File("${temp.path}/nonExistentFile");
|
| -
|
| - // Non-existing file should throw exception.
|
| - Expect.throws(() => file.deleteSync(),
|
| - (e) => checkDeleteNonExistentFileException(e));
|
| -
|
| - file.delete(() => Expect.fail("Unreachable code"));
|
| - file.onError = (e) {
|
| - checkDeleteNonExistentFileException(e);
|
| - p.toSendPort().send(null);
|
| - };
|
| -}
|
| -
|
| -
|
| -void testLengthNonExistent() {
|
| - Directory temp = tempDir();
|
| - ReceivePort p = new ReceivePort();
|
| - p.receive((x, y) {
|
| - p.close();
|
| - temp.deleteRecursivelySync();
|
| - });
|
| - var file = new File("${temp.path}/nonExistentFile");
|
| -
|
| - // Non-existing file should throw exception.
|
| - Expect.throws(() => file.lengthSync(),
|
| - (e) => checkLengthNonExistentFileException(e));
|
| -
|
| - file.length((len) => Expect.fail("Unreachable code"));
|
| - file.onError = (e) {
|
| - checkLengthNonExistentFileException(e);
|
| - p.toSendPort().send(null);
|
| - };
|
| -}
|
| -
|
| -
|
| -bool checkCreateInNonExistentDirectoryException(e) {
|
| - Expect.isTrue(e is FileIOException);
|
| - Expect.isTrue(e.osError != null);
|
| - Expect.isTrue(e.toString().indexOf("Cannot create file") != -1);
|
| - 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;
|
| -}
|
| -
|
| -void testCreateInNonExistentDirectory() {
|
| - Directory temp = tempDir();
|
| - ReceivePort p = new ReceivePort();
|
| - p.receive((x, y) {
|
| - p.close();
|
| - temp.deleteRecursivelySync();
|
| - });
|
| - var file = new File("${temp.path}/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);
|
| - p.toSendPort().send(null);
|
| - };
|
| -}
|
| -
|
| -bool checkFullPathOnNonExistentDirectoryException(e) {
|
| - Expect.isTrue(e is FileIOException);
|
| - Expect.isTrue(e.osError != null);
|
| - Expect.isTrue(e.toString().indexOf("Cannot retrieve full path") != -1);
|
| - 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;
|
| -}
|
| -
|
| -void testFullPathOnNonExistentDirectory() {
|
| - Directory temp = tempDir();
|
| - ReceivePort p = new ReceivePort();
|
| - p.receive((x, y) {
|
| - p.close();
|
| - temp.deleteRecursivelySync();
|
| - });
|
| - var file = new File("${temp.path}/nonExistentDirectory");
|
| -
|
| - // Full path 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);
|
| - p.toSendPort().send(null);
|
| - };
|
| -}
|
| -
|
| -bool checkDirectoryInNonExistentDirectoryException(e) {
|
| - Expect.isTrue(e is FileIOException);
|
| - Expect.isTrue(e.osError != null);
|
| - Expect.isTrue(
|
| - e.toString().indexOf("Cannot retrieve directory for file") != -1);
|
| - 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;
|
| -}
|
| -
|
| -void testDirectoryInNonExistentDirectory() {
|
| - Directory temp = tempDir();
|
| - ReceivePort p = new ReceivePort();
|
| - p.receive((x, y) {
|
| - p.close();
|
| - temp.deleteRecursivelySync();
|
| - });
|
| - var file = new File("${temp.path}/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);
|
| - p.toSendPort().send(null);
|
| - };
|
| -}
|
| -
|
| -void testReadAsBytesNonExistent() {
|
| - Directory temp = tempDir();
|
| - ReceivePort p = new ReceivePort();
|
| - p.receive((x, y) {
|
| - p.close();
|
| - temp.deleteRecursivelySync();
|
| - });
|
| - var file = new File("${temp.path}/nonExistentFile3");
|
| -
|
| - // Non-existing file should throw exception.
|
| - Expect.throws(() => file.readAsBytesSync(),
|
| - (e) => checkOpenNonExistentFileException(e));
|
| -
|
| - file.readAsBytes((data) => Expect.fail("Unreachable code"));
|
| - file.onError = (e) {
|
| - checkOpenNonExistentFileException(e);
|
| - p.toSendPort().send(null);
|
| - };
|
| -}
|
| -
|
| -void testReadAsTextNonExistent() {
|
| - Directory temp = tempDir();
|
| - ReceivePort p = new ReceivePort();
|
| - p.receive((x, y) {
|
| - p.close();
|
| - temp.deleteRecursivelySync();
|
| - });
|
| - var file = new File("${temp.path}/nonExistentFile4");
|
| -
|
| - // Non-existing file should throw exception.
|
| - Expect.throws(() => file.readAsTextSync(),
|
| - (e) => checkOpenNonExistentFileException(e));
|
| -
|
| - file.readAsText(Encoding.ASCII, (data) => Expect.fail("Unreachable code"));
|
| - file.onError = (e) {
|
| - checkOpenNonExistentFileException(e);
|
| - p.toSendPort().send(null);
|
| - };
|
| -}
|
| -
|
| -testReadAsLinesNonExistent() {
|
| - Directory temp = tempDir();
|
| - ReceivePort p = new ReceivePort();
|
| - p.receive((x, y) {
|
| - p.close();
|
| - temp.deleteRecursivelySync();
|
| - });
|
| - var file = new File("${temp.path}/nonExistentFile5");
|
| -
|
| - // Non-existing file should throw exception.
|
| - Expect.throws(() => file.readAsLinesSync(),
|
| - (e) => checkOpenNonExistentFileException(e));
|
| -
|
| - file.readAsLines(Encoding.ASCII, (data) => Expect.fail("Unreachable code"));
|
| - file.onError = (e) {
|
| - checkOpenNonExistentFileException(e);
|
| - p.toSendPort().send(null);
|
| - };
|
| -}
|
| -
|
| -bool checkWriteReadOnlyFileException(e) {
|
| - Expect.isTrue(e is FileIOException);
|
| - Expect.isTrue(e.osError != null);
|
| - Expect.isTrue(e.osError.errorCode != OSError.noErrorCode);
|
| - return true;
|
| -}
|
| -
|
| -
|
| -// Create a test file in a temporary directory. Setup a port to signal
|
| -// when the temporary directory should be deleted. Pass the file and
|
| -// the port to the callback argument.
|
| -createTestFile(callback) {
|
| - Directory temp = tempDir();
|
| - ReceivePort p = new ReceivePort();
|
| - p.receive((x, y) {
|
| - p.close();
|
| - temp.deleteRecursivelySync();
|
| - });
|
| -
|
| - var file = new File("${temp.path}/test_file");
|
| - file.createSync();
|
| - callback(file, p.toSendPort());
|
| -}
|
| -
|
| -
|
| -testWriteByteToReadOnlyFile() {
|
| - createTestFile((file, port) {
|
| - var openedFile = file.openSync(FileMode.READ);
|
| -
|
| - // Writing to read only file should throw an exception.
|
| - Expect.throws(() => openedFile.writeByteSync(0),
|
| - (e) => checkWriteReadOnlyFileException(e));
|
| -
|
| - openedFile.writeByte(0);
|
| - openedFile.onError = (e) {
|
| - checkWriteReadOnlyFileException(e);
|
| - openedFile.close(() => port.send(null));
|
| - };
|
| - });
|
| -}
|
| -
|
| -testWriteListToReadOnlyFile() {
|
| - createTestFile((file, port) {
|
| - var openedFile = file.openSync(FileMode.READ);
|
| -
|
| - List data = [0, 1, 2, 3];
|
| - // Writing to read only file should throw an exception.
|
| - Expect.throws(() => openedFile.writeListSync(data, 0, data.length),
|
| - (e) => checkWriteReadOnlyFileException(e));
|
| -
|
| - openedFile.writeList(data, 0, data.length);
|
| - openedFile.onError = (e) {
|
| - checkWriteReadOnlyFileException(e);
|
| - openedFile.close(() => port.send(null));
|
| - };
|
| - });
|
| -}
|
| -
|
| -testTruncateReadOnlyFile() {
|
| - createTestFile((file, port) {
|
| - var openedFile = file.openSync(FileMode.WRITE);
|
| - openedFile.writeByteSync(0);
|
| - openedFile.closeSync();
|
| - openedFile = file.openSync(FileMode.READ);
|
| -
|
| - // Truncating read only file should throw an exception.
|
| - Expect.throws(() => openedFile.truncateSync(0),
|
| - (e) => checkWriteReadOnlyFileException(e));
|
| -
|
| - openedFile.truncate(0, () => Expect.fail("Unreachable code"));
|
| - openedFile.onError = (e) {
|
| - checkWriteReadOnlyFileException(e);
|
| - openedFile.close(() => port.send(null));
|
| - };
|
| - });
|
| -}
|
| -
|
| -bool checkFileClosedException(e) {
|
| - Expect.isTrue(e is FileIOException);
|
| - Expect.isTrue(e.toString().indexOf("File closed") != -1);
|
| - Expect.isTrue(e.osError == null);
|
| - return true;
|
| -}
|
| -
|
| -testOperateOnClosedFile() {
|
| - createTestFile((file, port) {
|
| - var openedFile = file.openSync(FileMode.READ);
|
| - openedFile.closeSync();
|
| -
|
| - List data = [0, 1, 2, 3];
|
| - Expect.throws(() => openedFile.readByteSync(),
|
| - (e) => checkFileClosedException(e));
|
| - Expect.throws(() => openedFile.writeByteSync(0),
|
| - (e) => checkFileClosedException(e));
|
| - Expect.throws(() => openedFile.writeListSync(data, 0, data.length),
|
| - (e) => checkFileClosedException(e));
|
| - Expect.throws(() => openedFile.readListSync(data, 0, data.length),
|
| - (e) => checkFileClosedException(e));
|
| - Expect.throws(() => openedFile.writeStringSync("Hello"),
|
| - (e) => checkFileClosedException(e));
|
| - Expect.throws(() => openedFile.positionSync(),
|
| - (e) => checkFileClosedException(e));
|
| - Expect.throws(() => openedFile.setPositionSync(0),
|
| - (e) => checkFileClosedException(e));
|
| - Expect.throws(() => openedFile.truncateSync(0),
|
| - (e) => checkFileClosedException(e));
|
| - Expect.throws(() => openedFile.lengthSync(),
|
| - (e) => checkFileClosedException(e));
|
| - Expect.throws(() => openedFile.flushSync(),
|
| - (e) => checkFileClosedException(e));
|
| -
|
| - var errorCount = 0;
|
| - openedFile.readByte((byte) => Expect.fail("Unreachable code"));
|
| - errorCount++;
|
| - openedFile.writeByte(0);
|
| - errorCount++;
|
| - openedFile.readList(
|
| - data, 0, data.length, (bytesRead) => Expect.fail("Unreachable code"));
|
| - errorCount++;
|
| - openedFile.writeList(data, 0, data.length);
|
| - errorCount++;
|
| - openedFile.writeString("Hello");
|
| - errorCount++;
|
| - openedFile.position((position) => Expect.fail("Unreachable code"));
|
| - errorCount++;
|
| - openedFile.setPosition(0, () => Expect.fail("Unreachable code"));
|
| - errorCount++;
|
| - openedFile.truncate(0, () => Expect.fail("Unreachable code"));
|
| - errorCount++;
|
| - openedFile.length((length) => Expect.fail("Unreachable code"));
|
| - errorCount++;
|
| - openedFile.flush(() => Expect.fail("Unreachable code"));
|
| - errorCount++;
|
| -
|
| - openedFile.onError = (e) {
|
| - checkFileClosedException(e);
|
| - if (--errorCount == 0) {
|
| - port.send(null);
|
| - }
|
| - };
|
| - });
|
| -}
|
| -
|
| -testRepeatedlyCloseFile() {
|
| - createTestFile((file, port) {
|
| - var openedFile = file.openSync();
|
| - openedFile.close(() {
|
| - openedFile.onError = (e) {
|
| - Expect.isTrue(e is FileIOException);
|
| - port.send(null);
|
| - };
|
| - openedFile.close(() => null);
|
| - });
|
| - });
|
| -}
|
| -
|
| -main() {
|
| - testOpenNonExistent();
|
| - testDeleteNonExistent();
|
| - testLengthNonExistent();
|
| - testCreateInNonExistentDirectory();
|
| - testFullPathOnNonExistentDirectory();
|
| - testDirectoryInNonExistentDirectory();
|
| - testReadAsBytesNonExistent();
|
| - testReadAsTextNonExistent();
|
| - testReadAsLinesNonExistent();
|
| - testWriteByteToReadOnlyFile();
|
| - testWriteListToReadOnlyFile();
|
| - testTruncateReadOnlyFile();
|
| - testOperateOnClosedFile();
|
| - testRepeatedlyCloseFile();
|
| -}
|
|
|