mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
VerboseLogger should just wrap the parent Logger (#10020)
This way, you can test things even with a VerboseLogger.
This commit is contained in:
parent
eaa9367432
commit
18eac03d76
@ -180,12 +180,14 @@ class BufferLogger extends Logger {
|
||||
}
|
||||
|
||||
class VerboseLogger extends Logger {
|
||||
Stopwatch stopwatch = new Stopwatch();
|
||||
|
||||
VerboseLogger() {
|
||||
VerboseLogger(this.parent) {
|
||||
stopwatch.start();
|
||||
}
|
||||
|
||||
final Logger parent;
|
||||
|
||||
Stopwatch stopwatch = new Stopwatch();
|
||||
|
||||
@override
|
||||
bool get isVerbose => true;
|
||||
|
||||
@ -221,7 +223,7 @@ class VerboseLogger extends Logger {
|
||||
stopwatch.reset();
|
||||
|
||||
String prefix;
|
||||
const int prefixWidth = 8;
|
||||
const int prefixWidth = 12;
|
||||
if (millis == 0) {
|
||||
prefix = ''.padLeft(prefixWidth);
|
||||
} else {
|
||||
@ -235,13 +237,13 @@ class VerboseLogger extends Logger {
|
||||
final String indentMessage = message.replaceAll('\n', '\n$indent');
|
||||
|
||||
if (type == _LogType.error) {
|
||||
stderr.writeln(prefix + terminal.bolden(indentMessage));
|
||||
parent.printError(prefix + terminal.bolden(indentMessage));
|
||||
if (stackTrace != null)
|
||||
stderr.writeln(indent + stackTrace.toString().replaceAll('\n', '\n$indent'));
|
||||
parent.printError(indent + stackTrace.toString().replaceAll('\n', '\n$indent'));
|
||||
} else if (type == _LogType.status) {
|
||||
print(prefix + terminal.bolden(indentMessage));
|
||||
parent.printStatus(prefix + terminal.bolden(indentMessage));
|
||||
} else {
|
||||
print(prefix + indentMessage);
|
||||
parent.printStatus(prefix + indentMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -161,7 +161,7 @@ class FlutterCommandRunner extends CommandRunner<Null> {
|
||||
// Check for verbose.
|
||||
if (globalResults['verbose']) {
|
||||
// Override the logger.
|
||||
context.setVariable(Logger, new VerboseLogger());
|
||||
context.setVariable(Logger, new VerboseLogger(context[Logger]));
|
||||
}
|
||||
|
||||
String recordTo = globalResults['record-to'];
|
||||
|
24
packages/flutter_tools/test/src/base/logger_test.dart
Normal file
24
packages/flutter_tools/test/src/base/logger_test.dart
Normal file
@ -0,0 +1,24 @@
|
||||
// Copyright 2017 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'package:flutter_tools/src/base/logger.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
group('AppContext', () {
|
||||
test('error', () async {
|
||||
final BufferLogger mockLogger = new BufferLogger();
|
||||
final VerboseLogger verboseLogger = new VerboseLogger(mockLogger);
|
||||
|
||||
verboseLogger.printStatus('Hey Hey Hey Hey');
|
||||
verboseLogger.printTrace('Oooh, I do I do I do');
|
||||
verboseLogger.printError('Helpless!');
|
||||
|
||||
expect(mockLogger.statusText, matches(r'^\[ (?: {0,2}\+[0-9]{1,3} ms| )\] Hey Hey Hey Hey\n'
|
||||
r'\[ (?: {0,2}\+[0-9]{1,3} ms| )\] Oooh, I do I do I do\n$'));
|
||||
expect(mockLogger.traceText, '');
|
||||
expect(mockLogger.errorText, matches(r'^\[ (?: {0,2}\+[0-9]{1,3} ms| )\] Helpless!\n$'));
|
||||
});
|
||||
});
|
||||
}
|
Loading…
Reference in New Issue
Block a user