| // Copyright (c) 2021, 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:_fe_analyzer_shared/src/base/errors.dart'; |
| import 'package:analysis_server/src/services/correction/fix/data_driven/transform_override_set.dart'; |
| import 'package:analysis_server/src/services/correction/fix/data_driven/transform_override_set_parser.dart'; |
| import 'package:analysis_server/src/services/correction/fix/data_driven/transform_set_error_code.dart'; |
| import 'package:analyzer/error/listener.dart'; |
| import 'package:test/test.dart'; |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| |
| import '../../../../../mocks.dart'; |
| import '../../../../../utils/test_support.dart'; |
| |
| void main() { |
| defineReflectiveSuite(() { |
| defineReflectiveTests(TransformSetParserTest); |
| }); |
| } |
| |
| /// Utilities shared between tests of the [TransformOverrideSetParser]. |
| abstract class AbstractTransformOverrideSetParserTest { |
| /// The listener to which errors will be reported. |
| late GatheringErrorListener errorListener; |
| |
| /// The result of parsing the test file's content. |
| TransformOverrideSet? result; |
| |
| void assertErrors(String code, List<ExpectedError> expectedErrors) { |
| parse(code); |
| errorListener.assertErrors(expectedErrors); |
| } |
| |
| void assertNoErrors(String content) { |
| parse(content); |
| errorListener.assertNoErrors(); |
| } |
| |
| void assertOverride(String title, {bool? bulkApply}) { |
| var override = result!.overrideForTransform(title)!; |
| if (bulkApply != null) { |
| expect(override.bulkApply, bulkApply); |
| } |
| } |
| |
| ExpectedError error(ErrorCode code, int offset, int length, |
| {String? text, |
| Pattern? messageContains, |
| List<ExpectedContextMessage> contextMessages = |
| const <ExpectedContextMessage>[]}) => |
| ExpectedError(code, offset, length, |
| message: text, |
| messageContains: messageContains, |
| expectedContextMessages: contextMessages); |
| |
| void parse(String content) { |
| errorListener = GatheringErrorListener(); |
| var errorReporter = |
| ErrorReporter(errorListener, MockSource(fullName: 'data.yaml')); |
| var parser = TransformOverrideSetParser(errorReporter); |
| result = parser.parse(content); |
| } |
| } |
| |
| @reflectiveTest |
| class TransformSetParserTest extends AbstractTransformOverrideSetParserTest { |
| void test_emptyFile() { |
| assertErrors(''' |
| ''', [error(TransformSetErrorCode.invalidValue, 0, 0)]); |
| expect(result, isNull); |
| } |
| |
| void test_oneTransform() { |
| assertNoErrors(''' |
| "transform one": |
| bulkApply: true |
| '''); |
| assertOverride('transform one', bulkApply: true); |
| } |
| |
| void test_twoTransforms() { |
| assertNoErrors(''' |
| "transform one": |
| bulkApply: false |
| "transform two": |
| bulkApply: true |
| '''); |
| assertOverride('transform one', bulkApply: false); |
| assertOverride('transform two', bulkApply: true); |
| } |
| } |