| Index: tests/standalone/io/file_test.dart
|
| diff --git a/tests/standalone/io/file_test.dart b/tests/standalone/io/file_test.dart
|
| index 66633f2f5f0ad1d2164ba295de20098083762956..46c46abcd2896296c947041e015072bad797906f 100644
|
| --- a/tests/standalone/io/file_test.dart
|
| +++ b/tests/standalone/io/file_test.dart
|
| @@ -17,21 +17,22 @@ class MyListOfOneElement implements List {
|
| class FileTest {
|
| static Directory tempDirectory;
|
| static int numLiveAsyncTests = 0;
|
| + static ReceivePort port;
|
|
|
| static void asyncTestStarted() { ++numLiveAsyncTests; }
|
| static void asyncTestDone(String name) {
|
| --numLiveAsyncTests;
|
| if (numLiveAsyncTests == 0) {
|
| deleteTempDirectory();
|
| + port.close();
|
| }
|
| }
|
|
|
| static void createTempDirectory(Function doNext) {
|
| - tempDirectory = new Directory('');
|
| - tempDirectory.onError = (e) {
|
| - Expect.fail("Failed creating temporary directory");
|
| - };
|
| - tempDirectory.createTemp(doNext);
|
| + new Directory('').createTemp().then((temp) {
|
| + tempDirectory = temp;
|
| + doNext();
|
| + });
|
| }
|
|
|
| static void deleteTempDirectory() {
|
| @@ -149,17 +150,15 @@ class FileTest {
|
| }
|
|
|
| static void testRead() {
|
| + ReceivePort port = new ReceivePort();
|
| // Read a file and check part of it's contents.
|
| String filename = getFilename("bin/file_test.cc");
|
| File file = new File(filename);
|
| - file.onError = (e) {
|
| - Expect.fail("No errors expected : $e");
|
| - };
|
| - file.open(FileMode.READ, (RandomAccessFile file) {
|
| + file.open(FileMode.READ).then((RandomAccessFile file) {
|
| List<int> buffer = new List<int>(10);
|
| - file.readList(buffer, 0, 5, (bytes_read) {
|
| + file.readList(buffer, 0, 5).then((bytes_read) {
|
| Expect.equals(5, bytes_read);
|
| - file.readList(buffer, 5, 5, (bytes_read) {
|
| + file.readList(buffer, 5, 5).then((bytes_read) {
|
| Expect.equals(5, bytes_read);
|
| Expect.equals(47, buffer[0]); // represents '/' in the file.
|
| Expect.equals(47, buffer[1]); // represents '/' in the file.
|
| @@ -171,7 +170,7 @@ class FileTest {
|
| Expect.equals(114, buffer[7]); // represents 'r' in the file.
|
| Expect.equals(105, buffer[8]); // represents 'i' in the file.
|
| Expect.equals(103, buffer[9]); // represents 'g' in the file.
|
| - file.close(() => null);
|
| + file.close().then((ignore) => port.close());
|
| });
|
| });
|
| });
|
| @@ -206,48 +205,29 @@ class FileTest {
|
| // Read a file.
|
| String inFilename = getFilename("tests/vm/data/fixed_length_file");
|
| final File file = new File(inFilename);
|
| - file.onError = (e) {
|
| - Expect.fail("No errors expected : $e");
|
| - };
|
| - file.open(FileMode.READ, (RandomAccessFile openedFile) {
|
| - openedFile.onError = (s) {
|
| - Expect.fail("No errors expected : $s");
|
| - };
|
| + file.open(FileMode.READ).then((openedFile) {
|
| List<int> buffer1 = new List<int>(42);
|
| - openedFile.readList(buffer1, 0, 42, (bytes_read) {
|
| + openedFile.readList(buffer1, 0, 42).then((bytes_read) {
|
| Expect.equals(42, bytes_read);
|
| - openedFile.close(() {
|
| + openedFile.close().then((ignore) {
|
| // Write the contents of the file just read into another file.
|
| String outFilename = tempDirectory.path + "/out_read_write";
|
| final File file2 = new File(outFilename);
|
| - file2.onError = (e) {
|
| - Expect.fail("No errors expected : $e");
|
| - };
|
| - file2.create(() {
|
| - file2.fullPath((s) {
|
| + file2.create().then((ignore) {
|
| + file2.fullPath().then((s) {
|
| Expect.isTrue(new File(s).existsSync());
|
| if (s[0] != '/' && s[0] != '\\' && s[1] != ':') {
|
| Expect.fail("Not a full path");
|
| }
|
| - file2.open(FileMode.WRITE, (RandomAccessFile openedFile2) {
|
| - openedFile2.onError = (s) {
|
| - Expect.fail("No errors expected : $s");
|
| - };
|
| - openedFile2.writeList(buffer1, 0, bytes_read);
|
| - openedFile2.onNoPendingWrites = () {
|
| - openedFile2.close(() {
|
| + file2.open(FileMode.WRITE).then((openedFile2) {
|
| + openedFile2.writeList(buffer1, 0, bytes_read).then((ignore) {
|
| + openedFile2.close().then((ignore) {
|
| List<int> buffer2 = new List<int>(bytes_read);
|
| final File file3 = new File(outFilename);
|
| - file3.onError = (e) {
|
| - Expect.fail("No errors expected : $e");
|
| - };
|
| - file3.open(FileMode.READ, (RandomAccessFile openedFile3) {
|
| - openedFile3.onError = (s) {
|
| - Expect.fail("No errors expected : $s");
|
| - };
|
| - openedFile3.readList(buffer2, 0, 42, (bytes_read) {
|
| - Expect.equals(42, bytes_read);
|
| - openedFile3.close(() {
|
| + file3.open(FileMode.READ).then((openedFile3) {
|
| + openedFile3.readList(buffer2, 0, 42).then((bytes_read) {
|
| + Expect.equals(42, bytes_read);
|
| + openedFile3.close().then((ignore) {
|
| // Now compare the two buffers to check if they
|
| // are identical.
|
| Expect.equals(buffer1.length, buffer2.length);
|
| @@ -256,8 +236,8 @@ class FileTest {
|
| }
|
| // Delete the output file.
|
| final file4 = file3;
|
| - file4.delete(() {
|
| - file4.exists((exists) {
|
| + file4.delete().then((ignore) {
|
| + file4.exists().then((exists) {
|
| Expect.isFalse(exists);
|
| asyncTestDone("testReadWrite");
|
| });
|
| @@ -266,7 +246,7 @@ class FileTest {
|
| });
|
| });
|
| });
|
| - };
|
| + });
|
| });
|
| });
|
| });
|
| @@ -319,11 +299,11 @@ class FileTest {
|
| appendingOutput.close();
|
| appendingOutput.onClosed = () {
|
| File file3 = new File(filename);
|
| - file3.open(FileMode.READ, (RandomAccessFile openedFile) {
|
| - openedFile.length((int length) {
|
| + file3.open(FileMode.READ).then((RandomAccessFile openedFile) {
|
| + openedFile.length().then((int length) {
|
| Expect.equals(content.length * 2, length);
|
| - openedFile.close(() {
|
| - file3.delete(() {
|
| + openedFile.close().then((ignore) {
|
| + file3.delete().then((ignore) {
|
| asyncTestDone("testOutputStreamWriteAppend");
|
| });
|
| });
|
| @@ -354,6 +334,9 @@ class FileTest {
|
| outStream.onClosed = () {
|
| RandomAccessFile raf = file.openSync();
|
| Expect.equals(38, raf.lengthSync());
|
| + raf.close().then((ignore) {
|
| + asyncTestDone("testOutputStreamWriteString");
|
| + });
|
| };
|
| };
|
| asyncTestStarted();
|
| @@ -411,23 +394,16 @@ class FileTest {
|
| static void testReadEmptyFile() {
|
| String fileName = tempDirectory.path + "/empty_file";
|
| File file = new File(fileName);
|
| - file.onError = (e) {
|
| - Expect.fail("No errors expected : $e");
|
| - };
|
| asyncTestStarted();
|
| - file.create(() {
|
| - file.open(FileMode.READ, (RandomAccessFile openedFile) {
|
| - openedFile.readByte((int byte) {
|
| + file.create().then((ignore) {
|
| + file.open(FileMode.READ).then((RandomAccessFile openedFile) {
|
| + var readByteFuture = openedFile.readByte();
|
| + readByteFuture.then((int byte) {
|
| Expect.equals(-1, byte);
|
| - });
|
| - openedFile.onError = (e) {
|
| - Expect.isTrue(e is FileIOException);
|
| - openedFile.close(() {
|
| - file.delete(() {
|
| - asyncTestDone("testReadEmptyFile");
|
| - });
|
| + openedFile.close().then((ignore) {
|
| + asyncTestDone("testReadEmptyFile");
|
| });
|
| - };
|
| + });
|
| });
|
| });
|
| }
|
| @@ -437,9 +413,8 @@ class FileTest {
|
| asyncTestStarted();
|
| final String fileName = "${tempDirectory.path}/testWriteVariousLists";
|
| final File file = new File(fileName);
|
| - file.onError = (e) => Expect.fail("No errors expected : $e");
|
| - file.create(() {
|
| - file.open(FileMode.WRITE, (RandomAccessFile openedFile) {
|
| + file.create().then((ignore) {
|
| + file.open(FileMode.WRITE).then((RandomAccessFile openedFile) {
|
| // Write bytes from 0 to 7.
|
| openedFile.writeList([0], 0, 1);
|
| openedFile.writeList(const [1], 0, 1);
|
| @@ -452,11 +427,8 @@ class FileTest {
|
| openedFile.writeList(new MyListOfOneElement(262), 0, 1);
|
| x = 12345678901234567890123456789012345678901234567890;
|
| y = 12345678901234567890123456789012345678901234568153;
|
| - openedFile.writeList([y - x], 0, 1);
|
| -
|
| - openedFile.onError = (e) => Expect.fail("No errors expected : $e");
|
| - openedFile.onNoPendingWrites = () {
|
| - openedFile.close(() {
|
| + openedFile.writeList([y - x], 0, 1).then((ignore) {
|
| + openedFile.close().then((ignore) {
|
| // Check the written bytes.
|
| final File file2 = new File(fileName);
|
| var openedFile2 = file2.openSync();
|
| @@ -471,7 +443,7 @@ class FileTest {
|
| file2.deleteSync();
|
| asyncTestDone("testWriteVariousLists");
|
| });
|
| - };
|
| + });
|
| });
|
| });
|
| }
|
| @@ -490,28 +462,34 @@ class FileTest {
|
| var tempDir = tempDirectory.path;
|
| var file = new File("${tempDir}/testDirectory");
|
| var errors = 0;
|
| - file.directory((d) => Expect.fail("non-existing file"));
|
| - file.onError = (e) {
|
| - file.onError = (e) => Expect.fail("no error expected");
|
| - file.create(() {
|
| - file.directory((Directory d) {
|
| - d.onError = (s) => Expect.fail("no error expected");
|
| - d.exists((exists) {
|
| + var dirFuture = file.directory();
|
| + dirFuture.then((d) => Expect.fail("non-existing file"));
|
| + dirFuture.handleException((e) {
|
| + file.create().then((ignore) {
|
| + file.directory().then((Directory d) {
|
| + d.exists().then((exists) {
|
| Expect.isTrue(exists);
|
| Expect.isTrue(d.path.endsWith(tempDir));
|
| - file.delete(() {
|
| - var file_dir = new File(".");
|
| - file_dir.directory((d) => Expect.fail("non-existing file"));
|
| - file_dir.onError = (e) {
|
| - var file_dir = new File(tempDir);
|
| - file_dir.directory((d) => Expect.fail("non-existing file"));
|
| - file_dir.onError = (e) => port.toSendPort().send(1);
|
| - };
|
| + file.delete().then((ignore) {
|
| + var fileDir = new File(".");
|
| + var dirFuture2 = fileDir.directory();
|
| + dirFuture2.then((d) => Expect.fail("non-existing file"));
|
| + dirFuture2.handleException((e) {
|
| + var fileDir = new File(tempDir);
|
| + var dirFuture3 = fileDir.directory();
|
| + dirFuture3.then((d) => Expect.fail("non-existing file"));
|
| + dirFuture3.handleException((e) {
|
| + port.toSendPort().send(1);
|
| + return true;
|
| + });
|
| + return true;
|
| + });
|
| });
|
| });
|
| });
|
| });
|
| - };
|
| + return true;
|
| + });
|
| }
|
|
|
| static void testDirectorySync() {
|
| @@ -534,16 +512,15 @@ class FileTest {
|
|
|
| // Test for file length functionality.
|
| static void testLength() {
|
| + var port = new ReceivePort();
|
| String filename = getFilename("tests/vm/data/fixed_length_file");
|
| File file = new File(filename);
|
| RandomAccessFile openedFile = file.openSync();
|
| - openedFile.onError = (e) => Expect.fail("No errors expected");
|
| - file.onError = (e) => Expect.fail("No errors expected");
|
| - openedFile.length((length) {
|
| + openedFile.length().then((length) {
|
| Expect.equals(42, length);
|
| - openedFile.close(() => null);
|
| + openedFile.close().then((ignore) => port.close());
|
| });
|
| - file.length((length) {
|
| + file.length().then((length) {
|
| Expect.equals(42, length);
|
| });
|
| }
|
| @@ -559,22 +536,22 @@ class FileTest {
|
|
|
| // Test for file position functionality.
|
| static void testPosition() {
|
| + var port = new ReceivePort();
|
| String filename = getFilename("tests/vm/data/fixed_length_file");
|
| RandomAccessFile input = (new File(filename)).openSync();
|
| - input.onError = (e) => Expect.fail("No errors expected");
|
| - input.position((position) {
|
| + input.position().then((position) {
|
| Expect.equals(0, position);
|
| List<int> buffer = new List<int>(100);
|
| - input.readList(buffer, 0, 12, (bytes_read) {
|
| - input.position((position) {
|
| + input.readList(buffer, 0, 12).then((bytes_read) {
|
| + input.position().then((position) {
|
| Expect.equals(12, position);
|
| - input.readList(buffer, 12, 6, (bytes_read) {
|
| - input.position((position) {
|
| + input.readList(buffer, 12, 6).then((bytes_read) {
|
| + input.position().then((position) {
|
| Expect.equals(18, position);
|
| - input.setPosition(8, () {
|
| - input.position((position) {
|
| + input.setPosition(8).then((ignore) {
|
| + input.position().then((position) {
|
| Expect.equals(8, position);
|
| - input.close(() => null);
|
| + input.close().then((ignore) => port.close());
|
| });
|
| });
|
| });
|
| @@ -601,18 +578,16 @@ class FileTest {
|
| static void testTruncate() {
|
| File file = new File(tempDirectory.path + "/out_truncate");
|
| List buffer = const [65, 65, 65, 65, 65, 65, 65, 65, 65, 65];
|
| - file.onError = (e) => Expect.fail("No errors expected: $e");
|
| - file.open(FileMode.WRITE, (RandomAccessFile openedFile) {
|
| - openedFile.writeList(buffer, 0, 10);
|
| - openedFile.onNoPendingWrites = () {
|
| - openedFile.length((length) {
|
| + file.open(FileMode.WRITE).then((RandomAccessFile openedFile) {
|
| + openedFile.writeList(buffer, 0, 10).then((ignore) {
|
| + openedFile.length().then((length) {
|
| Expect.equals(10, length);
|
| - openedFile.truncate(5, () {
|
| - openedFile.length((length) {
|
| + openedFile.truncate(5).then((ignore) {
|
| + openedFile.length().then((length) {
|
| Expect.equals(5, length);
|
| - openedFile.close(() {
|
| - file.delete(() {
|
| - file.exists((exists) {
|
| + openedFile.close().then((ignore) {
|
| + file.delete().then((ignore) {
|
| + file.exists().then((exists) {
|
| Expect.isFalse(exists);
|
| asyncTestDone("testTruncate");
|
| });
|
| @@ -621,7 +596,7 @@ class FileTest {
|
| });
|
| });
|
| });
|
| - };
|
| + });
|
| });
|
| asyncTestStarted();
|
| }
|
| @@ -849,8 +824,9 @@ class FileTest {
|
|
|
| static void testOpenDirectoryAsFile() {
|
| var f = new File('.');
|
| - f.open(FileMode.READ, (r) => Expect.fail('Directory opened as file'));
|
| - f.onError = (e) => null;
|
| + var future = f.open(FileMode.READ);
|
| + future.then((r) => Expect.fail('Directory opened as file'));
|
| + future.handleException((e) => true);
|
| }
|
|
|
| static void testOpenDirectoryAsFileSync() {
|
| @@ -871,11 +847,10 @@ class FileTest {
|
| });
|
| var name = getFilename("tests/vm/data/fixed_length_file");
|
| var f = new File(name);
|
| - f.readAsBytes((bytes) {
|
| + f.readAsBytes().then((bytes) {
|
| Expect.isTrue(new String.fromCharCodes(bytes).endsWith("42 bytes."));
|
| port.toSendPort().send(bytes.length);
|
| });
|
| - f.onError = (e) => Expect.fail("No errors expected: $e");
|
| }
|
|
|
| static void testReadAsBytesSync() {
|
| @@ -893,32 +868,30 @@ class FileTest {
|
| });
|
| var name = getFilename("tests/vm/data/fixed_length_file");
|
| var f = new File(name);
|
| - f.readAsText(Encoding.UTF_8, (text) {
|
| + f.readAsText(Encoding.UTF_8).then((text) {
|
| Expect.isTrue(text.endsWith("42 bytes."));
|
| Expect.equals(42, text.length);
|
| var name = getDataFilename("tests/standalone/io/read_as_text.dat");
|
| var f = new File(name);
|
| - f.onError = (e) => Expect.fail("No errors expected: $e");
|
| - f.readAsText(Encoding.UTF_8, (text) {
|
| + f.readAsText(Encoding.UTF_8).then((text) {
|
| Expect.equals(6, text.length);
|
| var expected = [955, 120, 46, 32, 120, 10];
|
| Expect.listEquals(expected, text.charCodes());
|
| - f.readAsText(Encoding.ISO_8859_1, (text) {
|
| + f.readAsText(Encoding.ISO_8859_1).then((text) {
|
| Expect.equals(7, text.length);
|
| var expected = [206, 187, 120, 46, 32, 120, 10];
|
| Expect.listEquals(expected, text.charCodes());
|
| - f.onError = (e) {
|
| - port.toSendPort().send(1);
|
| - };
|
| - f.readAsText(Encoding.ASCII, (text) {
|
| + var readAsTextFuture = f.readAsText(Encoding.ASCII);
|
| + readAsTextFuture.then((text) {
|
| Expect.fail("Non-ascii char should cause error");
|
| });
|
| + readAsTextFuture.handleException((e) {
|
| + port.toSendPort().send(1);
|
| + return true;
|
| + });
|
| });
|
| });
|
| });
|
| - f.onError = (e) {
|
| - Expect.fail("No errors expected: $e");
|
| - };
|
| }
|
|
|
| static void testReadAsTextSync() {
|
| @@ -946,13 +919,12 @@ class FileTest {
|
| });
|
| var name = getFilename("tests/vm/data/fixed_length_file");
|
| var f = new File(name);
|
| - f.readAsLines(Encoding.UTF_8, (lines) {
|
| + f.readAsLines(Encoding.UTF_8).then((lines) {
|
| Expect.equals(1, lines.length);
|
| var line = lines[0];
|
| Expect.isTrue(line.endsWith("42 bytes."));
|
| port.toSendPort().send(line.length);
|
| });
|
| - f.onError = (e) => Expect.fail("No errors expected: $e");
|
| }
|
|
|
| static void testReadAsLinesSync() {
|
| @@ -978,46 +950,51 @@ class FileTest {
|
| Expect.throws(f.readAsBytesSync, (e) => e is FileIOException);
|
| Expect.throws(f.readAsTextSync, (e) => e is FileIOException);
|
| Expect.throws(f.readAsLinesSync, (e) => e is FileIOException);
|
| - f.readAsBytes((bytes) => Expect.fail("no bytes expected"));
|
| - f.onError = (e) {
|
| - f.readAsText(Encoding.UTF_8, (text) => Expect.fail("no text expected"));
|
| - f.onError = (e) {
|
| - f.readAsLines(Encoding.UTF_8,
|
| - (lines) => Expect.fail("no lines expected"));
|
| - f.onError = (e) => port.toSendPort().send(1);
|
| - };
|
| - };
|
| + var readAsBytesFuture = f.readAsBytes();
|
| + readAsBytesFuture.then((bytes) => Expect.fail("no bytes expected"));
|
| + readAsBytesFuture.handleException((e) {
|
| + var readAsTextFuture = f.readAsText(Encoding.UTF_8);
|
| + readAsTextFuture.then((text) => Expect.fail("no text expected"));
|
| + readAsTextFuture.handleException((e) {
|
| + var readAsLinesFuture = f.readAsLines(Encoding.UTF_8);
|
| + readAsLinesFuture.then((lines) => Expect.fail("no lines expected"));
|
| + readAsLinesFuture.handleException((e) {
|
| + port.toSendPort().send(1);
|
| + return true;
|
| + });
|
| + return true;
|
| + });
|
| + return true;
|
| + });
|
| }
|
|
|
| // Test that opens the same file for writing then for appending to test
|
| // that the file is not truncated when opened for appending.
|
| static void testAppend() {
|
| var file = new File('${tempDirectory.path}/out_append');
|
| - file.open(FileMode.WRITE, (openedFile) {
|
| - openedFile.writeString("asdf");
|
| - openedFile.onNoPendingWrites = () {
|
| - openedFile.close(() {
|
| - file.open(FileMode.APPEND, (openedFile) {
|
| - openedFile.length((length) {
|
| + file.open(FileMode.WRITE).then((openedFile) {
|
| + openedFile.writeString("asdf").then((ignore) {
|
| + openedFile.close().then((ignore) {
|
| + file.open(FileMode.APPEND).then((openedFile) {
|
| + openedFile.length().then((length) {
|
| Expect.equals(4, length);
|
| - openedFile.writeString("asdf");
|
| - openedFile.onNoPendingWrites = () {
|
| - openedFile.length((length) {
|
| + openedFile.writeString("asdf").then((ignore) {
|
| + openedFile.length().then((length) {
|
| Expect.equals(8, length);
|
| - openedFile.close(() {
|
| - file.delete(() {
|
| - file.exists((exists) {
|
| + openedFile.close().then((ignore) {
|
| + file.delete().then((ignore) {
|
| + file.exists().then((exists) {
|
| Expect.isFalse(exists);
|
| asyncTestDone("testAppend");
|
| });
|
| });
|
| });
|
| });
|
| - };
|
| + });
|
| });
|
| });
|
| });
|
| - };
|
| + });
|
| });
|
| asyncTestStarted();
|
| }
|
| @@ -1047,6 +1024,7 @@ class FileTest {
|
|
|
| // Main test entrypoint.
|
| static testMain() {
|
| + port = new ReceivePort();
|
| testRead();
|
| testReadSync();
|
| testReadStream();
|
|
|