Fix samsung "run-as" warning (#413)

Summary:
During client setup, if no device is found with a matching CSR, and any of those devices errored while trying to find that out, surface that error, instead of a generic 'No matching device found'.

This means that the warning about some unusable samsung devices now shows again, instead of a generic message.

Pull Request resolved: https://github.com/facebook/flipper/pull/413

Reviewed By: passy

Differential Revision: D14891185

Pulled By: jknoxville

fbshipit-source-id: 8f4cb4e8e04defb429a4ca915b0dab4725495c87
This commit is contained in:
John Knox
2019-04-11 05:21:31 -07:00
committed by Facebook Github Bot
parent ffc6a5fe18
commit 460260d620

View File

@@ -270,19 +270,23 @@ export default class CertificateProvider {
csr,
)
.then(isMatch => {
return {id: device.id, isMatch};
return {id: device.id, isMatch, error: null};
})
.catch(e => {
console.error(
`Unable to check for matching CSR in ${device.id}:${appName}`,
logTag,
);
return {id: device.id, isMatch: false};
return {id: device.id, isMatch: false, error: e};
}),
);
return Promise.all(deviceMatchList).then(devices => {
const matchingIds = devices.filter(m => m.isMatch).map(m => m.id);
if (matchingIds.length == 0) {
const erroredDevice = devices.find(d => d.error);
if (erroredDevice) {
throw erroredDevice.error;
}
throw new Error(`No matching device found for app: ${appName}`);
}
if (matchingIds.length > 1) {
@@ -337,14 +341,9 @@ export default class CertificateProvider {
deviceId,
processName,
`cat ${directory + csrFileName}`,
)
.then(deviceCsr => {
return this.santitizeString(deviceCsr.toString()) === csr;
})
.catch(err => {
console.error(err, logTag);
return false;
});
).then(deviceCsr => {
return this.santitizeString(deviceCsr.toString()) === csr;
});
}
iOSDeviceHasMatchingCSR(
@@ -419,18 +418,14 @@ export default class CertificateProvider {
.then(buffer => buffer.toString())
.then(output => {
if (output.match(appNotDebuggableRegex)) {
const e = new Error(
throw new Error(
`Android app ${user} is not debuggable. To use it with Flipper, add android:debuggable="true" to the application section of AndroidManifest.xml`,
);
this.server.emit('error', e);
throw e;
}
if (output.toLowerCase().match(operationNotPermittedRegex)) {
const e = new Error(
throw new Error(
`Your android device (${deviceId}) does not support the adb shell run-as command. We're tracking this at https://github.com/facebook/flipper/issues/92`,
);
this.server.emit('error', e);
throw e;
}
return output;
});