testCodeBuildHook function
Future<void>
testCodeBuildHook({
- required FutureOr<
void> mainMethod(), - required FutureOr<
void> check(), - bool? linkingEnabled,
- Architecture? targetArchitecture,
- OS? targetOS,
- IOSSdk? targetIOSSdk = IOSSdk.iPhoneOS,
- int? targetIOSVersion = 17,
- int? targetMacOSVersion = 13,
- int? targetAndroidNdkApi = 30,
- CCompilerConfig? cCompiler,
- LinkModePreference? linkModePreference = LinkModePreference.dynamic,
- PackageUserDefines? userDefines,
- Map<
String, List< ? assets,EncodedAsset> >
Tests the main function of a hook/build.dart
with CodeAssets.
This method will throw an exception on validation errors.
This is intended to be used from tests, e.g.:
test('test my build hook', () async {
await testCodeBuildHook(
...
);
});
The hook is run in isolation. No user-defines are read from the pubspec,
they must be provided via userDefines
. No other hooks are run, if the hook
requires assets from other build hooks, the must be provided in assets
.
Implementation
Future<void> testCodeBuildHook({
required FutureOr<void> Function(List<String> arguments) mainMethod,
required FutureOr<void> Function(BuildInput, BuildOutput) check,
bool? linkingEnabled,
Architecture? targetArchitecture,
OS? targetOS,
IOSSdk? targetIOSSdk = IOSSdk.iPhoneOS,
int? targetIOSVersion = 17,
int? targetMacOSVersion = 13,
int? targetAndroidNdkApi = 30,
CCompilerConfig? cCompiler,
LinkModePreference? linkModePreference = LinkModePreference.dynamic,
// TODO(https://github.com/dart-lang/native/issues/2241): Cleanup how the
// following parameters are passed in.
PackageUserDefines? userDefines,
Map<String, List<EncodedAsset>>? assets,
}) async {
targetOS ??= OS.current;
final extension = CodeAssetExtension(
linkModePreference: linkModePreference!,
cCompiler: cCompiler,
targetArchitecture: targetArchitecture ?? Architecture.current,
targetOS: targetOS,
iOS: targetOS == OS.iOS
? IOSCodeConfig(
targetSdk: targetIOSSdk!,
targetVersion: targetIOSVersion!,
)
: null,
macOS: targetOS == OS.macOS
? MacOSCodeConfig(targetVersion: targetMacOSVersion!)
: null,
android: targetOS == OS.android
? AndroidCodeConfig(targetNdkApi: targetAndroidNdkApi!)
: null,
);
await testBuildHook(
mainMethod: mainMethod,
check: check,
linkingEnabled: linkingEnabled,
userDefines: userDefines,
assets: assets,
extensions: [extension],
);
}