OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:convert'; | 6 import 'dart:convert'; |
7 import 'dart:io'; | 7 import 'dart:io'; |
8 | 8 |
9 import 'package:path/path.dart' as path; | 9 import 'package:path/path.dart' as path; |
10 import 'package:async_helper/async_helper.dart'; | 10 import 'package:async_helper/async_helper.dart'; |
11 import 'package:expect/expect.dart'; | 11 import 'package:expect/expect.dart'; |
12 | 12 |
13 var tmpDir; | 13 var tmpDir; |
14 | 14 |
15 copyDirectory(Directory sourceDir, Directory destinationDir) { | 15 copyDirectory(Directory sourceDir, Directory destinationDir) { |
16 sourceDir.listSync().forEach((FileSystemEntity element) { | 16 sourceDir.listSync().forEach((FileSystemEntity element) { |
17 String newPath = path.join(destinationDir.path, | 17 String newPath = |
18 path.basename(element.path)); | 18 path.join(destinationDir.path, path.basename(element.path)); |
19 if (element is File) { | 19 if (element is File) { |
20 element.copySync(newPath); | 20 element.copySync(newPath); |
21 } else if (element is Directory) { | 21 } else if (element is Directory) { |
22 Directory newDestinationDir = new Directory(newPath); | 22 Directory newDestinationDir = new Directory(newPath); |
23 newDestinationDir.createSync(); | 23 newDestinationDir.createSync(); |
24 copyDirectory(element, newDestinationDir); | 24 copyDirectory(element, newDestinationDir); |
25 } | 25 } |
26 }); | 26 }); |
27 } | 27 } |
28 | 28 |
(...skipping 15 matching lines...) Expand all Loading... |
44 }); | 44 }); |
45 } | 45 } |
46 | 46 |
47 void cleanUp() { | 47 void cleanUp() { |
48 print("Deleting '${tmpDir.path}'."); | 48 print("Deleting '${tmpDir.path}'."); |
49 tmpDir.deleteSync(recursive: true); | 49 tmpDir.deleteSync(recursive: true); |
50 } | 50 } |
51 | 51 |
52 Future launchDart2Js(_) { | 52 Future launchDart2Js(_) { |
53 String ext = Platform.isWindows ? '.bat' : ''; | 53 String ext = Platform.isWindows ? '.bat' : ''; |
54 String command = | 54 String command = path.normalize(path.join( |
55 path.normalize(path.join(path.fromUri(Platform.script), | 55 path.fromUri(Platform.script), '../../../../sdk/bin/dart2js${ext}')); |
56 '../../../../sdk/bin/dart2js${ext}')); | |
57 print("Running '$command --batch' from '${tmpDir}'."); | 56 print("Running '$command --batch' from '${tmpDir}'."); |
58 return Process.start(command, ['--batch'], workingDirectory: tmpDir.path); | 57 return Process.start(command, ['--batch'], workingDirectory: tmpDir.path); |
59 } | 58 } |
60 | 59 |
61 Future runTests(Process process) { | 60 Future runTests(Process process) { |
62 String inFile = path.join(tmpDir.path, 'dart2js_batch2_run.dart'); | 61 String inFile = path.join(tmpDir.path, 'dart2js_batch2_run.dart'); |
63 String outFile = path.join(tmpDir.path, 'out.js'); | 62 String outFile = path.join(tmpDir.path, 'out.js'); |
64 | 63 |
65 process.stdin.writeln('--out="$outFile" "$inFile"'); | 64 process.stdin.writeln('--out="$outFile" "$inFile"'); |
66 process.stdin.close(); | 65 process.stdin.close(); |
67 Future<String> output = process.stdout.transform(UTF8.decoder).join(); | 66 Future<String> output = process.stdout.transform(UTF8.decoder).join(); |
68 Future<String> errorOut = process.stderr.transform(UTF8.decoder).join(); | 67 Future<String> errorOut = process.stderr.transform(UTF8.decoder).join(); |
69 return Future.wait([output, errorOut]) | 68 return Future.wait([output, errorOut]).then((result) { |
70 .then((result) { | 69 String stdoutOutput = result[0]; |
71 String stdoutOutput = result[0]; | 70 String stderrOutput = result[1]; |
72 String stderrOutput = result[1]; | |
73 | 71 |
74 Expect.isFalse(stdoutOutput.contains("crashed")); | 72 Expect.isFalse(stdoutOutput.contains("crashed")); |
75 }); | 73 }); |
76 } | 74 } |
77 | 75 |
78 void main() { | 76 void main() { |
79 var tmpDir; | 77 var tmpDir; |
80 asyncTest(() { | 78 asyncTest(() { |
81 return setup() | 79 return setup().then(launchDart2Js).then(runTests).whenComplete(cleanUp); |
82 .then(launchDart2Js) | |
83 .then(runTests) | |
84 .whenComplete(cleanUp); | |
85 }); | 80 }); |
86 } | 81 } |
OLD | NEW |