diff --git a/app_dart/lib/src/service/scheduler/files_changed_optimization.dart b/app_dart/lib/src/service/scheduler/files_changed_optimization.dart index dbfd1d903b..7052f19266 100644 --- a/app_dart/lib/src/service/scheduler/files_changed_optimization.dart +++ b/app_dart/lib/src/service/scheduler/files_changed_optimization.dart @@ -66,7 +66,7 @@ final class FilesChangedOptimizer { log.warn('$refusePrefix: $reason'); return FilesChangedOptimization.none; case SuccessfulFilesChanged(:final filesChanged): - var markdownOnly = true; + var noSourceImpact = true; for (final file in filesChanged) { if (file == 'DEPS' || file.startsWith('engine/')) { log.info( @@ -74,17 +74,25 @@ final class FilesChangedOptimizer { ); return FilesChangedOptimization.none; } - if (markdownOnly && p.posix.extension(file) != '.md') { - markdownOnly = false; + if (noSourceImpact && + p.posix.extension(file) != '.md' && + file != _binInternalEngineVersion) { + noSourceImpact = false; } } - if (!markdownOnly) { + if (!noSourceImpact) { return FilesChangedOptimization.skipPresubmitEngine; } else { return FilesChangedOptimization.skipPresubmitAllExceptFlutterAnalyze; } } } + + static final _binInternalEngineVersion = p.posix.join( + 'bin', + 'internal', + 'engine.version', + ); } /// Given a [FilesChanged], a determined safe optimization that can be made. diff --git a/app_dart/test/service/scheduler/files_changed_optimization_test.dart b/app_dart/test/service/scheduler/files_changed_optimization_test.dart index c9ae1413cf..ab6a89a2fc 100644 --- a/app_dart/test/service/scheduler/files_changed_optimization_test.dart +++ b/app_dart/test/service/scheduler/files_changed_optimization_test.dart @@ -152,6 +152,26 @@ void main() { ); }); + test('include bin/internal/engine.version as ignored', () async { + final optimizer = FilesChangedOptimizer( + getFilesChanged: filesChanged([ + 'README.md', + 'CONTRIBUTING.md', + 'bin/internal/engine.version', + 'packages/flutter_tools/lib/src/engine/NOT_THE_ENGINE.md', + ]), + ciYamlFetcher: ciYamlFetcher(slug: Config.flutterSlug), + config: config(maxFilesChangedForSkippingEnginePhase: 100), + ); + + await expectLater( + optimizer.checkPullRequest( + generatePullRequest(repo: 'flutter', changedFilesCount: 4, number: 123), + ), + completion(FilesChangedOptimization.skipPresubmitAllExceptFlutterAnalyze), + ); + }); + test('only non-engine files', () async { final optimizer = FilesChangedOptimizer( getFilesChanged: filesChanged(['packages/flutter/lib/flutter.dart']),