[native_assets] Preparation existing tests for future of other (i.e. non-Code) assets (#160436)

In the future a hook may be invoked multiple times with different
`supportedAssetTypes` (soon to be renamed to `buildAssetTypes`).

The hook should only emit those asset types that are in
`supportedAssetTypes` - anything else is an error. Right now flutter
happens to invoke hooks only with `Code` asset types, but more asset
types are coming, for which this PR is a preparation for.
This commit is contained in:
Martin Kustermann 2024-12-20 18:46:55 +01:00 committed by GitHub
parent a5902458c6
commit 181f4244b4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 20 additions and 8 deletions

View File

@ -9,6 +9,10 @@ import 'package:native_toolchain_c/native_toolchain_c.dart';
void main(List<String> args) async {
await build(args, (BuildConfig config, BuildOutputBuilder output) async {
if (!config.supportedAssetTypes.contains(CodeAsset.type)) {
return;
}
final String assetName;
if (config.linkingEnabled) {
// The link hook will be run. So emit an asset with a name that is

View File

@ -6,6 +6,9 @@ import 'package:native_assets_cli/code_assets.dart';
void main(List<String> args) async {
await link(args, (LinkConfig config, LinkOutputBuilder output) async {
if (!config.supportedAssetTypes.contains(CodeAsset.type)) {
return;
}
final CodeAsset asset = config.codeAssets.single;
final String packageName = config.packageName;
output.codeAssets.add(

View File

@ -13,6 +13,7 @@
@Timeout(Duration(minutes: 10))
library;
import 'dart:convert';
import 'dart:io';
import 'package:file/file.dart';
@ -465,14 +466,14 @@ void expectCCompilerIsConfigured(Directory appDirectory) {
continue;
}
final File config = subDir.childFile('config.json');
expect(config, exists);
final String contents = config.readAsStringSync();
// Dry run does not pass compiler info.
if (contents.contains('"dry_run": true')) {
final File configFile = subDir.childFile('config.json');
expect(configFile, exists);
final Map<String, Object?> config =
json.decode(configFile.readAsStringSync()) as Map<String, Object?>;
if (!(config['supported_asset_types']! as List<dynamic>).contains(CodeAsset.type)) {
continue;
}
expect(contents, contains('"cc": '));
expect((config['c_compiler']! as Map<String, Object?>)['cc'], isNotNull);
}
}

View File

@ -180,14 +180,18 @@ FFI_PLUGIN_EXPORT intptr_t add(intptr_t a, intptr_t b) {
// Update builder to build the native library and link it into the main library.
const String builderSource = r'''
import 'package:native_toolchain_c/native_toolchain_c.dart';
import 'package:logging/logging.dart';
import 'package:native_assets_cli/native_assets_cli.dart';
import 'package:native_assets_cli/code_assets.dart';
import 'package:native_toolchain_c/native_toolchain_c.dart';
void main(List<String> args) async {
await build(args, (config, output) async {
final packageName = config.packageName;
if (!config.supportedAssetTypes.contains(CodeAsset.type)) {
return;
}
final builders = [
CBuilder.library(
name: 'add',