Skip to content

Commit 75276a9

Browse files
committed
fix: reset errors when fallback to list avds from directory
1 parent e61068c commit 75276a9

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

lib/common/mobile/android/android-virtual-device-service.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ export class AndroidVirtualDeviceService implements Mobile.IAndroidVirtualDevice
151151
private async getEmulatorImagesCore(): Promise<Mobile.IEmulatorImagesOutput> {
152152
let result: ISpawnResult = null;
153153
let devices: Mobile.IDeviceInfo[] = [];
154+
let errors: string[] = [];
154155

155156
if (this.pathToAvdManagerExecutable && this.$fs.exists(this.pathToAvdManagerExecutable)) {
156157
result = await this.$childProcess.trySpawnFromCloseEvent(this.pathToAvdManagerExecutable, ["list", "avds"]);
@@ -160,11 +161,12 @@ export class AndroidVirtualDeviceService implements Mobile.IAndroidVirtualDevice
160161

161162
if (result && result.stdout) {
162163
devices = this.parseListAvdsOutput(result.stdout);
164+
errors = result && result.stderr ? [result.stderr] : [];
163165
} else {
164166
devices = this.listAvdsFromDirectory();
165167
}
166168

167-
return { devices, errors: result && result.stderr ? [result.stderr] : [] };
169+
return { devices, errors };
168170
}
169171

170172
private async getRunningEmulatorData(runningEmulatorId: string, availableEmulators: Mobile.IDeviceInfo[]): Promise<Mobile.IDeviceInfo> {

lib/common/test/unit-tests/mobile/android-virtual-device-service.ts

+18
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,24 @@ describe("androidVirtualDeviceService", () => {
214214
assert.deepEqual(result[1], getAvailableEmulatorData({ displayName: "Nexus_5X_API_28", imageIdentifier: "Nexus_5X_API_28", version: "9.0.0", model: "Nexus 5X" }));
215215
assert.deepEqual(result[2], getAvailableEmulatorData({ displayName: "Nexus_6P_API_28", imageIdentifier: "Nexus_6P_API_28", version: "9.0.0", model: "Nexus 6P" }));
216216
});
217+
// In this case we should fallback to list avd directory and should't report errors from avdmanager
218+
it("should return devices and no errors when there is an error on avdmanager's stderr", async () => {
219+
const iniFilesData = getIniFilesData();
220+
const testInjector = createTestInjector({
221+
avdManagerOutput: "",
222+
avdManagerError: "my test error",
223+
iniFilesData
224+
});
225+
226+
const fs = testInjector.resolve("fs");
227+
fs.readDirectory = () => _.keys(iniFilesData);
228+
229+
const avdService = testInjector.resolve("androidVirtualDeviceService");
230+
const result = await avdService.getEmulatorImages(["emulator-5554 device"]);
231+
232+
assert.deepEqual(result.devices.length, 3);
233+
assert.deepEqual(result.errors.length, 0);
234+
});
217235
});
218236

219237
describe("when avdmanager is not found", () => {

0 commit comments

Comments
 (0)