blob: 2640fa752c78fd0ac31c1b34d58c1b46fea44b30 [file] [log] [blame]
// Copyright (c) 2024, 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.
/// Defines how dynamic modules get compiled and executed on each target
/// platform.
library;
import 'model.dart';
/// Possible backends where the tests can be executed.
enum Target { aot, jit, dart2wasm, ddc }
/// Defines how to build and run a test in a specific target.
///
/// The test framework will use a single executor for all tests in a suite. This
/// can be leveraged to keep compilers warm and cache results if that is
/// helpful.
abstract class TargetExecutor {
/// Takes the steps necessary to build the initial version of the app.
Future compileApplication(DynamicModuleTest test);
/// Takes the steps necessary to build a single dynamic module.
Future compileDynamicModule(DynamicModuleTest test, String name);
/// Takes the steps necessary to execute the test.
///
/// This step will only be called after both the app and modules have been
/// generated.
Future executeApplication(DynamicModuleTest test);
/// Notification that all tests have been executed and that this executor is
/// no longer going to be used anymore.
Future suiteComplete();
}