// 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);
  }
}
