mirror of
https://github.com/flutter/packages.git
synced 2025-06-18 21:19:48 +08:00
[Tool] [Code Excerpt] allow excerpts in example readme (#3758)
Adds the ability to add code excerpts to README files within the example directory.
This commit is contained in:
@ -1,3 +1,7 @@
|
|||||||
|
## 0.13.4+4
|
||||||
|
|
||||||
|
* Allows code excerpts in `example/README.md`.
|
||||||
|
|
||||||
## 0.13.4+3
|
## 0.13.4+3
|
||||||
|
|
||||||
* Moves source to flutter/packages.
|
* Moves source to flutter/packages.
|
||||||
|
@ -89,6 +89,10 @@ class UpdateExcerptsCommand extends PackageLoopingCommand {
|
|||||||
if (!await _injectSnippets(example, targetPackage: package)) {
|
if (!await _injectSnippets(example, targetPackage: package)) {
|
||||||
return PackageResult.fail(<String>['Unable to inject excerpts']);
|
return PackageResult.fail(<String>['Unable to inject excerpts']);
|
||||||
}
|
}
|
||||||
|
if (!await _injectSnippets(example, targetPackage: example)) {
|
||||||
|
return PackageResult.fail(
|
||||||
|
<String>['Unable to inject example excerpts']);
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
// Clean up the pubspec changes and extracted excerpts directory.
|
// Clean up the pubspec changes and extracted excerpts directory.
|
||||||
_undoPubspecChanges(example);
|
_undoPubspecChanges(example);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
name: flutter_plugin_tools
|
name: flutter_plugin_tools
|
||||||
description: Productivity and CI utils for flutter/packages
|
description: Productivity and CI utils for flutter/packages
|
||||||
repository: https://github.com/flutter/packages/tree/main/script/tool
|
repository: https://github.com/flutter/packages/tree/main/script/tool
|
||||||
version: 0.13.4+3
|
version: 0.13.4+4
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
args: ^2.1.0
|
args: ^2.1.0
|
||||||
|
@ -109,6 +109,50 @@ void main() {
|
|||||||
]));
|
]));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('updates example readme when config is present', () async {
|
||||||
|
final RepositoryPackage package = createFakePlugin('a_package', packagesDir,
|
||||||
|
extraFiles: <String>[kReadmeExcerptConfigPath]);
|
||||||
|
final Directory example = getExampleDir(package);
|
||||||
|
|
||||||
|
final List<String> output =
|
||||||
|
await runCapturingPrint(runner, <String>['update-excerpts']);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
processRunner.recordedCalls,
|
||||||
|
containsAll(<ProcessCall>[
|
||||||
|
ProcessCall(
|
||||||
|
'dart',
|
||||||
|
const <String>[
|
||||||
|
'run',
|
||||||
|
'build_runner',
|
||||||
|
'build',
|
||||||
|
'--config',
|
||||||
|
'excerpt',
|
||||||
|
'--output',
|
||||||
|
'excerpts',
|
||||||
|
'--delete-conflicting-outputs',
|
||||||
|
],
|
||||||
|
example.path),
|
||||||
|
ProcessCall(
|
||||||
|
'dart',
|
||||||
|
const <String>[
|
||||||
|
'run',
|
||||||
|
'code_excerpt_updater',
|
||||||
|
'--write-in-place',
|
||||||
|
'--yaml',
|
||||||
|
'--no-escape-ng-interpolation',
|
||||||
|
'README.md',
|
||||||
|
],
|
||||||
|
example.path),
|
||||||
|
]));
|
||||||
|
|
||||||
|
expect(
|
||||||
|
output,
|
||||||
|
containsAllInOrder(<Matcher>[
|
||||||
|
contains('Ran for 1 package(s)'),
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
|
||||||
test('skips when no config is present', () async {
|
test('skips when no config is present', () async {
|
||||||
createFakePlugin('a_package', packagesDir);
|
createFakePlugin('a_package', packagesDir);
|
||||||
|
|
||||||
@ -231,6 +275,34 @@ void main() {
|
|||||||
]));
|
]));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('fails if example injection fails', () async {
|
||||||
|
createFakePlugin('a_package', packagesDir,
|
||||||
|
extraFiles: <String>[kReadmeExcerptConfigPath]);
|
||||||
|
|
||||||
|
processRunner.mockProcessesForExecutable['dart'] = <FakeProcessInfo>[
|
||||||
|
FakeProcessInfo(MockProcess(), <String>['pub', 'get']),
|
||||||
|
FakeProcessInfo(MockProcess(), <String>['run', 'build_runner']),
|
||||||
|
FakeProcessInfo(MockProcess(), <String>['run', 'code_excerpt_updater']),
|
||||||
|
FakeProcessInfo(
|
||||||
|
MockProcess(exitCode: 1), <String>['run', 'code_excerpt_updater']),
|
||||||
|
];
|
||||||
|
|
||||||
|
Error? commandError;
|
||||||
|
final List<String> output = await runCapturingPrint(
|
||||||
|
runner, <String>['update-excerpts'], errorHandler: (Error e) {
|
||||||
|
commandError = e;
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(commandError, isA<ToolExit>());
|
||||||
|
expect(
|
||||||
|
output,
|
||||||
|
containsAllInOrder(<Matcher>[
|
||||||
|
contains('The following packages had errors:'),
|
||||||
|
contains('a_package:\n'
|
||||||
|
' Unable to inject example excerpts')
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
|
||||||
test('fails if READMEs are changed with --fail-on-change', () async {
|
test('fails if READMEs are changed with --fail-on-change', () async {
|
||||||
createFakePlugin('a_plugin', packagesDir,
|
createFakePlugin('a_plugin', packagesDir,
|
||||||
extraFiles: <String>[kReadmeExcerptConfigPath]);
|
extraFiles: <String>[kReadmeExcerptConfigPath]);
|
||||||
|
Reference in New Issue
Block a user