diff --git a/script/tool/lib/src/podspec_check_command.dart b/script/tool/lib/src/podspec_check_command.dart index 5968de5eaf..9259e0dbb0 100644 --- a/script/tool/lib/src/podspec_check_command.dart +++ b/script/tool/lib/src/podspec_check_command.dart @@ -102,8 +102,10 @@ class PodspecCheckCommand extends PackageLoopingCommand { Future> _podspecsToLint(RepositoryPackage package) async { final List podspecs = await getFilesForPackage(package).where((File entity) { - final String filePath = entity.path; - return path.extension(filePath) == '.podspec'; + final String filename = entity.basename; + return path.extension(filename) == '.podspec' && + filename != 'Flutter.podspec' && + filename != 'FlutterMacOS.podspec'; }).toList(); podspecs.sort((File a, File b) => a.basename.compareTo(b.basename)); diff --git a/script/tool/test/podspec_check_command_test.dart b/script/tool/test/podspec_check_command_test.dart index a581542827..97783cb29b 100644 --- a/script/tool/test/podspec_check_command_test.dart +++ b/script/tool/test/podspec_check_command_test.dart @@ -171,6 +171,60 @@ void main() { expect(output, contains('Bar')); }); + test('skips shim podspecs for the Flutter framework', () async { + final RepositoryPackage plugin = createFakePlugin( + 'plugin1', + packagesDir, + extraFiles: [ + 'example/ios/Flutter/Flutter.podspec', + 'example/macos/Flutter/ephemeral/FlutterMacOS.podspec', + ], + ); + _writeFakePodspec(plugin, 'macos'); + + final List output = + await runCapturingPrint(runner, ['podspec-check']); + + expect(output, isNot(contains('FlutterMacOS.podspec'))); + expect( + processRunner.recordedCalls, + orderedEquals([ + ProcessCall('which', const ['pod'], packagesDir.path), + ProcessCall( + 'pod', + [ + 'lib', + 'lint', + plugin + .platformDirectory(FlutterPlatform.macos) + .childFile('plugin1.podspec') + .path, + '--configuration=Debug', + '--skip-tests', + '--allow-warnings', + '--use-modular-headers', + '--use-libraries' + ], + packagesDir.path), + ProcessCall( + 'pod', + [ + 'lib', + 'lint', + plugin + .platformDirectory(FlutterPlatform.macos) + .childFile('plugin1.podspec') + .path, + '--configuration=Debug', + '--skip-tests', + '--allow-warnings', + '--use-modular-headers', + ], + packagesDir.path), + ]), + ); + }); + test('fails if pod is missing', () async { final RepositoryPackage plugin = createFakePlugin('plugin1', packagesDir); _writeFakePodspec(plugin, 'ios');