blob: 655530988cde34d6186387fee3dfcc28059cae73 [file] [log] [blame]
// 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;
}