[flutter_plugin_tools] Validate code blocks in readme-check (#5436)

This commit is contained in:
stuartmorgan
2022-04-28 22:29:09 -04:00
committed by GitHub
parent 6770bf9245
commit d43fae6fb4
4 changed files with 223 additions and 10 deletions

View File

@ -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'),
]),
);
});
});
}