// 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.

// @dart = 2.9

import "package:expect/expect.dart";
import "dart:io";

void main() {
  var dir = Directory.systemTemp.createTempSync('dart_stdout_close');
  stdout.close().then((_) {
    var file = new File('${dir.path}/file');
    var io = file.openSync(mode: FileMode.write);
    print("to file");
    io.closeSync();
    var content = file.readAsStringSync();
    file.deleteSync();
    dir.deleteSync();
    Expect.equals("", content);
  });
}
