Skip to content

Commit c4aa47b

Browse files
authored
Fix printing of log messages on test failures (#147)
1 parent 1661f82 commit c4aa47b

File tree

3 files changed

+34
-15
lines changed

3 files changed

+34
-15
lines changed

pkgs/native_assets_builder/test/helpers.dart

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -157,21 +157,32 @@ Future<void> copyTestProjects({
157157
}
158158

159159
/// Logger that outputs the full trace when a test fails.
160-
final logger = Logger('')
161-
..level = Level.ALL
162-
..onRecord.listen((record) {
163-
printOnFailure(record.message);
164-
});
160+
Logger get logger => _logger ??= () {
161+
// A new logger is lazily created for each test so that the messages
162+
// captured by printOnFailure are scoped to the correct test.
163+
addTearDown(() => _logger = null);
164+
return _createTestLogger();
165+
}();
166+
167+
Logger? _logger;
165168

166169
Logger createCapturingLogger(
167170
List<String> capturedMessages, {
168171
Level level = Level.ALL,
172+
}) =>
173+
_createTestLogger(capturedMessages: capturedMessages, level: level);
174+
175+
Logger _createTestLogger({
176+
List<String>? capturedMessages,
177+
Level level = Level.ALL,
169178
}) =>
170179
Logger('')
171180
..level = level
172181
..onRecord.listen((record) {
173-
printOnFailure(record.message);
174-
capturedMessages.add(record.message);
182+
printOnFailure(
183+
'${record.level.name}: ${record.time}: ${record.message}',
184+
);
185+
capturedMessages?.add(record.message);
175186
});
176187

177188
final dartExecutable = File(Platform.resolvedExecutable).uri;

pkgs/native_assets_cli/example/native_add_library/build.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ void main(List<String> args) async {
2828
// `package:native_toolchain_c` will output the dynamic or static libraries it built,
2929
// what files it accessed (for caching the build), etc.
3030
buildOutput: buildOutput,
31-
logger: Logger('')..onRecord.listen((record) => print(record.message)),
31+
logger: Logger('')
32+
..level = Level.ALL
33+
..onRecord.listen((record) => print(record.message)),
3234
);
3335

3436
// Write the output according to the native assets protocol so that Dart or

pkgs/native_toolchain_c/test/helpers.dart

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,23 @@ Future<Uri> tempDirForTest({String? prefix, bool keepTemp = false}) async {
5454
}
5555

5656
/// Logger that outputs the full trace when a test fails.
57-
final logger = Logger('')
58-
..level = Level.ALL
59-
..onRecord.listen((record) {
60-
printOnFailure('${record.level.name}: ${record.time}: ${record.message}');
61-
});
57+
Logger get logger => _logger ??= () {
58+
// A new logger is lazily created for each test so that the messages
59+
// captured by printOnFailure are scoped to the correct test.
60+
addTearDown(() => _logger = null);
61+
return _createTestLogger();
62+
}();
63+
64+
Logger? _logger;
65+
66+
Logger createCapturingLogger(List<String> capturedMessages) =>
67+
_createTestLogger(capturedMessages: capturedMessages);
6268

63-
Logger createCapturingLogger(List<String> capturedMessages) => Logger('')
69+
Logger _createTestLogger({List<String>? capturedMessages}) => Logger('')
6470
..level = Level.ALL
6571
..onRecord.listen((record) {
6672
printOnFailure('${record.level.name}: ${record.time}: ${record.message}');
67-
capturedMessages.add(record.message);
73+
capturedMessages?.add(record.message);
6874
});
6975

7076
/// Test files are run in a variety of ways, find this package root in all.

0 commit comments

Comments
 (0)