CB-12546: emulator specs.

This commit is contained in:
filmaj
2017-03-14 13:12:57 -07:00
parent eb6ada8091
commit 6395eda0c8
24 changed files with 655 additions and 446 deletions
+7
View File
@@ -0,0 +1,7 @@
Available Android Virtual Devices:
Name: QWR
Device: Nexus 5 (Google)
Path: /Users/shazron/.android/avd/QWR.avd
Target: Android 7.1.1 (API level 25)
Tag/ABI: google_apis/x86_64
Skin: 1080x1920
+22
View File
@@ -0,0 +1,22 @@
Available Android Virtual Devices:
Name: nexus5-5.1
Device: Nexus 5 (Google)
Path: /Users/maj/.android/avd/nexus5-5.1.avd
Target: Google APIs
Based on: Android 5.1 (Lollipop) Tag/ABI: google_apis/x86_64
Skin: 1080x1920
Sdcard: 128M
---------
Name: Pixel_API_25
Device: pixel (Google)
Path: /Users/maj/.android/avd/Pixel_API_25.avd
Target: Google APIs
Based on: Android 7.1.1 (Nougat) Tag/ABI: google_apis/x86_64
Skin: pixel
Sdcard: 100M
---------
Name: stock51
Path: /Users/maj/.android/avd/stock51.avd
Target: Default
Based on: Android 5.1 (Lollipop) Tag/ABI: default/x86_64
Sdcard: 128M
+107
View File
@@ -0,0 +1,107 @@
/**
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
*/
var cc = require("cordova-common");
var emu = require("../../bin/templates/cordova/lib/emulator");
var Q = require("q");
var fs = require("fs");
var path = require("path");
var shelljs = require("shelljs");
describe("emulator", function () {
describe("list_images_using_avdmanager", function() {
it("should properly parse details of SDK Tools 25.3.1 `avdmanager` output", function(done) {
var deferred = Q.defer();
spyOn(cc.superspawn, "spawn").and.returnValue(deferred.promise);
deferred.resolve(fs.readFileSync(path.join("spec", "fixtures", "avdmanager_list_avd.txt"), "utf-8"));
return emu.list_images_using_avdmanager()
.then(function(list) {
expect(list).toBeDefined();
expect(list[0].name).toEqual("nexus5-5.1");
expect(list[0].target).toEqual("Android 5.1 (API level 22)");
expect(list[1].device).toEqual("pixel (Google)");
expect(list[2].abi).toEqual("default/x86_64");
}).fail(function(err) {
expect(err).toBeUndefined();
}).fin(function() {
done();
});
});
});
describe("list_images_using_android", function() {
it("should properly parse details of SDK Tools pre-25.3.1 `android list avd` output", function(done) {
var deferred = Q.defer();
spyOn(cc.superspawn, "spawn").and.returnValue(deferred.promise);
deferred.resolve(fs.readFileSync(path.join("spec", "fixtures", "android_list_avd.txt"), "utf-8"));
return emu.list_images_using_android()
.then(function(list) {
expect(list).toBeDefined();
expect(list[0].name).toEqual("QWR");
expect(list[0].device).toEqual("Nexus 5 (Google)");
expect(list[0].path).toEqual("/Users/shazron/.android/avd/QWR.avd");
expect(list[0].target).toEqual("Android 7.1.1 (API level 25)");
expect(list[0].abi).toEqual("google_apis/x86_64");
expect(list[0].skin).toEqual("1080x1920");
}).fail(function(err) {
expect(err).toBeUndefined();
}).fin(function() {
done();
});
});
});
describe("list_images", function() {
beforeEach(function() {
spyOn(fs, "realpathSync").and.callFake(function(cmd) {
return cmd;
});
});
it("should try to parse AVD information using `android`", function() {
spyOn(shelljs, "which").and.callFake(function(cmd) {
if (cmd == "android") {
return true;
} else {
return false;
}
});
var android_spy = spyOn(emu, "list_images_using_android").and.returnValue({catch:function(){}});
emu.list_images();
expect(android_spy).toHaveBeenCalled();
});
it("should catch if `android` exits with non-zero code and specific stdout, and delegate to `avdmanager` if it can find it", function() {
spyOn(shelljs, "which").and.callFake(function(cmd) {
if (cmd == "avdmanager") {
return true;
} else {
return false;
}
});
var avdmanager_spy = spyOn(emu, "list_images_using_avdmanager");
emu.list_images();
expect(avdmanager_spy).toHaveBeenCalled();
});
it("should throw an error if neither `avdmanager` nor `android` are able to be found", function(done) {
spyOn(shelljs, "which").and.returnValue(false);
return emu.list_images()
.catch(function(err) {
expect(err).toBeDefined();
expect(err.message).toContain("Could not find either `android` or `avdmanager`");
done();
});
});
});
});