From be8d29ffc639d22db81dc7ceadcf4b1423613452 Mon Sep 17 00:00:00 2001 From: Jenn Magder Date: Mon, 27 Sep 2021 17:38:03 -0700 Subject: [PATCH] Run native_ui_tests_macos in correct directory (#90829) --- .../bin/tasks/native_ui_tests_ios.dart | 3 +- .../bin/tasks/native_ui_tests_macos.dart | 3 +- dev/devicelab/lib/framework/ios.dart | 39 +++++++++++-------- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/dev/devicelab/bin/tasks/native_ui_tests_ios.dart b/dev/devicelab/bin/tasks/native_ui_tests_ios.dart index 7fc719e1f6..a671ad616f 100644 --- a/dev/devicelab/bin/tasks/native_ui_tests_ios.dart +++ b/dev/devicelab/bin/tasks/native_ui_tests_ios.dart @@ -7,6 +7,7 @@ import 'package:flutter_devicelab/framework/framework.dart'; import 'package:flutter_devicelab/framework/ios.dart'; import 'package:flutter_devicelab/framework/task_result.dart'; import 'package:flutter_devicelab/framework/utils.dart'; +import 'package:path/path.dart' as path; Future main() async { deviceOperatingSystem = DeviceOperatingSystem.ios; @@ -35,7 +36,7 @@ Future main() async { section('Run platform unit tests'); final Device device = await devices.workingDevice; - if (!await runXcodeTests(projectDirectory, device.deviceId, 'native_ui_tests_ios')) { + if (!await runXcodeTests(path.join(projectDirectory, 'ios'), 'id=${device.deviceId}', '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 a869d45424..f0051d1f47 100644 --- a/dev/devicelab/bin/tasks/native_ui_tests_macos.dart +++ b/dev/devicelab/bin/tasks/native_ui_tests_macos.dart @@ -6,6 +6,7 @@ import 'package:flutter_devicelab/framework/framework.dart'; import 'package:flutter_devicelab/framework/ios.dart'; import 'package:flutter_devicelab/framework/task_result.dart'; import 'package:flutter_devicelab/framework/utils.dart'; +import 'package:path/path.dart' as path; Future main() async { await task(() async { @@ -26,7 +27,7 @@ Future main() async { section('Run platform unit tests'); - if (!await runXcodeTests(projectDirectory, 'platform=macOS', 'native_ui_tests_macos')) { + if (!await runXcodeTests(path.join(projectDirectory, 'macos'), 'platform=macOS', 'native_ui_tests_macos')) { return TaskResult.failure('Platform unit tests failed'); } diff --git a/dev/devicelab/lib/framework/ios.dart b/dev/devicelab/lib/framework/ios.dart index 148a3c48c6..a746310cbe 100644 --- a/dev/devicelab/lib/framework/ios.dart +++ b/dev/devicelab/lib/framework/ios.dart @@ -140,7 +140,7 @@ Future removeIOSimulator(String deviceId) async { } } -Future runXcodeTests(String projectDirectory, String deviceId, String testName) async { +Future runXcodeTests(String platformDirectory, String destination, String testName) 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'; @@ -159,7 +159,7 @@ Future runXcodeTests(String projectDirectory, String deviceId, String test '-configuration', 'Release', '-destination', - 'id=$deviceId', + destination, '-resultBundlePath', resultBundlePath, 'test', @@ -170,27 +170,32 @@ Future runXcodeTests(String projectDirectory, String deviceId, String test if (provisioningProfile != null) 'PROVISIONING_PROFILE_SPECIFIER=$provisioningProfile', ], - workingDirectory: path.join(projectDirectory, 'ios'), + workingDirectory: platformDirectory, canFail: true, ); if (testResultExit != 0) { final Directory? dumpDirectory = hostAgent.dumpDirectory; + final Directory xcresultBundle = Directory(path.join(resultBundleTemp, 'result.xcresult')); if (dumpDirectory != null) { - // Zip the test results to the artifacts directory for upload. - final String zipPath = path.join(dumpDirectory.path, - '$testName-${DateTime.now().toLocal().toIso8601String()}.zip'); - await exec( - 'zip', - [ - '-r', - '-9', - zipPath, - 'result.xcresult', - ], - workingDirectory: resultBundleTemp, - canFail: true, // Best effort to get the logs. - ); + if (xcresultBundle.existsSync()) { + // Zip the test results to the artifacts directory for upload. + final String zipPath = path.join(dumpDirectory.path, + '$testName-${DateTime.now().toLocal().toIso8601String()}.zip'); + await exec( + 'zip', + [ + '-r', + '-9', + zipPath, + path.basename(xcresultBundle.path), + ], + workingDirectory: resultBundleTemp, + canFail: true, // Best effort to get the logs. + ); + } else { + print('xcresult bundle ${xcresultBundle.path} does not exist, skipping upload'); + } } return false; }