Index: pkg/kernel/test/self_check_util.dart |
diff --git a/pkg/kernel/test/self_check_util.dart b/pkg/kernel/test/self_check_util.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f1a5d4d150910a916efcb2682b4bc14d5db70464 |
--- /dev/null |
+++ b/pkg/kernel/test/self_check_util.dart |
@@ -0,0 +1,34 @@ |
+// Copyright (c) 2016, 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. |
+ |
+import '../bin/batch_util.dart'; |
+import 'dart:async'; |
+ |
+/// Wraps a main() method for a test that should be runnable as a self-checking |
+/// unit test. |
+/// |
+/// These tests can be run like: |
+/// |
+/// tools/test.py -cdartk -rself_check |
+/// |
+/// The test can either be run with a single file passed on the command line |
+/// or run in batch mode. |
+runSelfCheck(List<String> args, runTest(String filename)) { |
+ Future<CompilerOutcome> batchMain(List<String> arguments) async { |
+ if (arguments.length != 1) { |
+ throw 'Exactly one argument expected'; |
+ } |
+ String filename = arguments[0]; |
+ if (!filename.endsWith('.dill')) { |
+ throw 'File does not have expected .dill extension: $filename'; |
+ } |
+ runTest(filename); |
kustermann
2016/12/06 10:39:05
Maybe document if this [runTest] can ever be async
asgerf
2016/12/06 13:42:08
Good point. I've changed it to be asynchronous.
|
+ return CompilerOutcome.Ok; |
+ } |
+ if (args.length == 1 && args[0] == '--batch') { |
+ runBatch(batchMain); |
+ } else { |
+ batchMain(args); |
+ } |
+} |