diff --git a/dev/devicelab/bin/tasks/native_ui_tests_ios.dart b/dev/devicelab/bin/tasks/native_ui_tests_ios.dart index a671ad616f5..68bc76f3eff 100644 --- a/dev/devicelab/bin/tasks/native_ui_tests_ios.dart +++ b/dev/devicelab/bin/tasks/native_ui_tests_ios.dart @@ -36,7 +36,11 @@ Future main() async { section('Run platform unit tests'); final Device device = await devices.workingDevice; - if (!await runXcodeTests(path.join(projectDirectory, 'ios'), 'id=${device.deviceId}', 'native_ui_tests_ios')) { + if (!await runXcodeTests( + platformDirectory: path.join(projectDirectory, 'ios'), + destination: 'id=${device.deviceId}', + testName: 'native_ui_tests_ios', + )) { return TaskResult.failure('Platform unit tests failed'); } diff --git a/dev/devicelab/bin/tasks/native_ui_tests_macos.dart b/dev/devicelab/bin/tasks/native_ui_tests_macos.dart index f0051d1f47b..1b358432f79 100644 --- a/dev/devicelab/bin/tasks/native_ui_tests_macos.dart +++ b/dev/devicelab/bin/tasks/native_ui_tests_macos.dart @@ -27,7 +27,12 @@ Future main() async { section('Run platform unit tests'); - if (!await runXcodeTests(path.join(projectDirectory, 'macos'), 'platform=macOS', 'native_ui_tests_macos')) { + if (!await runXcodeTests( + platformDirectory: path.join(projectDirectory, 'macos'), + destination: 'platform=macOS', + testName: 'native_ui_tests_macos', + skipCodesign: true, + )) { return TaskResult.failure('Platform unit tests failed'); } diff --git a/dev/devicelab/lib/framework/ios.dart b/dev/devicelab/lib/framework/ios.dart index a746310cbee..487820c27f5 100644 --- a/dev/devicelab/lib/framework/ios.dart +++ b/dev/devicelab/lib/framework/ios.dart @@ -140,13 +140,22 @@ Future removeIOSimulator(String deviceId) async { } } -Future runXcodeTests(String platformDirectory, String destination, String testName) async { +Future runXcodeTests({ + required String platformDirectory, + required String destination, + required String testName, + bool skipCodesign = false, +}) async { final Map environment = Platform.environment; - // If not running on CI, inject the Flutter team code signing properties. - final String developmentTeam = environment['FLUTTER_XCODE_DEVELOPMENT_TEAM'] ?? 'S8QB4VV633'; - final String? codeSignStyle = environment['FLUTTER_XCODE_CODE_SIGN_STYLE']; - final String? provisioningProfile = environment['FLUTTER_XCODE_PROVISIONING_PROFILE_SPECIFIER']; - + String? developmentTeam; + String? codeSignStyle; + String? provisioningProfile; + if (!skipCodesign) { + // If not running on CI, inject the Flutter team code signing properties. + developmentTeam = environment['FLUTTER_XCODE_DEVELOPMENT_TEAM'] ?? 'S8QB4VV633'; + codeSignStyle = environment['FLUTTER_XCODE_CODE_SIGN_STYLE']; + provisioningProfile = environment['FLUTTER_XCODE_PROVISIONING_PROFILE_SPECIFIER']; + } final String resultBundleTemp = Directory.systemTemp.createTempSync('flutter_xcresult.').path; final String resultBundlePath = path.join(resultBundleTemp, 'result'); final int testResultExit = await exec( @@ -164,7 +173,8 @@ Future runXcodeTests(String platformDirectory, String destination, String resultBundlePath, 'test', 'COMPILER_INDEX_STORE_ENABLE=NO', - 'DEVELOPMENT_TEAM=$developmentTeam', + if (developmentTeam != null) + 'DEVELOPMENT_TEAM=$developmentTeam', if (codeSignStyle != null) 'CODE_SIGN_STYLE=$codeSignStyle', if (provisioningProfile != null) diff --git a/dev/integration_tests/flutter_gallery/macos/Podfile.lock b/dev/integration_tests/flutter_gallery/macos/Podfile.lock index 81a795ade4d..ddad43d5eba 100644 --- a/dev/integration_tests/flutter_gallery/macos/Podfile.lock +++ b/dev/integration_tests/flutter_gallery/macos/Podfile.lock @@ -32,4 +32,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: b5c36ba411e4471a03727d0463fa17be341876c1 -COCOAPODS: 1.10.2 +COCOAPODS: 1.11.2 diff --git a/dev/integration_tests/flutter_gallery/macos/RunnerTests/RunnerTests.m b/dev/integration_tests/flutter_gallery/macos/RunnerTests/RunnerTests.m index 6eaba2fe456..f790ea74e1a 100644 --- a/dev/integration_tests/flutter_gallery/macos/RunnerTests/RunnerTests.m +++ b/dev/integration_tests/flutter_gallery/macos/RunnerTests/RunnerTests.m @@ -18,9 +18,11 @@ NSMenu *mainMenu = NSApplication.sharedApplication.mainMenu; XCTAssertEqual([mainMenu indexOfItemWithSubmenu:applicationMenu], 0); - XCTAssertEqual([mainMenu itemWithTitle:@"Edit"].submenu.numberOfItems, 19); - XCTAssertEqual([mainMenu itemWithTitle:@"View"].submenu.numberOfItems, 1); - XCTAssertEqual([mainMenu itemWithTitle:@"Window"].submenu.numberOfItems, 6); + // The number of submenu items changes depending on what the OS decides to inject. + // Just check there's at least one per menu item. + XCTAssertGreaterThanOrEqual([mainMenu itemWithTitle:@"Edit"].submenu.numberOfItems, 1); + XCTAssertGreaterThanOrEqual([mainMenu itemWithTitle:@"View"].submenu.numberOfItems, 1); + XCTAssertGreaterThanOrEqual([mainMenu itemWithTitle:@"Window"].submenu.numberOfItems, 1); XCTAssertNil(NSApplication.sharedApplication.helpMenu); }