blob: e7f359b7e76811eddf11aef8f858f208edcc33aa [file] [log] [blame]
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
// for details. 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:analyzer/error/error.dart';
import 'package:analyzer/source/line_info.dart';
import 'package:analyzer/src/dart/analysis/results.dart';
import 'package:analyzer_cli/src/ansi.dart' as ansi;
import 'package:analyzer_cli/src/error_formatter.dart';
import 'package:test/test.dart' hide ErrorFormatter;
import 'mocks.dart';
main() {
group('reporter', () {
StringBuffer out;
AnalysisStats stats;
MockCommandLineOptions options;
ErrorFormatter reporter;
setUp(() {
ansi.runningTests = true;
out = new StringBuffer();
stats = new AnalysisStats();
options = new MockCommandLineOptions();
options.enableTypeChecks = false;
options.infosAreFatal = false;
options.machineFormat = false;
options.verbose = false;
options.color = false;
reporter = new HumanErrorFormatter(out, options, stats);
});
tearDown(() {
ansi.runningTests = false;
});
test('error', () {
ErrorsResultImpl error =
mockResult(ErrorType.SYNTACTIC_ERROR, ErrorSeverity.ERROR);
reporter.formatErrors([error]);
reporter.flush();
expect(out.toString().trim(),
'error • MSG at /foo/bar/baz.dart:3:3 • mock_code');
});
test('hint', () {
ErrorsResultImpl error = mockResult(ErrorType.HINT, ErrorSeverity.INFO);
reporter.formatErrors([error]);
reporter.flush();
expect(out.toString().trim(),
'hint • MSG at /foo/bar/baz.dart:3:3 • mock_code');
});
test('stats', () {
ErrorsResultImpl error = mockResult(ErrorType.HINT, ErrorSeverity.INFO);
reporter.formatErrors([error]);
reporter.flush();
stats.print(out);
expect(
out.toString().trim(),
'hint • MSG at /foo/bar/baz.dart:3:3 • mock_code\n'
'1 hint found.');
});
});
}
ErrorsResultImpl mockResult(ErrorType type, ErrorSeverity severity) {
// ErrorInfo
var location = new CharacterLocation(3, 3);
var lineInfo = new MockLineInfo(defaultLocation: location);
// Details
var code = new MockErrorCode(type, severity, 'mock_code');
var source = new MockSource('/foo/bar/baz.dart');
var error = new MockAnalysisError(source, code, 20, 'MSG');
return ErrorsResultImpl(
null, source.fullName, null, lineInfo, false, [error]);
}