Skip to content

Commit 579b84d

Browse files
authored
[ffigen] Support concurrent tests (#2827)
1 parent 1391b39 commit 579b84d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+72
-175
lines changed

pkgs/ffigen/dart_test.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,2 @@
11
# This package uses dart:ffi.
22
test_on: vm
3-
4-
# https://github.com/dart-lang/native/issues/461
5-
concurrency: 1

pkgs/ffigen/lib/src/logger.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@ import 'dart:io';
77
import 'package:logging/logging.dart';
88

99
/// Creates a default logger that logs to stdout and stderr.
10-
Logger createDefaultLogger() {
10+
Logger createDefaultLogger([Level level = Level.INFO]) {
1111
final logger = Logger.detached('FFIgen');
12-
logger.level = Level.INFO;
12+
logger.level = level;
1313
logger.onRecord.listen((record) {
14+
final levelStr = '[${record.level.name}]'.padRight(9);
15+
final log = '$levelStr: ${record.message}';
1416
if (record.level >= Level.WARNING) {
15-
stderr.writeln(record.message);
17+
stderr.writeln(log);
1618
} else {
17-
stdout.writeln(record.message);
19+
stdout.writeln(log);
1820
}
1921
if (record.error != null) {
2022
stderr.writeln(record.error);

pkgs/ffigen/test/collision_tests/decl_decl_collision_test.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,11 @@
55
import 'package:ffigen/src/code_generator.dart';
66
import 'package:ffigen/src/config_provider/config.dart';
77
import 'package:ffigen/src/header_parser/parser.dart';
8-
import 'package:logging/logging.dart';
98
import 'package:test/test.dart';
109
import '../test_utils.dart';
1110

1211
void main() {
1312
group('decl_decl_collision_test', () {
14-
setUpAll(() {
15-
logWarnings(Level.SEVERE);
16-
});
1713
test('declaration conflict', () {
1814
final context = testContext(
1915
FfiGenerator(

pkgs/ffigen/test/collision_tests/decl_symbol_address_collision_test.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import 'package:ffigen/src/code_generator.dart';
66
import 'package:ffigen/src/config_provider/config.dart';
77
import 'package:ffigen/src/header_parser/parser.dart';
8-
import 'package:logging/logging.dart';
98
import 'package:test/test.dart';
109

1110
import '../test_utils.dart';
@@ -14,7 +13,6 @@ late Library actual;
1413
void main() {
1514
group('decl_symbol_address_collision_test', () {
1615
setUpAll(() {
17-
logWarnings(Level.SEVERE);
1816
final context = testContext(
1917
FfiGenerator(
2018
output: Output(

pkgs/ffigen/test/collision_tests/decl_type_name_collision_test.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import 'package:ffigen/src/code_generator.dart';
66
import 'package:ffigen/src/header_parser.dart' as parser;
77
import 'package:ffigen/src/strings.dart' as strings;
8-
import 'package:logging/logging.dart';
98
import 'package:test/test.dart';
109

1110
import '../test_utils.dart';
@@ -14,7 +13,6 @@ late Library actual;
1413
void main() {
1514
group('decl_type_name_collision test', () {
1615
setUpAll(() {
17-
logWarnings(Level.SEVERE);
1816
actual = parser.parse(
1917
testContext(
2018
testConfig('''

pkgs/ffigen/test/collision_tests/reserved_keyword_collision_test.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,13 @@
44

55
import 'package:ffigen/src/config_provider.dart';
66
import 'package:ffigen/src/header_parser.dart' as parser;
7-
import 'package:logging/logging.dart';
87
import 'package:path/path.dart' as path;
98
import 'package:test/test.dart';
109

1110
import '../test_utils.dart';
1211

1312
void main() {
1413
group('reserved_keyword_collision_test', () {
15-
setUpAll(() {
16-
logWarnings(Level.SEVERE);
17-
});
1814
test('reserved keyword collision', () {
1915
final library = parser.parse(
2016
testContext(

pkgs/ffigen/test/config_tests/deprecate_assetid_test.dart

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,13 @@ import '../test_utils.dart';
1414
void main() {
1515
group('deprecate_assetId_test', () {
1616
final logArr = <String>[];
17-
final logger = logToArray(logArr, Level.WARNING);
18-
final config = testConfig('''
17+
late FfiGenerator config;
18+
setUpAll(() {
19+
final logger = createTestLogger(
20+
capturedMessages: logArr,
21+
level: Level.WARNING,
22+
);
23+
config = testConfig('''
1924
${strings.name}: 'NativeLibrary'
2025
${strings.description}: 'Deprecation warning if assetId is used instead of ${strings.ffiNativeAsset}'
2126
${strings.output}: 'unused'
@@ -25,9 +30,9 @@ ${strings.headers}:
2530
${strings.entryPoints}:
2631
- '${absPath('test/header_parser_tests/comment_markup.h')}'
2732
''', logger: logger);
28-
parse(Context(logger, config));
33+
parse(Context(logger, config));
34+
});
2935

30-
final logStr = logArr.join('\n');
3136
test('asset-id is correctly set', () {
3237
expect(config.output.style is NativeExternalBindings, true);
3338
expect(
@@ -37,7 +42,7 @@ ${strings.headers}:
3742
});
3843

3944
test('Deprecation Warning is logged', () {
40-
expect(logStr.contains('DEPRECATION WARNING'), true);
45+
expect(logArr.join('\n').contains('DEPRECATION WARNING'), true);
4146
});
4247
});
4348
}

pkgs/ffigen/test/config_tests/json_schema_test.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import 'package:ffigen/src/strings.dart' as strings;
1010
import 'package:file/local.dart';
1111
import 'package:glob/glob.dart';
1212
import 'package:json_schema/json_schema.dart';
13-
import 'package:logging/logging.dart';
1413
import 'package:path/path.dart' as path;
1514
import 'package:test/test.dart';
1615
import 'package:yaml/yaml.dart';
@@ -20,14 +19,14 @@ import '../test_utils.dart';
2019
void main() {
2120
group('json_schema_test', () {
2221
final schema = YamlConfig.getsRootConfigSpec(
23-
Logger.root,
22+
createTestLogger(),
2423
).generateJsonSchema(strings.ffigenJsonSchemaId);
2524

2625
test('Schema Changes', () {
2726
final actualJsonSchema =
2827
const JsonEncoder.withIndent(strings.ffigenJsonSchemaIndent).convert(
2928
YamlConfig.getsRootConfigSpec(
30-
Logger.root,
29+
createTestLogger(),
3130
).generateJsonSchema(strings.ffigenJsonSchemaId),
3231
);
3332
final expectedJsonSchema = File(

pkgs/ffigen/test/config_tests/no_cursor_definition_warn_test.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ void main() {
1515
group('no_cursor_definition_warn_test', () {
1616
setUpAll(() {
1717
final logArr = <String>[];
18-
final logger = logToArray(logArr, Level.WARNING);
18+
final logger = createTestLogger(
19+
capturedMessages: logArr,
20+
level: Level.WARNING,
21+
);
1922
final config = testConfig('''
2023
${strings.name}: 'NativeLibrary'
2124
${strings.description}: 'Warn for no cursor definition.'

pkgs/ffigen/test/config_tests/unknown_keys_warn_test.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ void main() {
1313
group('unknown_keys_warn_test', () {
1414
setUpAll(() {
1515
final logArr = <String>[];
16-
final logger = logToArray(logArr, Level.WARNING);
16+
final logger = createTestLogger(
17+
capturedMessages: logArr,
18+
level: Level.WARNING,
19+
);
1720
testConfig('''
1821
${strings.name}: 'NativeLibrary'
1922
${strings.description}: 'Warn for unknown keys.'

0 commit comments

Comments
 (0)