| // 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 = 2.9 |
| |
| import "package:expect/expect.dart"; |
| import 'dart:io'; |
| |
| main() { |
| Directory temp = Directory.systemTemp.createTempSync('dart_regress_7679'); |
| File script = new File('${temp.path}/script.dart'); |
| script.writeAsStringSync(""" |
| import 'dart:io'; |
| |
| class Expect { |
| static void isTrue(var x) { |
| if (!identical(x, true)) { |
| throw new StateError("Not identical"); |
| } |
| } |
| } |
| |
| main() { |
| Directory d = new Directory('a'); |
| d.create(recursive: true).then((_) { |
| d.exists().then((result) { |
| Expect.isTrue(result); |
| d = new Directory('b/c/d'); |
| d.create(recursive: true).then((_) { |
| d.exists().then((result) { |
| Expect.isTrue(result); |
| }); |
| }); |
| }); |
| }); |
| } |
| """); |
| String executable = new File(Platform.executable).resolveSymbolicLinksSync(); |
| // Note: we prevent this child process from using Crashpad handler because |
| // this introduces an issue with deleting the temporary directory. |
| Process.run( |
| executable, |
| [] |
| ..addAll(Platform.executableArguments) |
| ..add('script.dart'), |
| workingDirectory: temp.path, |
| environment: {'DART_CRASHPAD_HANDLER': ''}).then((result) { |
| temp.deleteSync(recursive: true); |
| Expect.equals(0, result.exitCode); |
| }); |
| } |