// Copyright (c) 2015, 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 'analysis_options_test.dart' as analysis_options_test;
import 'build_mode_test.dart' as build_mode_test;
import 'driver_test.dart' as driver_test;
import 'embedder_test.dart' as embedder_test;
import 'errors_reported_once_test.dart' as errors_reported_once_test;
import 'errors_upgrade_fails_cli_test.dart' as errors_upgrade_fails_cli_test;
import 'options_test.dart' as options_test;
import 'package_prefix_test.dart' as package_prefix_test;
import 'perf_report_test.dart' as perf_report_test;
import 'reporter_test.dart' as reporter_test;
import 'sdk_ext_test.dart' as sdk_ext_test;
import 'strong_mode_test.dart' as strong_mode_test;

main() {
  analysis_options_test.main();
  build_mode_test.main();
  driver_test.main();
  embedder_test.main();
  errors_reported_once_test.main();
  errors_upgrade_fails_cli_test.main();
  options_test.main();
  package_prefix_test.main();
  perf_report_test.main();
  reporter_test.main();
  sdk_ext_test.main();
  strong_mode_test.main();
}
