testBuildHook function
Future<void>
testBuildHook(
{ - required String description,
- required dynamic mainMethod(
- List<String> arguments
),
- required void check(
- BuildConfig config,
- BuildOutput output
),
- BuildMode? buildMode,
- Architecture? targetArchitecture,
- OS? targetOS,
- IOSSdk? targetIOSSdk,
- int? targetIOSVersion,
- int? targetMacOSVersion,
- int? targetAndroidNdkApi,
- CCompilerConfig? cCompiler,
- LinkModePreference? linkModePreference,
- Iterable<String>? supportedAssetTypes,
- bool? linkingEnabled,
})
Implementation
@isTest
Future<void> testBuildHook({
required String description,
// ignore: inference_failure_on_function_return_type
required Function(List<String> arguments) mainMethod,
required void Function(BuildConfig config, BuildOutput output) check,
BuildMode? buildMode,
Architecture? targetArchitecture,
OS? targetOS,
IOSSdk? targetIOSSdk,
int? targetIOSVersion,
int? targetMacOSVersion,
int? targetAndroidNdkApi,
CCompilerConfig? cCompiler,
LinkModePreference? linkModePreference,
Iterable<String>? supportedAssetTypes,
bool? linkingEnabled,
}) async {
test(
description,
() async {
final tempDir = await _tempDirForTest();
final outputDirectory = tempDir.resolve('output/');
await Directory.fromUri(outputDirectory).create();
final buildConfig = BuildConfig.build(
outputDirectory: outputDirectory,
packageName: await _packageName(),
packageRoot: Directory.current.uri,
buildMode: buildMode ?? BuildMode.release,
targetArchitecture: targetArchitecture ?? Architecture.current,
targetOS: targetOS ?? OS.current,
linkModePreference: linkModePreference ?? LinkModePreference.dynamic,
linkingEnabled: linkingEnabled ?? true,
cCompiler: cCompiler,
supportedAssetTypes: supportedAssetTypes,
targetAndroidNdkApi: targetAndroidNdkApi,
targetIOSSdk: targetIOSSdk,
targetIOSVersion: targetIOSVersion,
targetMacOSVersion: targetMacOSVersion,
) as BuildConfigImpl;
final buildConfigUri = tempDir.resolve('build_config.json');
await _writeBuildConfig(buildConfigUri, buildConfig);
await mainMethod(['--config=${buildConfigUri.toFilePath()}']);
final hookOutput = await _readOutput(buildConfig);
check(buildConfig, hookOutput);
final allAssets = [
...hookOutput.assets,
...hookOutput.assetsForLinking.values.expand((e) => e)
];
for (final asset in allAssets.where((asset) => asset.file != null)) {
final file = File.fromUri(asset.file!);
expect(await file.exists(), true);
}
if (allAssets.any((asset) => asset is NativeCodeAsset)) {
expect(buildConfig.supportedAssetTypes, NativeCodeAsset.type);
}
if (allAssets.any((asset) => asset is DataAsset)) {
expect(buildConfig.supportedAssetTypes, DataAsset.type);
}
},
);
}