| // 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 'dart:async'; | |
| import 'package:kernel/src/tool/batch_util.dart'; | |
| /// 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, void 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); | |
| return CompilerOutcome.Ok; | |
| } | |
| if (args.length == 1 && args[0] == '--batch') { | |
| runBatch(batchMain); | |
| } else { | |
| batchMain(args); | |
| } | |
| } |