Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

[flutter_plugin_tools] Adjust diff logging #4312

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions script/tool/lib/src/common/git_version_finder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ import 'package:yaml/yaml.dart';
/// Finding diffs based on `baseGitDir` and `baseSha`.
class GitVersionFinder {
/// Constructor
GitVersionFinder(this.baseGitDir, this.baseSha);
GitVersionFinder(this.baseGitDir, String? baseSha) : _baseSha = baseSha;

/// The top level directory of the git repo.
///
/// That is where the .git/ folder exists.
final GitDir baseGitDir;

/// The base sha used to get diff.
final String? baseSha;
String? _baseSha;

static bool _isPubspec(String file) {
return file.trim().endsWith('pubspec.yaml');
Expand All @@ -32,10 +32,9 @@ class GitVersionFinder {

/// Get a list of all the changed files.
Future<List<String>> getChangedFiles() async {
final String baseSha = await _getBaseSha();
final String baseSha = await getBaseSha();
final io.ProcessResult changedFilesCommand = await baseGitDir
.runCommand(<String>['diff', '--name-only', baseSha, 'HEAD']);
print('Determine diff with base sha: $baseSha');
final String changedFilesStdout = changedFilesCommand.stdout.toString();
if (changedFilesStdout.isEmpty) {
return <String>[];
Expand All @@ -49,7 +48,7 @@ class GitVersionFinder {
/// at the revision of `gitRef` (defaulting to the base if not provided).
Future<Version?> getPackageVersion(String pubspecPath,
{String? gitRef}) async {
final String ref = gitRef ?? (await _getBaseSha());
final String ref = gitRef ?? (await getBaseSha());

io.ProcessResult gitShow;
try {
Expand All @@ -63,9 +62,11 @@ class GitVersionFinder {
return versionString == null ? null : Version.parse(versionString);
}

Future<String> _getBaseSha() async {
if (baseSha != null && baseSha!.isNotEmpty) {
return baseSha!;
/// Returns the base used to diff against.
Future<String> getBaseSha() async {
String? baseSha = _baseSha;
if (baseSha != null && baseSha.isNotEmpty) {
return baseSha;
}

io.ProcessResult baseShaFromMergeBase = await baseGitDir.runCommand(
Expand All @@ -76,6 +77,8 @@ class GitVersionFinder {
baseShaFromMergeBase = await baseGitDir
.runCommand(<String>['merge-base', 'FETCH_HEAD', 'HEAD']);
}
return (baseShaFromMergeBase.stdout as String).trim();
baseSha = (baseShaFromMergeBase.stdout as String).trim();
_baseSha = baseSha;
return baseSha;
}
}
3 changes: 3 additions & 0 deletions script/tool/lib/src/common/plugin_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,9 @@ abstract class PluginCommand extends Command<void> {

if (runOnChangedPackages) {
final GitVersionFinder gitVersionFinder = await retrieveVersionFinder();
final String baseSha = await gitVersionFinder.getBaseSha();
print(
'Running for all packages that have changed relative to "$baseSha"\n');
final List<String> changedFiles =
await gitVersionFinder.getChangedFiles();
if (!_changesRequireFullTest(changedFiles)) {
Expand Down
3 changes: 3 additions & 0 deletions script/tool/lib/src/publish_plugin_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,9 @@ class PublishPluginCommand extends PackageLoopingCommand {
Stream<PackageEnumerationEntry> getPackagesToProcess() async* {
if (getBoolArg(_allChangedFlag)) {
final GitVersionFinder gitVersionFinder = await retrieveVersionFinder();
final String baseSha = await gitVersionFinder.getBaseSha();
print(
'Publishing all packages that have changed relative to "$baseSha"\n');
final List<String> changedPubspecs =
await gitVersionFinder.getChangedPubSpecs();

Expand Down
9 changes: 8 additions & 1 deletion script/tool/test/common/plugin_command_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -398,12 +398,19 @@ packages/plugin1/CHANGELOG
];
final Directory plugin1 = createFakePlugin('plugin1', packagesDir);
createFakePlugin('plugin2', packagesDir);
await runCapturingPrint(runner, <String>[
final List<String> output = await runCapturingPrint(runner, <String>[
'sample',
'--base-sha=master',
'--run-on-changed-packages'
]);

expect(
output,
containsAllInOrder(<Matcher>[
contains(
'Running for all packages that have changed relative to "master"'),
]));

expect(command.plugins, unorderedEquals(<String>[plugin1.path]));
});

Expand Down
2 changes: 2 additions & 0 deletions script/tool/test/publish_plugin_command_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,8 @@ void main() {
expect(
output,
containsAllInOrder(<Matcher>[
contains(
'Publishing all packages that have changed relative to "HEAD~"'),
contains('Running `pub publish ` in ${pluginDir1.path}...'),
contains('Running `pub publish ` in ${pluginDir2.path}...'),
contains('plugin1 - \x1B[32mpublished\x1B[0m'),
Expand Down