From de36084ba8c2c91b316c0054fc17ee9adf74b65c Mon Sep 17 00:00:00 2001 From: Liam Appelbe Date: Wed, 26 Nov 2025 13:16:12 +1100 Subject: [PATCH 1/4] WIP: [ffigen] Support concurrent tests --- pkgs/ffigen/dart_test.yaml | 3 --- pkgs/ffigen/lib/src/logger.dart | 10 +++++---- .../example_tests/libclang_example_test.dart | 22 +++++++++++-------- .../large_integration_tests/large_test.dart | 5 +++-- pkgs/ffigen/test/native_test/native_test.dart | 5 +---- pkgs/ffigen/test/test_utils.dart | 18 ++------------- pkgs/ffigen/tool/libclang_config.yaml | 1 + 7 files changed, 26 insertions(+), 38 deletions(-) diff --git a/pkgs/ffigen/dart_test.yaml b/pkgs/ffigen/dart_test.yaml index 48ec12994d..5e41a566bd 100644 --- a/pkgs/ffigen/dart_test.yaml +++ b/pkgs/ffigen/dart_test.yaml @@ -1,5 +1,2 @@ # This package uses dart:ffi. test_on: vm - -# https://github.com/dart-lang/native/issues/461 -concurrency: 1 diff --git a/pkgs/ffigen/lib/src/logger.dart b/pkgs/ffigen/lib/src/logger.dart index 50c932182d..9944d883f7 100644 --- a/pkgs/ffigen/lib/src/logger.dart +++ b/pkgs/ffigen/lib/src/logger.dart @@ -7,14 +7,16 @@ import 'dart:io'; import 'package:logging/logging.dart'; /// Creates a default logger that logs to stdout and stderr. -Logger createDefaultLogger() { +Logger createDefaultLogger([Level level = Level.INFO]) { final logger = Logger.detached('FFIgen'); - logger.level = Level.INFO; + logger.level = level; logger.onRecord.listen((record) { + final levelStr = '[${record.level.name}]'.padRight(9); + final log = '$levelStr: ${record.message}'; if (record.level >= Level.WARNING) { - stderr.writeln(record.message); + stderr.writeln(log); } else { - stdout.writeln(record.message); + stdout.writeln(log); } if (record.error != null) { stderr.writeln(record.error); diff --git a/pkgs/ffigen/test/example_tests/libclang_example_test.dart b/pkgs/ffigen/test/example_tests/libclang_example_test.dart index ec8b0d89b2..ef0fb19f69 100644 --- a/pkgs/ffigen/test/example_tests/libclang_example_test.dart +++ b/pkgs/ffigen/test/example_tests/libclang_example_test.dart @@ -15,9 +15,6 @@ import '../test_utils.dart'; void main() { group('example_test', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); test('libclang-example', () { final configYaml = File( path.join( @@ -27,12 +24,19 @@ void main() { 'config.yaml', ), ).absolute; - late FfiGenerator generator; - late Library library; - withChDir(configYaml.path, () { - generator = testConfigFromPath(configYaml.path); - library = parse(testContext(generator)); - }); + final generator = testConfigFromPath(configYaml.path); + + // The clang parser is run using the current working directory, and the + // libclang-example config relies on relative paths for one of its '-I' + // compiler options. It can't use absolute paths because it's checked in + // yaml code. To support concurrent tests, we can't set Directory.current. + // As a workaround, add an extra '-I' option that uses the absolute path. + generator.headers.compilerOptions!.add( + '-I${path.join(packagePathForTests, 'third_party/libclang/include')}' + ); + + final context = testContext(generator); + final library = parse(context); matchLibraryWithExpected(library, 'example_libclang.dart', [ generator.output.dartFile.toFilePath(), diff --git a/pkgs/ffigen/test/large_integration_tests/large_test.dart b/pkgs/ffigen/test/large_integration_tests/large_test.dart index 358a1e5263..37ff42bb1d 100644 --- a/pkgs/ffigen/test/large_integration_tests/large_test.dart +++ b/pkgs/ffigen/test/large_integration_tests/large_test.dart @@ -5,6 +5,7 @@ import 'package:ffigen/src/code_generator/imports.dart'; import 'package:ffigen/src/config_provider/config.dart'; import 'package:ffigen/src/config_provider/config_types.dart'; +import 'package:ffigen/src/context.dart'; import 'package:ffigen/src/header_parser.dart'; import 'package:logging/logging.dart'; import 'package:path/path.dart' as path; @@ -25,7 +26,7 @@ void main() { 'include', ); final logArr = []; - logToArray(logArr, Level.SEVERE); + final logger = logToArray(logArr, Level.SEVERE); final generator = FfiGenerator( output: Output( dartFile: Uri.file('unused'), @@ -75,7 +76,7 @@ void main() { imported: [ImportedType(ffiImport, 'Int64', 'int', 'time_t')], ), ); - final library = parse(testContext(generator)); + final library = parse(Context(logger, generator)); matchLibraryWithExpected( library, diff --git a/pkgs/ffigen/test/native_test/native_test.dart b/pkgs/ffigen/test/native_test/native_test.dart index 732fe6758c..31a928a73f 100644 --- a/pkgs/ffigen/test/native_test/native_test.dart +++ b/pkgs/ffigen/test/native_test/native_test.dart @@ -42,10 +42,7 @@ void main() { ), ).absolute; - late FfiGenerator config; - withChDir(configFile.path, () { - config = testConfigFromPath(configFile.path); - }); + final config = testConfigFromPath(configFile.path); final library = parse(testContext(config)); library.generateFile(outFile); diff --git a/pkgs/ffigen/test/test_utils.dart b/pkgs/ffigen/test/test_utils.dart index de7c537689..000d9005c2 100644 --- a/pkgs/ffigen/test/test_utils.dart +++ b/pkgs/ffigen/test/test_utils.dart @@ -11,6 +11,7 @@ import 'package:ffigen/src/config_provider/config.dart'; import 'package:ffigen/src/config_provider/utils.dart'; import 'package:ffigen/src/config_provider/yaml_config.dart'; import 'package:ffigen/src/context.dart'; +import 'package:ffigen/src/logger.dart'; import 'package:ffigen/src/visitor/ast.dart'; import 'package:logging/logging.dart'; import 'package:package_config/package_config_types.dart'; @@ -21,7 +22,7 @@ import 'package:yaml/yaml.dart' as yaml; export 'package:ffigen/src/config_provider/utils.dart'; Context testContext([FfiGenerator? generator]) => Context( - Logger.root, + createDefaultLogger(Level.SEVERE), generator ?? FfiGenerator(output: Output(dartFile: Uri.file('unused'))), ); @@ -248,19 +249,4 @@ FfiGenerator testConfigFromPath(String path) { return testConfig(yamlBody, filename: path); } -T withChDir(String path, T Function() inner) { - final oldDir = Directory.current; - Directory.current = File(path).parent; - - late T result; - - try { - result = inner(); - } finally { - Directory.current = oldDir; - } - - return result; -} - bool isFlutterTester = Platform.resolvedExecutable.contains('flutter_tester'); diff --git a/pkgs/ffigen/tool/libclang_config.yaml b/pkgs/ffigen/tool/libclang_config.yaml index e5d7ebc2f6..7b90a38071 100644 --- a/pkgs/ffigen/tool/libclang_config.yaml +++ b/pkgs/ffigen/tool/libclang_config.yaml @@ -64,6 +64,7 @@ functions: - clang_getDiagnosticSeverity - clang_disposeDiagnostic - clang_parseTranslationUnit + - clang_parseTranslationUnit2FullArgv - clang_disposeTranslationUnit - clang_EvalResult_getKind - clang_EvalResult_getAsInt From 299f078b7ee6b5f719f2e0d26f4b4a320239c58c Mon Sep 17 00:00:00 2001 From: Liam Appelbe Date: Wed, 26 Nov 2025 13:22:32 +1100 Subject: [PATCH 2/4] fix analysis --- pkgs/ffigen/test/example_tests/libclang_example_test.dart | 5 +---- pkgs/ffigen/test/native_test/native_test.dart | 1 - pkgs/ffigen/test/regen.dart | 5 ++--- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/pkgs/ffigen/test/example_tests/libclang_example_test.dart b/pkgs/ffigen/test/example_tests/libclang_example_test.dart index ef0fb19f69..4435bcd36c 100644 --- a/pkgs/ffigen/test/example_tests/libclang_example_test.dart +++ b/pkgs/ffigen/test/example_tests/libclang_example_test.dart @@ -4,10 +4,7 @@ import 'dart:io'; -import 'package:ffigen/src/code_generator/library.dart'; -import 'package:ffigen/src/config_provider/config.dart'; import 'package:ffigen/src/header_parser.dart'; -import 'package:logging/logging.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; @@ -32,7 +29,7 @@ void main() { // yaml code. To support concurrent tests, we can't set Directory.current. // As a workaround, add an extra '-I' option that uses the absolute path. generator.headers.compilerOptions!.add( - '-I${path.join(packagePathForTests, 'third_party/libclang/include')}' + '-I${path.join(packagePathForTests, 'third_party/libclang/include')}', ); final context = testContext(generator); diff --git a/pkgs/ffigen/test/native_test/native_test.dart b/pkgs/ffigen/test/native_test/native_test.dart index 31a928a73f..1fcb5e2afb 100644 --- a/pkgs/ffigen/test/native_test/native_test.dart +++ b/pkgs/ffigen/test/native_test/native_test.dart @@ -6,7 +6,6 @@ import 'dart:ffi'; import 'dart:io'; import 'dart:math'; -import 'package:ffigen/ffigen.dart'; import 'package:ffigen/src/header_parser.dart' show parse; import 'package:path/path.dart' as path; import 'package:test/test.dart'; diff --git a/pkgs/ffigen/test/regen.dart b/pkgs/ffigen/test/regen.dart index de8aabb63d..3ca5c0fe30 100644 --- a/pkgs/ffigen/test/regen.dart +++ b/pkgs/ffigen/test/regen.dart @@ -21,9 +21,8 @@ $ dart run test/setup.dart && dart run test/regen.dart && dart test void _regenConfig(Logger logger, String yamlConfigPath) { final path = p.join(packagePathForTests, yamlConfigPath); - withChDir(path, () { - testConfigFromPath(path).generate(logger: logger); - }); + Directory.current = File(path).parent; + testConfigFromPath(path).generate(logger: logger); } Future main(List args) async { From 50043a9958b63b951e395fe2f49144717734dc5d Mon Sep 17 00:00:00 2001 From: Liam Appelbe Date: Wed, 26 Nov 2025 13:40:03 +1100 Subject: [PATCH 3/4] revert cruft --- pkgs/ffigen/tool/libclang_config.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/ffigen/tool/libclang_config.yaml b/pkgs/ffigen/tool/libclang_config.yaml index 7b90a38071..e5d7ebc2f6 100644 --- a/pkgs/ffigen/tool/libclang_config.yaml +++ b/pkgs/ffigen/tool/libclang_config.yaml @@ -64,7 +64,6 @@ functions: - clang_getDiagnosticSeverity - clang_disposeDiagnostic - clang_parseTranslationUnit - - clang_parseTranslationUnit2FullArgv - clang_disposeTranslationUnit - clang_EvalResult_getKind - clang_EvalResult_getAsInt From 8cc8162ea7786e3ddc327852bf3958c48dec562d Mon Sep 17 00:00:00 2001 From: Liam Appelbe Date: Thu, 27 Nov 2025 09:32:32 +1100 Subject: [PATCH 4/4] Clean up test logging --- .../decl_decl_collision_test.dart | 4 --- .../decl_symbol_address_collision_test.dart | 2 -- .../decl_type_name_collision_test.dart | 2 -- .../reserved_keyword_collision_test.dart | 4 --- .../config_tests/deprecate_assetid_test.dart | 15 ++++++--- .../test/config_tests/json_schema_test.dart | 5 ++- .../no_cursor_definition_warn_test.dart | 5 ++- .../config_tests/unknown_keys_warn_test.dart | 5 ++- .../example_tests/cjson_example_test.dart | 4 --- .../example_tests/ffinative_example_test.dart | 5 --- .../objective_c_example_test.dart | 5 --- .../shared_bindings_example_test.dart | 5 --- .../example_tests/simple_example_test.dart | 5 --- .../example_tests/swift_example_test.dart | 5 --- .../comment_markup_test.dart | 2 -- .../header_parser_tests/dart_handle_test.dart | 1 - .../enum_int_mimic_test.dart | 2 -- .../forward_decl_test.dart | 2 -- .../function_n_struct_test.dart | 2 -- .../header_parser_tests/functions_test.dart | 1 - .../header_parser_tests/globals_test.dart | 1 - .../imported_types_test.dart | 1 - .../test/header_parser_tests/macros_test.dart | 2 -- .../native_func_typedef_test.dart | 2 -- .../nested_parsing_test.dart | 1 - .../opaque_dependencies_test.dart | 2 -- .../packed_structs_test.dart | 2 -- .../header_parser_tests/regress_384_test.dart | 2 -- .../separate_definition_test.dart | 4 --- .../test/header_parser_tests/sort_test.dart | 1 - .../struct_fptr_fields_test.dart | 4 +-- .../header_parser_tests/typedef_test.dart | 2 -- .../test/header_parser_tests/unions_test.dart | 2 -- .../unnamed_enums_test.dart | 1 - .../header_parser_tests/varargs_test.dart | 4 +-- .../large_objc_test.dart | 9 +----- .../large_integration_tests/large_test.dart | 13 +++----- .../native_objc_test/deprecated_test.dart | 2 +- .../test/native_objc_test/log_test.dart | 5 ++- .../test/native_objc_test/ns_range_test.dart | 2 +- .../native_objc_test/transitive_test.dart | 2 +- pkgs/ffigen/test/native_objc_test/util.dart | 2 +- pkgs/ffigen/test/native_test/native_test.dart | 1 - .../ffigen/test/rename_tests/rename_test.dart | 1 - pkgs/ffigen/test/test_utils.dart | 32 +++++++------------ 45 files changed, 48 insertions(+), 133 deletions(-) diff --git a/pkgs/ffigen/test/collision_tests/decl_decl_collision_test.dart b/pkgs/ffigen/test/collision_tests/decl_decl_collision_test.dart index dd4e36159c..e7d32ada6b 100644 --- a/pkgs/ffigen/test/collision_tests/decl_decl_collision_test.dart +++ b/pkgs/ffigen/test/collision_tests/decl_decl_collision_test.dart @@ -5,15 +5,11 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/config_provider/config.dart'; import 'package:ffigen/src/header_parser/parser.dart'; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; void main() { group('decl_decl_collision_test', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); test('declaration conflict', () { final context = testContext( FfiGenerator( diff --git a/pkgs/ffigen/test/collision_tests/decl_symbol_address_collision_test.dart b/pkgs/ffigen/test/collision_tests/decl_symbol_address_collision_test.dart index d698d4a2a5..28bf8f90e0 100644 --- a/pkgs/ffigen/test/collision_tests/decl_symbol_address_collision_test.dart +++ b/pkgs/ffigen/test/collision_tests/decl_symbol_address_collision_test.dart @@ -5,7 +5,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/config_provider/config.dart'; import 'package:ffigen/src/header_parser/parser.dart'; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; @@ -14,7 +13,6 @@ late Library actual; void main() { group('decl_symbol_address_collision_test', () { setUpAll(() { - logWarnings(Level.SEVERE); final context = testContext( FfiGenerator( output: Output( diff --git a/pkgs/ffigen/test/collision_tests/decl_type_name_collision_test.dart b/pkgs/ffigen/test/collision_tests/decl_type_name_collision_test.dart index 3c225f3c76..4c811cbda1 100644 --- a/pkgs/ffigen/test/collision_tests/decl_type_name_collision_test.dart +++ b/pkgs/ffigen/test/collision_tests/decl_type_name_collision_test.dart @@ -5,7 +5,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; @@ -14,7 +13,6 @@ late Library actual; void main() { group('decl_type_name_collision test', () { setUpAll(() { - logWarnings(Level.SEVERE); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/collision_tests/reserved_keyword_collision_test.dart b/pkgs/ffigen/test/collision_tests/reserved_keyword_collision_test.dart index deb49b1be7..bded6ac88a 100644 --- a/pkgs/ffigen/test/collision_tests/reserved_keyword_collision_test.dart +++ b/pkgs/ffigen/test/collision_tests/reserved_keyword_collision_test.dart @@ -4,7 +4,6 @@ import 'package:ffigen/src/config_provider.dart'; import 'package:ffigen/src/header_parser.dart' as parser; -import 'package:logging/logging.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; @@ -12,9 +11,6 @@ import '../test_utils.dart'; void main() { group('reserved_keyword_collision_test', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); test('reserved keyword collision', () { final library = parser.parse( testContext( diff --git a/pkgs/ffigen/test/config_tests/deprecate_assetid_test.dart b/pkgs/ffigen/test/config_tests/deprecate_assetid_test.dart index de7d82086a..0f28703339 100644 --- a/pkgs/ffigen/test/config_tests/deprecate_assetid_test.dart +++ b/pkgs/ffigen/test/config_tests/deprecate_assetid_test.dart @@ -14,8 +14,13 @@ import '../test_utils.dart'; void main() { group('deprecate_assetId_test', () { final logArr = []; - final logger = logToArray(logArr, Level.WARNING); - final config = testConfig(''' + late FfiGenerator config; + setUpAll(() { + final logger = createTestLogger( + capturedMessages: logArr, + level: Level.WARNING, + ); + config = testConfig(''' ${strings.name}: 'NativeLibrary' ${strings.description}: 'Deprecation warning if assetId is used instead of ${strings.ffiNativeAsset}' ${strings.output}: 'unused' @@ -25,9 +30,9 @@ ${strings.headers}: ${strings.entryPoints}: - '${absPath('test/header_parser_tests/comment_markup.h')}' ''', logger: logger); - parse(Context(logger, config)); + parse(Context(logger, config)); + }); - final logStr = logArr.join('\n'); test('asset-id is correctly set', () { expect(config.output.style is NativeExternalBindings, true); expect( @@ -37,7 +42,7 @@ ${strings.headers}: }); test('Deprecation Warning is logged', () { - expect(logStr.contains('DEPRECATION WARNING'), true); + expect(logArr.join('\n').contains('DEPRECATION WARNING'), true); }); }); } diff --git a/pkgs/ffigen/test/config_tests/json_schema_test.dart b/pkgs/ffigen/test/config_tests/json_schema_test.dart index 0bd10a5ef0..3a38d9ad42 100644 --- a/pkgs/ffigen/test/config_tests/json_schema_test.dart +++ b/pkgs/ffigen/test/config_tests/json_schema_test.dart @@ -10,7 +10,6 @@ import 'package:ffigen/src/strings.dart' as strings; import 'package:file/local.dart'; import 'package:glob/glob.dart'; import 'package:json_schema/json_schema.dart'; -import 'package:logging/logging.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; import 'package:yaml/yaml.dart'; @@ -20,14 +19,14 @@ import '../test_utils.dart'; void main() { group('json_schema_test', () { final schema = YamlConfig.getsRootConfigSpec( - Logger.root, + createTestLogger(), ).generateJsonSchema(strings.ffigenJsonSchemaId); test('Schema Changes', () { final actualJsonSchema = const JsonEncoder.withIndent(strings.ffigenJsonSchemaIndent).convert( YamlConfig.getsRootConfigSpec( - Logger.root, + createTestLogger(), ).generateJsonSchema(strings.ffigenJsonSchemaId), ); final expectedJsonSchema = File( diff --git a/pkgs/ffigen/test/config_tests/no_cursor_definition_warn_test.dart b/pkgs/ffigen/test/config_tests/no_cursor_definition_warn_test.dart index 0f7cb18c62..322dfe88ca 100644 --- a/pkgs/ffigen/test/config_tests/no_cursor_definition_warn_test.dart +++ b/pkgs/ffigen/test/config_tests/no_cursor_definition_warn_test.dart @@ -15,7 +15,10 @@ void main() { group('no_cursor_definition_warn_test', () { setUpAll(() { final logArr = []; - final logger = logToArray(logArr, Level.WARNING); + final logger = createTestLogger( + capturedMessages: logArr, + level: Level.WARNING, + ); final config = testConfig(''' ${strings.name}: 'NativeLibrary' ${strings.description}: 'Warn for no cursor definition.' diff --git a/pkgs/ffigen/test/config_tests/unknown_keys_warn_test.dart b/pkgs/ffigen/test/config_tests/unknown_keys_warn_test.dart index ad36572981..cebb5d33f0 100644 --- a/pkgs/ffigen/test/config_tests/unknown_keys_warn_test.dart +++ b/pkgs/ffigen/test/config_tests/unknown_keys_warn_test.dart @@ -13,7 +13,10 @@ void main() { group('unknown_keys_warn_test', () { setUpAll(() { final logArr = []; - final logger = logToArray(logArr, Level.WARNING); + final logger = createTestLogger( + capturedMessages: logArr, + level: Level.WARNING, + ); testConfig(''' ${strings.name}: 'NativeLibrary' ${strings.description}: 'Warn for unknown keys.' diff --git a/pkgs/ffigen/test/example_tests/cjson_example_test.dart b/pkgs/ffigen/test/example_tests/cjson_example_test.dart index c6d23d3d72..2fc1c43bce 100644 --- a/pkgs/ffigen/test/example_tests/cjson_example_test.dart +++ b/pkgs/ffigen/test/example_tests/cjson_example_test.dart @@ -3,7 +3,6 @@ // BSD-style license that can be found in the LICENSE file. import 'package:ffigen/src/header_parser.dart'; -import 'package:logging/logging.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; @@ -11,9 +10,6 @@ import '../test_utils.dart'; void main() { group('cjson_example_test', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); test('c_json', () { final config = testConfigFromPath( path.join(packagePathForTests, 'example', 'c_json', 'config.yaml'), diff --git a/pkgs/ffigen/test/example_tests/ffinative_example_test.dart b/pkgs/ffigen/test/example_tests/ffinative_example_test.dart index 95a50ccd0f..5e70ca1143 100644 --- a/pkgs/ffigen/test/example_tests/ffinative_example_test.dart +++ b/pkgs/ffigen/test/example_tests/ffinative_example_test.dart @@ -3,7 +3,6 @@ // BSD-style license that can be found in the LICENSE file. import 'package:ffigen/src/header_parser.dart'; -import 'package:logging/logging.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; @@ -11,10 +10,6 @@ import '../test_utils.dart'; void main() { group('ffinative_example_test', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); - test('ffinative', () { final config = testConfigFromPath( path.join(packagePathForTests, 'example', 'ffinative', 'config.yaml'), diff --git a/pkgs/ffigen/test/example_tests/objective_c_example_test.dart b/pkgs/ffigen/test/example_tests/objective_c_example_test.dart index a5a40268ba..4702a38e5f 100644 --- a/pkgs/ffigen/test/example_tests/objective_c_example_test.dart +++ b/pkgs/ffigen/test/example_tests/objective_c_example_test.dart @@ -7,7 +7,6 @@ library; import 'package:ffigen/src/header_parser.dart'; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../../example/objective_c/generate_code.dart' show config; @@ -15,10 +14,6 @@ import '../test_utils.dart'; void main() { group('objective_c_example_test', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); - test('objective_c', () { final output = parse(testContext(config)).generate(); diff --git a/pkgs/ffigen/test/example_tests/shared_bindings_example_test.dart b/pkgs/ffigen/test/example_tests/shared_bindings_example_test.dart index 3ea604bc88..f950b9f669 100644 --- a/pkgs/ffigen/test/example_tests/shared_bindings_example_test.dart +++ b/pkgs/ffigen/test/example_tests/shared_bindings_example_test.dart @@ -3,7 +3,6 @@ // BSD-style license that can be found in the LICENSE file. import 'package:ffigen/src/header_parser.dart'; -import 'package:logging/logging.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; @@ -11,10 +10,6 @@ import '../test_utils.dart'; void main() { group('shared_bindings_example', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); - test('a_shared_base bindings', () { final config = testConfigFromPath( path.join( diff --git a/pkgs/ffigen/test/example_tests/simple_example_test.dart b/pkgs/ffigen/test/example_tests/simple_example_test.dart index b2450ae3fe..4d5fee6394 100644 --- a/pkgs/ffigen/test/example_tests/simple_example_test.dart +++ b/pkgs/ffigen/test/example_tests/simple_example_test.dart @@ -3,7 +3,6 @@ // BSD-style license that can be found in the LICENSE file. import 'package:ffigen/src/header_parser.dart'; -import 'package:logging/logging.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; @@ -11,10 +10,6 @@ import '../test_utils.dart'; void main() { group('simple_example_test', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); - test('simple', () { final config = testConfigFromPath( path.join(packagePathForTests, 'example', 'simple', 'config.yaml'), diff --git a/pkgs/ffigen/test/example_tests/swift_example_test.dart b/pkgs/ffigen/test/example_tests/swift_example_test.dart index 67693db808..c0d2b91e34 100644 --- a/pkgs/ffigen/test/example_tests/swift_example_test.dart +++ b/pkgs/ffigen/test/example_tests/swift_example_test.dart @@ -10,7 +10,6 @@ import 'dart:async'; import 'dart:io'; import 'package:ffigen/src/header_parser.dart'; -import 'package:logging/logging.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; @@ -18,10 +17,6 @@ import '../test_utils.dart'; void main() { group('swift_example_test', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); - test('swift', () async { // Run the swiftc command from the example README, to generate the header. final process = await Process.start('swiftc', [ diff --git a/pkgs/ffigen/test/header_parser_tests/comment_markup_test.dart b/pkgs/ffigen/test/header_parser_tests/comment_markup_test.dart index 963243ef8b..80cbd8f37b 100644 --- a/pkgs/ffigen/test/header_parser_tests/comment_markup_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/comment_markup_test.dart @@ -5,7 +5,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; @@ -14,7 +13,6 @@ late Library actual; void main() { group('comment_markup_test', () { setUpAll(() { - logWarnings(Level.SEVERE); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/header_parser_tests/dart_handle_test.dart b/pkgs/ffigen/test/header_parser_tests/dart_handle_test.dart index c1c92fbc94..8148c9a41c 100644 --- a/pkgs/ffigen/test/header_parser_tests/dart_handle_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/dart_handle_test.dart @@ -16,7 +16,6 @@ late Library actual; void main() { group('dart_handle_test', () { setUpAll(() { - logWarnings(); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/header_parser_tests/enum_int_mimic_test.dart b/pkgs/ffigen/test/header_parser_tests/enum_int_mimic_test.dart index ae94c70e6e..783427b602 100644 --- a/pkgs/ffigen/test/header_parser_tests/enum_int_mimic_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/enum_int_mimic_test.dart @@ -5,7 +5,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; @@ -14,7 +13,6 @@ late Library actual; void main() { group('enum_int_mimic', () { setUpAll(() { - logWarnings(Level.SEVERE); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/header_parser_tests/forward_decl_test.dart b/pkgs/ffigen/test/header_parser_tests/forward_decl_test.dart index 2f9f8cd449..ac4d12d773 100644 --- a/pkgs/ffigen/test/header_parser_tests/forward_decl_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/forward_decl_test.dart @@ -5,7 +5,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; @@ -14,7 +13,6 @@ late Library actual; void main() { group('forward_decl_test', () { setUpAll(() { - logWarnings(Level.SEVERE); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/header_parser_tests/function_n_struct_test.dart b/pkgs/ffigen/test/header_parser_tests/function_n_struct_test.dart index ac154e886d..e1401eacfe 100644 --- a/pkgs/ffigen/test/header_parser_tests/function_n_struct_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/function_n_struct_test.dart @@ -6,7 +6,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/config_provider/config.dart'; import 'package:ffigen/src/header_parser/parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; @@ -16,7 +15,6 @@ late Library actual, expected; void main() { group('function_n_struct_test', () { setUpAll(() { - logWarnings(Level.SEVERE); expected = expectedLibrary(); actual = parser.parse( testContext( diff --git a/pkgs/ffigen/test/header_parser_tests/functions_test.dart b/pkgs/ffigen/test/header_parser_tests/functions_test.dart index 413d828c6f..664516593c 100644 --- a/pkgs/ffigen/test/header_parser_tests/functions_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/functions_test.dart @@ -14,7 +14,6 @@ late Library actual; void main() { group('functions_test', () { setUpAll(() { - logWarnings(); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/header_parser_tests/globals_test.dart b/pkgs/ffigen/test/header_parser_tests/globals_test.dart index 3224c5601d..ee5d0160ce 100644 --- a/pkgs/ffigen/test/header_parser_tests/globals_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/globals_test.dart @@ -15,7 +15,6 @@ late Library actual, expected; void main() { group('globals_test', () { setUpAll(() { - logWarnings(); expected = expectedLibrary(); actual = parser.parse( testContext( diff --git a/pkgs/ffigen/test/header_parser_tests/imported_types_test.dart b/pkgs/ffigen/test/header_parser_tests/imported_types_test.dart index aaa9c7ec61..4de99982c5 100644 --- a/pkgs/ffigen/test/header_parser_tests/imported_types_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/imported_types_test.dart @@ -14,7 +14,6 @@ late Library actual; void main() { group('imported_types_test', () { setUpAll(() { - logWarnings(); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/header_parser_tests/macros_test.dart b/pkgs/ffigen/test/header_parser_tests/macros_test.dart index d4bdd5a55f..9640ff4de5 100644 --- a/pkgs/ffigen/test/header_parser_tests/macros_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/macros_test.dart @@ -5,7 +5,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; @@ -16,7 +15,6 @@ late Library actual, expected; void main() { group('macros_test', () { setUpAll(() { - logWarnings(Level.WARNING); expected = expectedLibrary(); actual = parser.parse( testContext( diff --git a/pkgs/ffigen/test/header_parser_tests/native_func_typedef_test.dart b/pkgs/ffigen/test/header_parser_tests/native_func_typedef_test.dart index 1f2154361c..049af1f3cc 100644 --- a/pkgs/ffigen/test/header_parser_tests/native_func_typedef_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/native_func_typedef_test.dart @@ -5,7 +5,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; @@ -14,7 +13,6 @@ late Library actual; void main() { group('native_func_typedef_test', () { setUpAll(() { - logWarnings(Level.SEVERE); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/header_parser_tests/nested_parsing_test.dart b/pkgs/ffigen/test/header_parser_tests/nested_parsing_test.dart index 534510527b..560978f0c6 100644 --- a/pkgs/ffigen/test/header_parser_tests/nested_parsing_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/nested_parsing_test.dart @@ -14,7 +14,6 @@ late Library actual, expected; void main() { group('nested_parsing_test', () { setUpAll(() { - logWarnings(); final context = testContext( testConfig(''' ${strings.name}: 'NativeLibrary' diff --git a/pkgs/ffigen/test/header_parser_tests/opaque_dependencies_test.dart b/pkgs/ffigen/test/header_parser_tests/opaque_dependencies_test.dart index ea250e7e13..14955ee0ca 100644 --- a/pkgs/ffigen/test/header_parser_tests/opaque_dependencies_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/opaque_dependencies_test.dart @@ -5,7 +5,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; @@ -14,7 +13,6 @@ late Library actual; void main() { group('opaque_dependencies_test', () { setUpAll(() { - logWarnings(Level.SEVERE); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/header_parser_tests/packed_structs_test.dart b/pkgs/ffigen/test/header_parser_tests/packed_structs_test.dart index f5e09fd9e5..188cf5b8e9 100644 --- a/pkgs/ffigen/test/header_parser_tests/packed_structs_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/packed_structs_test.dart @@ -5,7 +5,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; @@ -14,7 +13,6 @@ late Library actual; void main() { group('packed_structs_test', () { setUpAll(() { - logWarnings(Level.SEVERE); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/header_parser_tests/regress_384_test.dart b/pkgs/ffigen/test/header_parser_tests/regress_384_test.dart index 5c6f7c0030..a4aeb7a76e 100644 --- a/pkgs/ffigen/test/header_parser_tests/regress_384_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/regress_384_test.dart @@ -5,7 +5,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; @@ -14,7 +13,6 @@ late Library actual; void main() { group('regress_384_test', () { setUpAll(() { - logWarnings(Level.SEVERE); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/header_parser_tests/separate_definition_test.dart b/pkgs/ffigen/test/header_parser_tests/separate_definition_test.dart index fcec9719d5..e8cd83ff4a 100644 --- a/pkgs/ffigen/test/header_parser_tests/separate_definition_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/separate_definition_test.dart @@ -5,16 +5,12 @@ import 'package:ffigen/src/config_provider.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; void main() { group('separate_definition', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); test('different header order', () { final entryPoints = [ 'test/header_parser_tests/separate_definition_base.h', diff --git a/pkgs/ffigen/test/header_parser_tests/sort_test.dart b/pkgs/ffigen/test/header_parser_tests/sort_test.dart index 70607bebdd..65ff536fc1 100644 --- a/pkgs/ffigen/test/header_parser_tests/sort_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/sort_test.dart @@ -15,7 +15,6 @@ late Library actual; void main() { group('sort_test', () { setUpAll(() { - logWarnings(); actual = parser.parse( testContext( FfiGenerator( diff --git a/pkgs/ffigen/test/header_parser_tests/struct_fptr_fields_test.dart b/pkgs/ffigen/test/header_parser_tests/struct_fptr_fields_test.dart index e3e0a79b40..c19409e9af 100644 --- a/pkgs/ffigen/test/header_parser_tests/struct_fptr_fields_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/struct_fptr_fields_test.dart @@ -6,7 +6,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/config_provider.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import 'package:yaml/yaml.dart' as yaml; @@ -16,7 +15,6 @@ late Library actual; void main() { group('Function pointer parameters parsing test', () { setUpAll(() { - logWarnings(Level.SEVERE); actual = parser.parse( testContext( YamlConfig.fromYaml( @@ -29,7 +27,7 @@ ${strings.headers}: - '${absPath('test/header_parser_tests/struct_fptr_fields.h')}' ''') as yaml.YamlMap, - Logger.root, + createTestLogger(), ).configAdapter(), ), ); diff --git a/pkgs/ffigen/test/header_parser_tests/typedef_test.dart b/pkgs/ffigen/test/header_parser_tests/typedef_test.dart index b23a7ad09d..45cbb00c97 100644 --- a/pkgs/ffigen/test/header_parser_tests/typedef_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/typedef_test.dart @@ -5,7 +5,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; @@ -15,7 +14,6 @@ late Library actual; void main() { group('typedef_test', () { setUpAll(() { - logWarnings(Level.SEVERE); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/header_parser_tests/unions_test.dart b/pkgs/ffigen/test/header_parser_tests/unions_test.dart index 06746d77d1..b9708a2619 100644 --- a/pkgs/ffigen/test/header_parser_tests/unions_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/unions_test.dart @@ -5,7 +5,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; @@ -14,7 +13,6 @@ late Library actual; void main() { group('unions_test', () { setUpAll(() { - logWarnings(Level.SEVERE); actual = parser.parse( testContext( testConfig(''' diff --git a/pkgs/ffigen/test/header_parser_tests/unnamed_enums_test.dart b/pkgs/ffigen/test/header_parser_tests/unnamed_enums_test.dart index 219370a475..623a45c97e 100644 --- a/pkgs/ffigen/test/header_parser_tests/unnamed_enums_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/unnamed_enums_test.dart @@ -14,7 +14,6 @@ late Library actual, expected; void main() { group('unnamed_enums_test', () { setUpAll(() { - logWarnings(); expected = expectedLibrary(); actual = parser.parse( testContext( diff --git a/pkgs/ffigen/test/header_parser_tests/varargs_test.dart b/pkgs/ffigen/test/header_parser_tests/varargs_test.dart index 641ac29551..816ec8894d 100644 --- a/pkgs/ffigen/test/header_parser_tests/varargs_test.dart +++ b/pkgs/ffigen/test/header_parser_tests/varargs_test.dart @@ -6,7 +6,6 @@ import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/config_provider.dart'; import 'package:ffigen/src/header_parser.dart' as parser; import 'package:ffigen/src/strings.dart' as strings; -import 'package:logging/logging.dart'; import 'package:test/test.dart'; import 'package:yaml/yaml.dart' as yaml; @@ -17,7 +16,6 @@ late Library actual; void main() { group('varargs_test', () { setUpAll(() { - logWarnings(); actual = parser.parse( testContext( YamlConfig.fromYaml( @@ -45,7 +43,7 @@ ${strings.functions}: postfix: _custompostfix2 ''') as yaml.YamlMap, - Logger.root, + createTestLogger(), ).configAdapter(), ), ); diff --git a/pkgs/ffigen/test/large_integration_tests/large_objc_test.dart b/pkgs/ffigen/test/large_integration_tests/large_objc_test.dart index ac54a853f6..43811c8f86 100644 --- a/pkgs/ffigen/test/large_integration_tests/large_objc_test.dart +++ b/pkgs/ffigen/test/large_integration_tests/large_objc_test.dart @@ -14,7 +14,6 @@ import 'dart:io'; import 'package:ffigen/ffigen.dart'; import 'package:ffigen/src/code_generator/utils.dart'; -import 'package:logging/logging.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; @@ -136,13 +135,7 @@ void main() { ); final timer = Stopwatch()..start(); - generator.generate( - logger: Logger.root - ..level = Level.SEVERE - ..onRecord.listen((record) { - printOnFailure('${record.level.name.padRight(8)}: ${record.message}'); - }), - ); + generator.generate(logger: createTestLogger()); expect(File(outFile).existsSync(), isTrue); expect(File(outObjCFile).existsSync(), isTrue); diff --git a/pkgs/ffigen/test/large_integration_tests/large_test.dart b/pkgs/ffigen/test/large_integration_tests/large_test.dart index 37ff42bb1d..aa227b20e6 100644 --- a/pkgs/ffigen/test/large_integration_tests/large_test.dart +++ b/pkgs/ffigen/test/large_integration_tests/large_test.dart @@ -15,9 +15,6 @@ import '../test_utils.dart'; void main() { group('large_test', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); test('Libclang test', () { final includeDir = path.join( packagePathForTests, @@ -26,7 +23,10 @@ void main() { 'include', ); final logArr = []; - final logger = logToArray(logArr, Level.SEVERE); + final logger = createTestLogger( + capturedMessages: logArr, + level: Level.SEVERE, + ); final generator = FfiGenerator( output: Output( dartFile: Uri.file('unused'), @@ -40,10 +40,7 @@ void main() { ), ), headers: Headers( - compilerOptions: [ - ...defaultCompilerOpts(Logger.root), - '-I$includeDir', - ], + compilerOptions: [...defaultCompilerOpts(logger), '-I$includeDir'], entryPoints: [ Uri.file( path.join( diff --git a/pkgs/ffigen/test/native_objc_test/deprecated_test.dart b/pkgs/ffigen/test/native_objc_test/deprecated_test.dart index 14d35a4673..6b12b4a9a6 100644 --- a/pkgs/ffigen/test/native_objc_test/deprecated_test.dart +++ b/pkgs/ffigen/test/native_objc_test/deprecated_test.dart @@ -74,7 +74,7 @@ String bindingsForVersion({Versions? iosVers, Versions? macosVers}) { 'normalUnnamedEnum', 'deprecatedUnnamedEnum', }), - ).generate(logger: Logger.root..level = Level.SEVERE); + ).generate(logger: createTestLogger()); return File( path.join( packagePathForTests, diff --git a/pkgs/ffigen/test/native_objc_test/log_test.dart b/pkgs/ffigen/test/native_objc_test/log_test.dart index 071655307c..b85811c914 100644 --- a/pkgs/ffigen/test/native_objc_test/log_test.dart +++ b/pkgs/ffigen/test/native_objc_test/log_test.dart @@ -33,7 +33,10 @@ void main() { test('Duplicate method log spam', () { final logs = []; - final logger = logToArray(logs, Level.SEVERE); + final logger = createTestLogger( + capturedMessages: logs, + level: Level.SEVERE, + ); generateBindingsForCoverage('log', logger); expect(logs, isNot(contains(contains('matchingMethod')))); expect(logs, isNot(contains(contains('instancetypeMethod')))); diff --git a/pkgs/ffigen/test/native_objc_test/ns_range_test.dart b/pkgs/ffigen/test/native_objc_test/ns_range_test.dart index dc63751cb9..3a8cd125b6 100644 --- a/pkgs/ffigen/test/native_objc_test/ns_range_test.dart +++ b/pkgs/ffigen/test/native_objc_test/ns_range_test.dart @@ -51,7 +51,7 @@ void main() { {'SFTranscriptionSegment'}.contains(decl.originalName), ), ), - ).generate(logger: Logger.root..level = Level.SEVERE); + ).generate(logger: createTestLogger()); bindings = File( path.join( packagePathForTests, diff --git a/pkgs/ffigen/test/native_objc_test/transitive_test.dart b/pkgs/ffigen/test/native_objc_test/transitive_test.dart index 3d6980a59f..548436b4e1 100644 --- a/pkgs/ffigen/test/native_objc_test/transitive_test.dart +++ b/pkgs/ffigen/test/native_objc_test/transitive_test.dart @@ -67,7 +67,7 @@ String generate({ includeTransitive: includeTransitiveObjCCategories, ), ), - ).generate(logger: Logger.root..level = Level.SEVERE); + ).generate(logger: createTestLogger()); return File( path.join( packagePathForTests, diff --git a/pkgs/ffigen/test/native_objc_test/util.dart b/pkgs/ffigen/test/native_objc_test/util.dart index 1ed2a3b6f3..71818208c7 100644 --- a/pkgs/ffigen/test/native_objc_test/util.dart +++ b/pkgs/ffigen/test/native_objc_test/util.dart @@ -32,7 +32,7 @@ void generateBindingsForCoverage(String testName, [Logger? logger]) { '${testName}_config.yaml', ); final config = testConfig(File(path).readAsStringSync(), filename: path); - config.generate(logger: logger ?? (Logger.root..level = Level.SEVERE)); + config.generate(logger: logger ?? createTestLogger()); } final _executeInternalCommand = () { diff --git a/pkgs/ffigen/test/native_test/native_test.dart b/pkgs/ffigen/test/native_test/native_test.dart index 1fcb5e2afb..6a4d07909f 100644 --- a/pkgs/ffigen/test/native_test/native_test.dart +++ b/pkgs/ffigen/test/native_test/native_test.dart @@ -16,7 +16,6 @@ void main() { late NativeLibrary bindings; group('native_test', () { setUpAll(() { - logWarnings(); var dylibName = 'test/native_test/native_test.so'; if (Platform.isMacOS) { dylibName = 'test/native_test/native_test.dylib'; diff --git a/pkgs/ffigen/test/rename_tests/rename_test.dart b/pkgs/ffigen/test/rename_tests/rename_test.dart index 8a1f475642..372ccc96c2 100644 --- a/pkgs/ffigen/test/rename_tests/rename_test.dart +++ b/pkgs/ffigen/test/rename_tests/rename_test.dart @@ -18,7 +18,6 @@ final macroPrefix = 'mmm'; void main() { group('rename_test', () { setUpAll(() { - logWarnings(); final context = testContext( testConfig(''' ${strings.name}: 'NativeLibrary' diff --git a/pkgs/ffigen/test/test_utils.dart b/pkgs/ffigen/test/test_utils.dart index 000d9005c2..762fd3341e 100644 --- a/pkgs/ffigen/test/test_utils.dart +++ b/pkgs/ffigen/test/test_utils.dart @@ -11,7 +11,6 @@ import 'package:ffigen/src/config_provider/config.dart'; import 'package:ffigen/src/config_provider/utils.dart'; import 'package:ffigen/src/config_provider/yaml_config.dart'; import 'package:ffigen/src/context.dart'; -import 'package:ffigen/src/logger.dart'; import 'package:ffigen/src/visitor/ast.dart'; import 'package:logging/logging.dart'; import 'package:package_config/package_config_types.dart'; @@ -22,10 +21,20 @@ import 'package:yaml/yaml.dart' as yaml; export 'package:ffigen/src/config_provider/utils.dart'; Context testContext([FfiGenerator? generator]) => Context( - createDefaultLogger(Level.SEVERE), + createTestLogger(), generator ?? FfiGenerator(output: Output(dartFile: Uri.file('unused'))), ); +Logger createTestLogger({ + List? capturedMessages, + Level level = Level.ALL, +}) => Logger.detached('') + ..level = level + ..onRecord.listen((record) { + printOnFailure('${record.level.name}: ${record.time}: ${record.message}'); + capturedMessages?.add(record.message); + }); + extension LibraryTestExt on Library { /// Get a [Binding]'s generated string with a given name. String getBindingAsString(String name) => @@ -210,27 +219,10 @@ class NotFoundException implements Exception { } } -void logWarnings([Level level = Level.WARNING]) { - Logger.root.level = level; - Logger.root.onRecord.listen((record) { - printOnFailure('${record.level.name.padRight(8)}: ${record.message}'); - }); -} - -Logger logToArray(List logArr, Level level) { - Logger.root.level = level; - Logger.root.onRecord.listen((record) {}); - final logger = Logger('ffigen.test'); - logger.onRecord.listen((record) { - logArr.add('${record.level.name.padRight(8)}: ${record.message}'); - }); - return logger; -} - FfiGenerator testConfig(String yamlBody, {String? filename, Logger? logger}) { return YamlConfig.fromYaml( yaml.loadYaml(yamlBody) as yaml.YamlMap, - logger ?? Logger.root, + logger ?? createTestLogger(), filename: filename, packageConfig: PackageConfig([ Package(