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

Unified Diff: pkg/dev_compiler/bin/dartdevc.dart

Issue 2987393002: enable batch mode for dartdevc tests, also fix status so ddc bots pass (Closed)
Patch Set: fix Created 3 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/dev_compiler/lib/src/compiler/command.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/dev_compiler/bin/dartdevc.dart
diff --git a/pkg/dev_compiler/bin/dartdevc.dart b/pkg/dev_compiler/bin/dartdevc.dart
index 4a0ccbe410fcfff622ed5501e292d2d7a0246e5c..6a94c34a6065b27824f5482268c33c734f0bc07a 100755
--- a/pkg/dev_compiler/bin/dartdevc.dart
+++ b/pkg/dev_compiler/bin/dartdevc.dart
@@ -3,40 +3,13 @@
// 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.
-/// Command line entry point for Dart Development Compiler (dartdevc).
-///
-/// Supported commands are
-/// * compile: builds a collection of dart libraries into a single JS module
-///
-/// Additionally, these commands are being considered
-/// * link: combines several JS modules into a single JS file
-/// * build: compiles & links a set of code, automatically determining
-/// appropriate groupings of libraries to combine into JS modules
-/// * watch: watch a directory and recompile build units automatically
-/// * serve: uses `watch` to recompile and exposes a simple static file server
-/// for local development
-///
-/// These commands are combined so we have less names to expose on the PATH,
-/// and for development simplicity while the precise UI has not been determined.
-///
-/// A more typical structure for web tools is simply to have the compiler with
-/// "watch" as an option. The challenge for us is:
-///
-/// * Dart used to assume whole-program compiles, so we don't have a
-/// user-declared unit of building, and neither "libraries" or "packages" will
-/// work,
-/// * We do not assume a `node` JS installation, so we cannot easily reuse
-/// existing tools for the "link" step, or assume users have a local
-/// file server,
-/// * We didn't have a file watcher API at first,
-/// * We had no conventions about where compiled output should go (or even
-/// that we would be compiling at all, vs running on an in-browser Dart VM),
-/// * We wanted a good first impression with our simple examples, so we used
-/// local file servers, and users have an expectation of it now, even though
-/// it doesn't scale to typical apps that need their own real servers.
+/// Command line entry point for Dart Development Compiler (dartdevc), used to
+/// compile a collection of dart libraries into a single JS module
import 'dart:async';
+import 'dart:convert';
import 'dart:io';
+import 'dart:isolate';
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/src/command_line/arguments.dart';
import 'package:analyzer/src/generated/engine.dart' show AnalysisEngine;
@@ -48,7 +21,9 @@ Future main(List<String> args) async {
args = preprocessArgs(PhysicalResourceProvider.INSTANCE, args);
if (args.contains('--persistent_worker')) {
- new _CompilerWorker(args..remove('--persistent_worker')).run();
+ await new _CompilerWorker(args..remove('--persistent_worker')).run();
+ } else if (args.isNotEmpty && args.last == "--batch") {
+ await runBatch(args.sublist(0, args.length - 1));
} else {
exitCode = compile(args);
}
@@ -73,3 +48,27 @@ class _CompilerWorker extends AsyncWorkerLoop {
..output = output.toString();
}
}
+
+runBatch(List<String> batchArgs) async {
+ int totalTests = 0;
+ int testsFailed = 0;
+ var watch = new Stopwatch()..start();
+ print('>>> BATCH START');
+ String line;
+ while ((line = stdin.readLineSync(encoding: UTF8)).isNotEmpty) {
+ totalTests++;
+ var args = batchArgs.toList()..addAll(line.split(new RegExp(r'\s+')));
+
+ // We don't try/catch here, since `compile` should handle that.
+ var compileExitCode = compile(args);
+ AnalysisEngine.instance.clearCaches();
+ stderr.writeln('>>> EOF STDERR');
+ var outcome = compileExitCode == 0
+ ? 'PASS'
+ : compileExitCode == 70 ? 'CRASH' : 'FAIL';
+ print('>>> TEST $outcome ${watch.elapsedMilliseconds}ms');
+ }
+ int time = watch.elapsedMilliseconds;
+ print('>>> BATCH END '
+ '(${totalTests - testsFailed})/$totalTests ${time}ms');
+}
« no previous file with comments | « no previous file | pkg/dev_compiler/lib/src/compiler/command.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698