| Index: tests/standalone/src/FileTest.dart
 | 
| diff --git a/tests/standalone/src/FileTest.dart b/tests/standalone/src/FileTest.dart
 | 
| index 9fb38efa870adc9e1fadaa8a6fb24e6ed6a0f7d4..96f99e7976d3cb0ac134f0881d9d51ceca86c611 100644
 | 
| --- a/tests/standalone/src/FileTest.dart
 | 
| +++ b/tests/standalone/src/FileTest.dart
 | 
| @@ -28,7 +28,7 @@ class FileTest {
 | 
|    }
 | 
|  
 | 
|    // Test for file read functionality.
 | 
| -  static int testReadStream() {
 | 
| +  static void testReadStream() {
 | 
|      // Read a file and check part of it's contents.
 | 
|      String filename = getFilename("bin/file_test.cc");
 | 
|      File file = new File(filename);
 | 
| @@ -51,11 +51,11 @@ class FileTest {
 | 
|      Expect.equals(103, buffer[9]);  // represents 'g' in the file.
 | 
|      Expect.equals(104, buffer[10]);  // represents 'h' in the file.
 | 
|      Expect.equals(116, buffer[11]);  // represents 't' in the file.
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
|    // Test for file read and write functionality.
 | 
| -  static int testReadWriteStream() {
 | 
| +  static void testReadWriteStream() {
 | 
| +    // Read a file.
 | 
|      String inFilename = getFilename("tests/vm/data/fixed_length_file");
 | 
|      File file;
 | 
|      InputStream input;
 | 
| @@ -116,10 +116,9 @@ class FileTest {
 | 
|      // Delete the output file.
 | 
|      file.deleteSync();
 | 
|      Expect.isFalse(file.existsSync());
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
| -  static int testRead() {
 | 
| +  static void testRead() {
 | 
|      // Read a file and check part of it's contents.
 | 
|      String filename = getFilename("bin/file_test.cc");
 | 
|      File file = new File(filename);
 | 
| @@ -149,10 +148,9 @@ class FileTest {
 | 
|        file.readList(buffer, 0, 5);
 | 
|      };
 | 
|      file.open();
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
| -  static int testReadSync() {
 | 
| +  static void testReadSync() {
 | 
|      // Read a file and check part of it's contents.
 | 
|      String filename = getFilename("bin/file_test.cc");
 | 
|      RandomAccessFile file = (new File(filename)).openSync();
 | 
| @@ -174,11 +172,10 @@ class FileTest {
 | 
|      Expect.equals(103, buffer[9]);  // represents 'g' in the file.
 | 
|      Expect.equals(104, buffer[10]);  // represents 'h' in the file.
 | 
|      Expect.equals(116, buffer[11]);  // represents 't' in the file.
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
|    // Test for file read and write functionality.
 | 
| -  static int testReadWrite() {
 | 
| +  static void testReadWrite() {
 | 
|      // Read a file.
 | 
|      String inFilename = getFilename("tests/vm/data/fixed_length_file");
 | 
|      File file = new File(inFilename);
 | 
| @@ -241,7 +238,7 @@ class FileTest {
 | 
|                  };
 | 
|                  openedFile.writeList(buffer1, 0, bytes_read);
 | 
|                };
 | 
| -              file.open(true);
 | 
| +              file.open(FileMode.WRITE);
 | 
|              };
 | 
|              file.fullPath();
 | 
|            };
 | 
| @@ -253,11 +250,9 @@ class FileTest {
 | 
|      };
 | 
|      asyncTestStarted();
 | 
|      file.open();
 | 
| -    return 1;
 | 
| -
 | 
|    }
 | 
|  
 | 
| -  static int testReadWriteSync() {
 | 
| +  static void testReadWriteSync() {
 | 
|      // Read a file.
 | 
|      String inFilename = getFilename("tests/vm/data/fixed_length_file");
 | 
|      RandomAccessFile file = (new File(inFilename)).openSync();
 | 
| @@ -276,7 +271,7 @@ class FileTest {
 | 
|        Expect.fail("Not a full path");
 | 
|      }
 | 
|      Expect.isTrue(new File(path).existsSync());
 | 
| -    RandomAccessFile openedFile = outFile.openSync(true);
 | 
| +    RandomAccessFile openedFile = outFile.openSync(FileMode.WRITE);
 | 
|      openedFile.writeListSync(buffer1, 0, bytes_read);
 | 
|      openedFile.closeSync();
 | 
|      // Now read the contents of the file just written.
 | 
| @@ -293,19 +288,17 @@ class FileTest {
 | 
|      // Delete the output file.
 | 
|      outFile.deleteSync();
 | 
|      Expect.isFalse(outFile.existsSync());
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
| -  static int testReadEmptyFileSync() {
 | 
| +  static void testReadEmptyFileSync() {
 | 
|      String fileName = tempDirectory.path + "/empty_file_sync";
 | 
|      File file = new File(fileName);
 | 
|      file.createSync();
 | 
|      RandomAccessFile openedFile = file.openSync();
 | 
|      Expect.throws(() => openedFile.readByteSync(), (e) => e is FileIOException);
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
| -  static int testReadEmptyFile() {
 | 
| +  static void testReadEmptyFile() {
 | 
|      String fileName = tempDirectory.path + "/empty_file";
 | 
|      File file = new File(fileName);
 | 
|      file.createHandler = () {
 | 
| @@ -322,11 +315,10 @@ class FileTest {
 | 
|      };
 | 
|      asyncTestStarted();
 | 
|      file.create();
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
|    // Test for file length functionality.
 | 
| -  static int testLength() {
 | 
| +  static void testLength() {
 | 
|      String filename = getFilename("tests/vm/data/fixed_length_file");
 | 
|      RandomAccessFile input = (new File(filename)).openSync();
 | 
|      input.errorHandler = (s) {
 | 
| @@ -337,19 +329,17 @@ class FileTest {
 | 
|        input.close();
 | 
|      };
 | 
|      input.length();
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
| -  static int testLengthSync() {
 | 
| +  static void testLengthSync() {
 | 
|      String filename = getFilename("tests/vm/data/fixed_length_file");
 | 
|      RandomAccessFile input = (new File(filename)).openSync();
 | 
|      Expect.equals(42, input.lengthSync());
 | 
|      input.closeSync();
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
|    // Test for file position functionality.
 | 
| -  static int testPosition() {
 | 
| +  static void testPosition() {
 | 
|      String filename = getFilename("tests/vm/data/fixed_length_file");
 | 
|      RandomAccessFile input = (new File(filename)).openSync();
 | 
|      input.errorHandler = (s) {
 | 
| @@ -381,10 +371,9 @@ class FileTest {
 | 
|        input.readList(buffer, 0, 12);
 | 
|      };
 | 
|      input.position();
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
| -  static int testPositionSync() {
 | 
| +  static void testPositionSync() {
 | 
|      String filename = getFilename("tests/vm/data/fixed_length_file");
 | 
|      RandomAccessFile input = (new File(filename)).openSync();
 | 
|      Expect.equals(0, input.positionSync());
 | 
| @@ -396,10 +385,9 @@ class FileTest {
 | 
|      input.setPositionSync(8);
 | 
|      Expect.equals(8, input.positionSync());
 | 
|      input.closeSync();
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
| -  static int testTruncate() {
 | 
| +  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.errorHandler = (error) {
 | 
| @@ -433,14 +421,13 @@ class FileTest {
 | 
|        openedFile.writeList(buffer, 0, 10);
 | 
|      };
 | 
|      asyncTestStarted();
 | 
| -    file.open(true);
 | 
| -    return 1;
 | 
| +    file.open(FileMode.WRITE);
 | 
|    }
 | 
|  
 | 
| -  static int testTruncateSync() {
 | 
| +  static void testTruncateSync() {
 | 
|      File file = new File(tempDirectory.path + "/out_truncate_sync");
 | 
|      List buffer = const [65, 65, 65, 65, 65, 65, 65, 65, 65, 65];
 | 
| -    RandomAccessFile openedFile = file.openSync(true);
 | 
| +    RandomAccessFile openedFile = file.openSync(FileMode.WRITE);
 | 
|      openedFile.writeListSync(buffer, 0, 10);
 | 
|      Expect.equals(10, openedFile.lengthSync());
 | 
|      openedFile.truncateSync(5);
 | 
| @@ -448,15 +435,14 @@ class FileTest {
 | 
|      openedFile.closeSync();
 | 
|      file.deleteSync();
 | 
|      Expect.isFalse(file.existsSync());
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
|    // Tests exception handling after file was closed.
 | 
| -  static int testCloseException() {
 | 
| +  static void testCloseException() {
 | 
|      bool exceptionCaught = false;
 | 
|      bool wrongExceptionCaught = false;
 | 
|      File input = new File(tempDirectory.path + "/out_close_exception");
 | 
| -    RandomAccessFile openedFile = input.openSync(true);
 | 
| +    RandomAccessFile openedFile = input.openSync(FileMode.WRITE);
 | 
|      openedFile.closeSync();
 | 
|      try {
 | 
|        openedFile.readByteSync();
 | 
| @@ -540,11 +526,10 @@ class FileTest {
 | 
|      Expect.equals(true, exceptionCaught);
 | 
|      Expect.equals(true, !wrongExceptionCaught);
 | 
|      input.deleteSync();
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
|    // Tests stream exception handling after file was closed.
 | 
| -  static int testCloseExceptionStream() {
 | 
| +  static void testCloseExceptionStream() {
 | 
|      List<int> buffer = new List<int>(42);
 | 
|      File file = new File(tempDirectory.path + "/out_close_exception_stream");
 | 
|      file.createSync();
 | 
| @@ -556,15 +541,14 @@ class FileTest {
 | 
|      Expect.throws(( ) => output.writeFrom(buffer, 0, 12),
 | 
|                    (e) => e is FileIOException);
 | 
|      file.deleteSync();
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
|    // Tests buffer out of bounds exception.
 | 
| -  static int testBufferOutOfBoundsException() {
 | 
| +  static void testBufferOutOfBoundsException() {
 | 
|      bool exceptionCaught = false;
 | 
|      bool wrongExceptionCaught = false;
 | 
|      File file = new File(tempDirectory.path + "/out_buffer_out_of_bounds");
 | 
| -    RandomAccessFile openedFile = file.openSync(true);
 | 
| +    RandomAccessFile openedFile = file.openSync(FileMode.WRITE);
 | 
|      try {
 | 
|        List<int> buffer = new List<int>(10);
 | 
|        bool readDone = openedFile.readListSync(buffer, 0, 12);
 | 
| @@ -654,10 +638,9 @@ class FileTest {
 | 
|      Expect.equals(true, !wrongExceptionCaught);
 | 
|      openedFile.closeSync();
 | 
|      file.deleteSync();
 | 
| -    return 1;
 | 
|    }
 | 
|  
 | 
| -  static int testMixedSyncAndAsync() {
 | 
| +  static void testMixedSyncAndAsync() {
 | 
|      var name = getFilename("tests/vm/data/fixed_length_file");
 | 
|      var f = new File(name);
 | 
|      f.errorHandler = (s) {
 | 
| @@ -672,7 +655,65 @@ class FileTest {
 | 
|        }
 | 
|      };
 | 
|      f.exists();
 | 
| -    return 1;
 | 
| +  }
 | 
| +
 | 
| +  // 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.openHandler = (openedFile) {
 | 
| +      openedFile.noPendingWriteHandler = () {
 | 
| +        openedFile.closeHandler = () {
 | 
| +          file.openHandler = (openedFile) {
 | 
| +            openedFile.lengthHandler = (length) {
 | 
| +              Expect.equals(4, length);
 | 
| +              openedFile.setPositionHandler = () {
 | 
| +                openedFile.noPendingWriteHandler = () {
 | 
| +                  openedFile.lengthHandler = (length) {
 | 
| +                    Expect.equals(8, length);
 | 
| +                    openedFile.closeHandler = () {
 | 
| +                      file.deleteHandler = () {
 | 
| +                        file.existsHandler = (exists) {
 | 
| +                          Expect.isFalse(exists);
 | 
| +                          asyncTestDone();
 | 
| +                        };
 | 
| +                        file.exists();
 | 
| +                      };
 | 
| +                      file.delete();
 | 
| +                    };
 | 
| +                    openedFile.close();
 | 
| +                  };
 | 
| +                  openedFile.length();
 | 
| +                };
 | 
| +                openedFile.writeString("asdf");
 | 
| +              };
 | 
| +              openedFile.setPosition(4);
 | 
| +            };
 | 
| +            openedFile.length();
 | 
| +          };
 | 
| +          file.open(FileMode.APPEND);
 | 
| +        };
 | 
| +        openedFile.close();
 | 
| +      };
 | 
| +      openedFile.writeString("asdf");
 | 
| +    };
 | 
| +    asyncTestStarted();
 | 
| +    file.open(FileMode.WRITE);
 | 
| +  }
 | 
| +
 | 
| +  static void testAppendSync() {
 | 
| +    var file = new File('${tempDirectory.path}/out_append_sync');
 | 
| +    var openedFile = file.openSync(FileMode.WRITE);
 | 
| +    openedFile.writeStringSync("asdf");
 | 
| +    Expect.equals(4, openedFile.lengthSync());
 | 
| +    openedFile.closeSync();
 | 
| +    openedFile = file.openSync(FileMode.WRITE);
 | 
| +    openedFile.setPositionSync(4);
 | 
| +    openedFile.writeStringSync("asdf");
 | 
| +    Expect.equals(8, openedFile.lengthSync());
 | 
| +    openedFile.closeSync();
 | 
| +    file.deleteSync();
 | 
| +    Expect.isFalse(file.existsSync());
 | 
|    }
 | 
|  
 | 
|    // Helper method to be able to run the test from the runtime
 | 
| @@ -682,26 +723,28 @@ class FileTest {
 | 
|  
 | 
|    // Main test entrypoint.
 | 
|    static testMain() {
 | 
| -    Expect.equals(1, testRead());
 | 
| -    Expect.equals(1, testReadSync());
 | 
| -    Expect.equals(1, testReadStream());
 | 
| -    Expect.equals(1, testLength());
 | 
| -    Expect.equals(1, testLengthSync());
 | 
| -    Expect.equals(1, testPosition());
 | 
| -    Expect.equals(1, testPositionSync());
 | 
| -    Expect.equals(1, testMixedSyncAndAsync());
 | 
| +    testRead();
 | 
| +    testReadSync();
 | 
| +    testReadStream();
 | 
| +    testLength();
 | 
| +    testLengthSync();
 | 
| +    testPosition();
 | 
| +    testPositionSync();
 | 
| +    testMixedSyncAndAsync();
 | 
|      asyncTestStarted();
 | 
|      createTempDirectory(() {
 | 
| -        Expect.equals(1, testReadWrite());
 | 
| -        Expect.equals(1, testReadWriteSync());
 | 
| -        Expect.equals(1, testReadWriteStream());
 | 
| -        Expect.equals(1, testReadEmptyFileSync());
 | 
| -        Expect.equals(1, testReadEmptyFile());
 | 
| -        Expect.equals(1, testTruncate());
 | 
| -        Expect.equals(1, testTruncateSync());
 | 
| -        Expect.equals(1, testCloseException());
 | 
| -        Expect.equals(1, testCloseExceptionStream());
 | 
| -        Expect.equals(1, testBufferOutOfBoundsException());
 | 
| +        testReadWrite();
 | 
| +        testReadWriteSync();
 | 
| +        testReadWriteStream();
 | 
| +        testReadEmptyFileSync();
 | 
| +        testReadEmptyFile();
 | 
| +        testTruncate();
 | 
| +        testTruncateSync();
 | 
| +        testCloseException();
 | 
| +        testCloseExceptionStream();
 | 
| +        testBufferOutOfBoundsException();
 | 
| +        testAppend();
 | 
| +        testAppendSync();
 | 
|          asyncTestDone();
 | 
|        });
 | 
|    }
 | 
| 
 |