| // Copyright 2020 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'dart:async'; |
| |
| import 'package:process/process.dart'; |
| |
| import 'health.dart'; |
| import 'utils.dart'; |
| |
| /// The health check for Mac swarming user auto login. |
| /// |
| /// The `swarming` user auto login is required for Flutter desktop tests which need to run |
| /// GUI application on Mac. |
| Future<HealthCheckResult> userAutoLoginCheck({ProcessManager? processManager}) async { |
| HealthCheckResult healthCheckResult; |
| try { |
| final String user = await eval( |
| 'defaults', |
| <String>['read', '/Library/Preferences/com.apple.loginwindow', 'autoLoginUser'], |
| processManager: processManager, |
| ); |
| // User `swarming` is expected setup for Mac bot auto login. |
| if (user == 'swarming') { |
| healthCheckResult = HealthCheckResult.success(kUserAutoLoginCheckKey); |
| } else { |
| healthCheckResult = |
| HealthCheckResult.failure(kUserAutoLoginCheckKey, 'swarming user is not setup for auto login'); |
| } |
| } on BuildFailedError catch (error) { |
| healthCheckResult = HealthCheckResult.failure(kUserAutoLoginCheckKey, error.toString()); |
| } |
| return healthCheckResult; |
| } |