Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: tests/compiler/dart2js/dart2js_batch2_test.dart

Issue 923103003: Avoid spurious "The compiler crashed" messages in batch mode. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix indentation. Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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';
(...skipping 19 matching lines...) Expand all
30 return Directory.systemTemp 30 return Directory.systemTemp
31 .createTemp('dart2js_batch_test-') 31 .createTemp('dart2js_batch_test-')
32 .then((Directory dir) { 32 .then((Directory dir) {
33 return dir; 33 return dir;
34 }); 34 });
35 } 35 }
36 36
37 Future setup() { 37 Future setup() {
38 return createTempDir().then((Directory directory) { 38 return createTempDir().then((Directory directory) {
39 tmpDir = directory; 39 tmpDir = directory;
40 Directory sunflowerDir = new Directory.fromUri( 40 String newPath = path.join(directory.path, "dart2js_batch2_run.dart");
41 Platform.script.resolve('../../../third_party/sunflower')); 41 File source =
42 42 new File(Platform.script.resolve("dart2js_batch2_run.dart").path);
43 print("Copying '${sunflowerDir.path}' to '${tmpDir.path}'."); 43 source.copySync(newPath);
44 copyDirectory(sunflowerDir, tmpDir);
45 }); 44 });
46 } 45 }
47 46
48 void cleanUp() { 47 void cleanUp() {
49 print("Deleting '${tmpDir.path}'."); 48 print("Deleting '${tmpDir.path}'.");
50 tmpDir.deleteSync(recursive: true); 49 tmpDir.deleteSync(recursive: true);
51 } 50 }
52 51
53 Future launchDart2Js(_) { 52 Future launchDart2Js(_) {
54 String ext = Platform.isWindows ? '.bat' : ''; 53 String ext = Platform.isWindows ? '.bat' : '';
55 String command = 54 String command =
56 path.normalize(path.join(path.fromUri(Platform.script), 55 path.normalize(path.join(path.fromUri(Platform.script),
57 '../../../../sdk/bin/dart2js${ext}')); 56 '../../../../sdk/bin/dart2js${ext}'));
58 print("Running '$command --batch' from '${tmpDir}'."); 57 print("Running '$command --batch' from '${tmpDir}'.");
59 return Process.start(command, ['--batch'], workingDirectory: tmpDir.path); 58 return Process.start(command, ['--batch'], workingDirectory: tmpDir.path);
60 } 59 }
61 60
62 Future runTests(Process process) { 61 Future runTests(Process process) {
63 String inFile = path.join(tmpDir.path, 'web/sunflower.dart'); 62 String inFile = path.join(tmpDir.path, 'dart2js_batch2_run.dart');
64 String outFile = path.join(tmpDir.path, 'out.js'); 63 String outFile = path.join(tmpDir.path, 'out.js');
65 String outFile2 = path.join(tmpDir.path, 'out2.js');
66 64
67 process.stdin.writeln('--out="$outFile" "$inFile"'); 65 process.stdin.writeln('--out="$outFile" "$inFile"');
68 process.stdin.writeln('--out="$outFile2" "$inFile"');
69 process.stdin.writeln('too many arguments');
70 process.stdin.writeln(r'"non existing file.dart"');
71 process.stdin.close(); 66 process.stdin.close();
72 Future<String> output = process.stdout.transform(UTF8.decoder).join(); 67 Future<String> output = process.stdout.transform(UTF8.decoder).join();
73 Future<String> errorOut = process.stderr.transform(UTF8.decoder).join(); 68 Future<String> errorOut = process.stderr.transform(UTF8.decoder).join();
74 return Future.wait([output, errorOut]) 69 return Future.wait([output, errorOut])
75 .then((result) { 70 .then((result) {
76 String stdoutOutput = result[0]; 71 String stdoutOutput = result[0];
77 print('out:\n$stdoutOutput');
78 String stderrOutput = result[1]; 72 String stderrOutput = result[1];
79 print('err:\n$stderrOutput');
80 73
81 Expect.equals(4, ">>> EOF STDERR".allMatches(stderrOutput).length); 74 Expect.isFalse(stdoutOutput.contains("crashed"));
82 Expect.equals(4, ">>>".allMatches(stderrOutput).length);
83
84 Expect.equals(2, ">>> TEST OK".allMatches(stdoutOutput).length);
85 Expect.equals(2, ">>> TEST FAIL".allMatches(stdoutOutput).length);
86 Expect.equals(4, ">>>".allMatches(stdoutOutput).length);
87 }); 75 });
88 } 76 }
89 77
90 void main() { 78 void main() {
91 var tmpDir; 79 var tmpDir;
92 asyncTest(() { 80 asyncTest(() {
93 return setup() 81 return setup()
94 .then(launchDart2Js) 82 .then(launchDart2Js)
95 .then(runTests) 83 .then(runTests)
96 .whenComplete(cleanUp); 84 .whenComplete(cleanUp);
97 }); 85 });
98 } 86 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/dart2js_batch2_run.dart ('k') | tests/compiler/dart2js/dart2js_batch_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698