// 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.

// @dart = 2.9

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