m3_lightmeter/test_driver/utils/grant_camera_permission.dart

35 lines
1,003 B
Dart
Raw Permalink Normal View History

import 'dart:developer';
import 'dart:io';
Future<void> grantCameraPermission() async {
try {
final bool adbExists = Process.runSync('which', <String>['adb']).exitCode == 0;
if (!adbExists) {
log(r'This test needs ADB to exist on the $PATH. Skipping...');
exit(0);
}
final deviceId = await Process.run('adb', ["-s", 'shell', 'devices']).then((value) {
if (value.stdout is String) {
return RegExp(r"(?:List of devices attached\n)([A-Z0-9]*)(?:\sdevice\n)")
.firstMatch(value.stdout as String)!
.group(1);
}
});
if (deviceId == null) {
log('This test needs at least one device connected');
exit(0);
}
await Process.run('adb', [
"-s",
deviceId, // https://github.com/flutter/flutter/issues/86295#issuecomment-1192766368
'shell',
'pm',
'grant',
'com.vodemn.lightmeter.dev',
'android.permission.CAMERA'
]);
} catch (e) {
log('Error occured: $e');
}
}