Skip to content

Commit

Permalink
Make logger test more robust
Browse files Browse the repository at this point in the history
  • Loading branch information
nielsenko committed Mar 18, 2024
1 parent bd49967 commit 27bbf99
Showing 1 changed file with 17 additions and 9 deletions.
26 changes: 17 additions & 9 deletions packages/realm_dart/test/realm_logger_test.dart
Expand Up @@ -13,7 +13,8 @@ void main() {
setupTests();

group('All levels', () {
Realm.logger.setLogLevel(RealmLogLevel.all);
Realm.logger.setLogLevel(RealmLogLevel.off);
Realm.logger.setLogLevel(RealmLogLevel.all, category: RealmLogCategory.realm.sdk);
for (var level in RealmLogLevel.values) {
test('Realm.logger supports log level $level', () {
final tag = Uuid.v4();
Expand All @@ -27,10 +28,11 @@ void main() {
});

group('Match levels', () {
Realm.logger.setLogLevel(RealmLogLevel.off);
for (var level in RealmLogLevel.values) {
final expectedLevels = RealmLogLevel.logToValues.where((l) => l.index >= level.index);
test('$level matches $expectedLevels', () {
Realm.logger.setLogLevel(level);
test('$level matches $expectedLevels', () {
Realm.logger.setLogLevel(level, category: RealmLogCategory.realm.sdk);
expectLater(Realm.logger.onRecord, emitsInOrder(expectedLevels.map((l) => isA<RealmLogRecord>().having((r) => r.level, '$l', l))));
for (var sendLevel in RealmLogLevel.logToValues) {
Realm.logger.log(sendLevel, '$sendLevel');
Expand All @@ -50,39 +52,45 @@ void main() {
});

test('Trace in subisolate seen in parent', () {
Realm.logger.setLogLevel(RealmLogLevel.all);
Realm.logger.setLogLevel(RealmLogLevel.off);
Realm.logger.setLogLevel(RealmLogLevel.all, category: RealmLogCategory.realm.sdk);
expectLater(Realm.logger.onRecord, emits(isA<RealmLogRecord>().having((r) => r.message, 'message', 'Hey')));
Isolate.run(() {
Realm.logger.log(RealmLogLevel.trace, 'Hey');
});
});

test('Trace in root isolate seen in subisolate', () async {
Realm.logger.setLogLevel(RealmLogLevel.all);
Realm.logger.setLogLevel(RealmLogLevel.off);
Realm.logger.setLogLevel(RealmLogLevel.all, category: RealmLogCategory.realm.sdk);
final trace = Isolate.run(() async {
return (await Realm.logger.onRecord.first).message;
});
await Future<void>.delayed(const Duration(milliseconds: 1)); // yield
await Future<void>.delayed(const Duration(milliseconds: 100)); // yield
expectLater(trace, completion('Hey'));
Realm.logger.log(RealmLogLevel.trace, 'Hey');
});

test('RealmLogger hookup logging', () async {
Realm.logger.setLogLevel(RealmLogLevel.off);
Realm.logger.setLogLevel(RealmLogLevel.all, category: RealmLogCategory.realm.sdk);

final logger = Logger.detached('Test');
Realm.logger.onRecord.forEach((r) => logger.log(r.level.level, r.message));
logger.level = Level.ALL;
Realm.logger.setLogLevel(RealmLogLevel.error);

expectLater(logger.onRecord, emits(isA<LogRecord>().having((r) => r.level, 'level', Level.SEVERE).having((r) => r.message, 'message', 'error')));

Realm.logger.log(RealmLogLevel.error, 'error', category: RealmLogCategory.realm.sdk);
Realm.logger.log(RealmLogLevel.error, 'error');
});

test('RealmLogger hookup hierarchical logging', () async {
Realm.logger.setLogLevel(RealmLogLevel.off);
Realm.logger.setLogLevel(RealmLogLevel.all, category: RealmLogCategory.realm.sdk);

hierarchicalLoggingEnabled = true;
Realm.logger.onRecord.forEach((r) => Logger(r.category.toString()).log(r.level.level, r.message));
Logger.root.level = Level.ALL;
Realm.logger.setLogLevel(RealmLogLevel.error);

expectLater(Logger('Realm').onRecord, emits(isA<LogRecord>().having((r) => r.level, 'level', Level.SEVERE).having((r) => r.message, 'message', 'error')));
expectLater(
Expand Down

0 comments on commit 27bbf99

Please sign in to comment.