blob: 1e7681772a3034082f7a8beb6d1d7fe154daea6d [file] [log] [blame]
// Copyright (c) 2019, 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:linter/src/test_utilities/annotation.dart';
import 'package:test/test.dart';
import 'annotation_matcher.dart';
void main() {
test('extraction', () {
expect(extractAnnotation(1, 'int x; // LINT [1:3]'), isNotNull);
expect(extractAnnotation(1, 'int x; //LINT'), isNotNull);
expect(extractAnnotation(1, 'int x; // OK'), isNull);
expect(extractAnnotation(1, 'int x;'), isNull);
expect(extractAnnotation(1, 'dynamic x; // LINT dynamic is bad')!.message,
'dynamic is bad');
expect(
extractAnnotation(1, 'dynamic x; // LINT dynamic is bad')!.lineNumber,
1);
expect(
extractAnnotation(1, 'dynamic x; // LINT [1:3] dynamic is bad')!
.message,
'dynamic is bad');
expect(
extractAnnotation(1, 'dynamic x; // LINT [1:3] dynamic is bad')!.column,
1);
expect(
extractAnnotation(1, 'dynamic x; // LINT [1:3] dynamic is bad')!.length,
3);
expect(extractAnnotation(1, 'dynamic x; //LINT')!.message, isNull);
expect(extractAnnotation(1, 'dynamic x; //LINT ')!.message, isNull);
// Commented out lines shouldn't get linted.
expect(extractAnnotation(1, '// dynamic x; //LINT '), isNull);
expect(extractAnnotation(1, 'int x; // LINT [2:3]')!.lineNumber, 1);
expect(extractAnnotation(1, 'int x; // LINT [2:3]')!.column, 2);
expect(extractAnnotation(1, 'int x; // LINT [2:3]')!.length, 3);
expect(extractAnnotation(1, 'int x; // LINT [+2]')!.lineNumber, 3);
expect(extractAnnotation(1, 'int x; // LINT [+2]')!.column, isNull);
expect(extractAnnotation(1, 'int x; // LINT [+2]')!.length, isNull);
expect(extractAnnotation(1, 'int x; // LINT [+2,4:5]')!.lineNumber, 3);
expect(extractAnnotation(1, 'int x; // LINT [+2,4:5]')!.column, 4);
expect(extractAnnotation(1, 'int x; // LINT [+2,4:5]')!.length, 5);
expect(extractAnnotation(10, 'int x; // LINT [-2]')!.lineNumber, 8);
});
test('equality', () {
expect(Annotation('Actual message (to be ignored)', ErrorType.LINT, 1),
matchesAnnotation(null, ErrorType.LINT, 1));
expect(Annotation('Message', ErrorType.LINT, 1),
matchesAnnotation('Message', ErrorType.LINT, 1));
});
test('inequality', () {
expect(
() => expect(Annotation('Message', ErrorType.LINT, 1),
matchesAnnotation('Message', ErrorType.HINT, 1)),
throwsA(TypeMatcher<TestFailure>()));
expect(
() => expect(Annotation('Message', ErrorType.LINT, 1),
matchesAnnotation('Message2', ErrorType.LINT, 1)),
throwsA(TypeMatcher<TestFailure>()));
expect(
() => expect(Annotation('Message', ErrorType.LINT, 1),
matchesAnnotation('Message', ErrorType.LINT, 2)),
throwsA(TypeMatcher<TestFailure>()));
});
}