diff --git a/pkgs/ffigen/dart_test.yaml b/pkgs/ffigen/dart_test.yaml index 48ec12994..5e41a566b 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 50c932182..9944d883f 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/collision_tests/decl_decl_collision_test.dart b/pkgs/ffigen/test/collision_tests/decl_decl_collision_test.dart index dd4e36159..e7d32ada6 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 d698d4a2a..28bf8f90e 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 3c225f3c7..4c811cbda 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 deb49b1be..bded6ac88 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 de7d82086..0f2870333 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 0bd10a5ef..3a38d9ad4 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 0f7cb18c6..322dfe88c 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 ad3657298..cebb5d33f 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 c6d23d3d7..2fc1c43bc 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 95a50ccd0..5e70ca114 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/libclang_example_test.dart b/pkgs/ffigen/test/example_tests/libclang_example_test.dart index ec8b0d89b..4435bcd36 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'; @@ -15,9 +12,6 @@ import '../test_utils.dart'; void main() { group('example_test', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); test('libclang-example', () { final configYaml = File( path.join( @@ -27,12 +21,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/example_tests/objective_c_example_test.dart b/pkgs/ffigen/test/example_tests/objective_c_example_test.dart index a5a40268b..4702a38e5 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 3ea604bc8..f950b9f66 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 b2450ae3f..4d5fee639 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 67693db80..c0d2b91e3 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 963243ef8..80cbd8f37 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 c1c92fbc9..8148c9a41 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 ae94c70e6..783427b60 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 2f9f8cd44..ac4d12d77 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 ac154e886..e1401eacf 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 413d828c6..664516593 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 3224c5601..ee5d0160c 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 aaa9c7ec6..4de99982c 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 d4bdd5a55..9640ff4de 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 1f2154361..049af1f3c 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 534510527..560978f0c 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 ea250e7e1..14955ee0c 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 f5e09fd9e..188cf5b8e 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 5c6f7c003..a4aeb7a76 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 fcec9719d..e8cd83ff4 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 70607bebd..65ff536fc 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 e3e0a79b4..c19409e9a 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 b23a7ad09..45cbb00c9 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 06746d77d..b9708a261 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 219370a47..623a45c97 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 641ac2955..816ec8894 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 ac54a853f..43811c8f8 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 358a1e526..aa227b20e 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; @@ -14,9 +15,6 @@ import '../test_utils.dart'; void main() { group('large_test', () { - setUpAll(() { - logWarnings(Level.SEVERE); - }); test('Libclang test', () { final includeDir = path.join( packagePathForTests, @@ -25,7 +23,10 @@ void main() { 'include', ); final logArr = []; - logToArray(logArr, Level.SEVERE); + final logger = createTestLogger( + capturedMessages: logArr, + level: Level.SEVERE, + ); final generator = FfiGenerator( output: Output( dartFile: Uri.file('unused'), @@ -39,10 +40,7 @@ void main() { ), ), headers: Headers( - compilerOptions: [ - ...defaultCompilerOpts(Logger.root), - '-I$includeDir', - ], + compilerOptions: [...defaultCompilerOpts(logger), '-I$includeDir'], entryPoints: [ Uri.file( path.join( @@ -75,7 +73,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_objc_test/deprecated_test.dart b/pkgs/ffigen/test/native_objc_test/deprecated_test.dart index 14d35a467..6b12b4a9a 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 071655307..b85811c91 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 dc63751cb..3a8cd125b 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 3d6980a59..548436b4e 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 1ed2a3b6f..71818208c 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 732fe6758..6a4d07909 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'; @@ -17,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'; @@ -42,10 +40,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/regen.dart b/pkgs/ffigen/test/regen.dart index de8aabb63..3ca5c0fe3 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 { diff --git a/pkgs/ffigen/test/rename_tests/rename_test.dart b/pkgs/ffigen/test/rename_tests/rename_test.dart index 8a1f47564..372ccc96c 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 de7c53768..762fd3341 100644 --- a/pkgs/ffigen/test/test_utils.dart +++ b/pkgs/ffigen/test/test_utils.dart @@ -21,10 +21,20 @@ import 'package:yaml/yaml.dart' as yaml; export 'package:ffigen/src/config_provider/utils.dart'; Context testContext([FfiGenerator? generator]) => Context( - Logger.root, + 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) => @@ -209,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( @@ -248,19 +241,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');