mirror of
https://github.com/flutter/packages.git
synced 2025-05-31 13:38:45 +08:00
[flutter_plugin_tools] Validate code blocks in readme-check (#5436)
This commit is contained in:
@ -275,4 +275,135 @@ A very useful plugin.
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
group('code blocks', () {
|
||||
test('fails on missing info string', () async {
|
||||
final Directory packageDir = createFakePackage('a_package', packagesDir);
|
||||
|
||||
packageDir.childFile('README.md').writeAsStringSync('''
|
||||
Example:
|
||||
|
||||
```
|
||||
void main() {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
''');
|
||||
|
||||
Error? commandError;
|
||||
final List<String> output = await runCapturingPrint(
|
||||
runner, <String>['readme-check'], errorHandler: (Error e) {
|
||||
commandError = e;
|
||||
});
|
||||
|
||||
expect(commandError, isA<ToolExit>());
|
||||
expect(
|
||||
output,
|
||||
containsAllInOrder(<Matcher>[
|
||||
contains('Code block at line 3 is missing a language identifier.'),
|
||||
contains('Missing language identifier for code block'),
|
||||
]),
|
||||
);
|
||||
});
|
||||
|
||||
test('allows unknown info strings', () async {
|
||||
final Directory packageDir = createFakePackage('a_package', packagesDir);
|
||||
|
||||
packageDir.childFile('README.md').writeAsStringSync('''
|
||||
Example:
|
||||
|
||||
```someunknowninfotag
|
||||
A B C
|
||||
```
|
||||
''');
|
||||
|
||||
final List<String> output = await runCapturingPrint(runner, <String>[
|
||||
'readme-check',
|
||||
]);
|
||||
|
||||
expect(
|
||||
output,
|
||||
containsAll(<Matcher>[
|
||||
contains('Running for a_package...'),
|
||||
contains('No issues found!'),
|
||||
]),
|
||||
);
|
||||
});
|
||||
|
||||
test('allows space around info strings', () async {
|
||||
final Directory packageDir = createFakePackage('a_package', packagesDir);
|
||||
|
||||
packageDir.childFile('README.md').writeAsStringSync('''
|
||||
Example:
|
||||
|
||||
``` dart
|
||||
A B C
|
||||
```
|
||||
''');
|
||||
|
||||
final List<String> output = await runCapturingPrint(runner, <String>[
|
||||
'readme-check',
|
||||
]);
|
||||
|
||||
expect(
|
||||
output,
|
||||
containsAll(<Matcher>[
|
||||
contains('Running for a_package...'),
|
||||
contains('No issues found!'),
|
||||
]),
|
||||
);
|
||||
});
|
||||
|
||||
test('passes when excerpt requirement is met', () async {
|
||||
final Directory packageDir = createFakePackage('a_package', packagesDir);
|
||||
|
||||
packageDir.childFile('README.md').writeAsStringSync('''
|
||||
Example:
|
||||
|
||||
<?code-excerpt "main.dart (SomeSection)"?>
|
||||
```dart
|
||||
A B C
|
||||
```
|
||||
''');
|
||||
|
||||
final List<String> output = await runCapturingPrint(
|
||||
runner, <String>['readme-check', '--require-excerpts']);
|
||||
|
||||
expect(
|
||||
output,
|
||||
containsAll(<Matcher>[
|
||||
contains('Running for a_package...'),
|
||||
contains('No issues found!'),
|
||||
]),
|
||||
);
|
||||
});
|
||||
|
||||
test('fails on missing excerpt tag when requested', () async {
|
||||
final Directory packageDir = createFakePackage('a_package', packagesDir);
|
||||
|
||||
packageDir.childFile('README.md').writeAsStringSync('''
|
||||
Example:
|
||||
|
||||
```dart
|
||||
A B C
|
||||
```
|
||||
''');
|
||||
|
||||
Error? commandError;
|
||||
final List<String> output = await runCapturingPrint(
|
||||
runner, <String>['readme-check', '--require-excerpts'],
|
||||
errorHandler: (Error e) {
|
||||
commandError = e;
|
||||
});
|
||||
|
||||
expect(commandError, isA<ToolExit>());
|
||||
expect(
|
||||
output,
|
||||
containsAllInOrder(<Matcher>[
|
||||
contains('Dart code block at line 3 is not managed by code-excerpt.'),
|
||||
contains('Missing code-excerpt management for code block'),
|
||||
]),
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user