From e5c90badbaf0c8c6fca52731b216f993ed1029ec Mon Sep 17 00:00:00 2001 From: Audrey So Date: Tue, 26 Sep 2017 17:15:30 -0700 Subject: [PATCH 1/5] CB-12895 : eslint ignoring cordova.js --- .eslintignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .eslintignore diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..5027e1be --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +bin/templates/project/assets/www/cordova.js \ No newline at end of file From 1f12fdbeea36646604d667e4e2e221547b07ca8f Mon Sep 17 00:00:00 2001 From: filmaj Date: Thu, 5 Oct 2017 15:17:31 -0500 Subject: [PATCH 2/5] CB-13404: add android-versions to bundledDependencies. Ignore best emulator selection when parsed AVD information does not include API level in the target --- bin/templates/cordova/lib/emulator.js | 6 +++--- package.json | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/bin/templates/cordova/lib/emulator.js b/bin/templates/cordova/lib/emulator.js index 6828176b..edb7c800 100644 --- a/bin/templates/cordova/lib/emulator.js +++ b/bin/templates/cordova/lib/emulator.js @@ -207,11 +207,11 @@ module.exports.best_image = function () { var closest = 9999; var best = images[0]; - var project_target = check_reqs.get_target().replace('android-', ''); + var project_target = parseInt(check_reqs.get_target().replace('android-', '')); for (var i in images) { var target = images[i].target; - if (target) { - var num = target.split('(API level ')[1].replace(')', ''); + if (target && target.indexOf('API level') > -1) { + var num = parseInt(target.split('(API level ')[1].replace(')', '')); if (num === project_target) { return images[i]; } else if (project_target - num < closest && project_target > num) { diff --git a/package.json b/package.json index f40983f3..88a0da7f 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "author": "Apache Software Foundation", "license": "Apache-2.0", "dependencies": { - "android-versions": "^1.2.0", + "android-versions": "^1.2.1", "cordova-common": "^2.1.0", "elementtree": "0.1.6", "nopt": "^3.0.1", @@ -38,6 +38,7 @@ "shelljs": "^0.5.3" }, "bundledDependencies": [ + "android-versions", "cordova-common", "elementtree", "nopt", From ec83d481fa6470fb122c3e756c774c71bf6f0769 Mon Sep 17 00:00:00 2001 From: filmaj Date: Thu, 5 Oct 2017 15:18:42 -0500 Subject: [PATCH 3/5] CB-13406: Fixed AVD API level comparison when choosing sub-par API level match. Added tests for the best_image method. --- spec/unit/emulator.spec.js | 65 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/spec/unit/emulator.spec.js b/spec/unit/emulator.spec.js index 551ab6d0..60d7a8ac 100644 --- a/spec/unit/emulator.spec.js +++ b/spec/unit/emulator.spec.js @@ -18,6 +18,7 @@ */ var emu = require('../../bin/templates/cordova/lib/emulator'); +var check_reqs = require('../../bin/templates/cordova/lib/check_reqs'); var superspawn = require('cordova-common').superspawn; var Q = require('q'); var fs = require('fs'); @@ -156,4 +157,68 @@ describe('emulator', function () { }); }); }); + describe('best_image', function () { + var avds_promise; + var target_mock; + beforeEach(function () { + avds_promise = Q.defer(); + spyOn(emu, 'list_images').and.returnValue(avds_promise.promise); + target_mock = spyOn(check_reqs, 'get_target').and.returnValue('android-26'); + }); + it('should return undefined if there are no defined AVDs', function (done) { + avds_promise.resolve([]); + emu.best_image().then(function (best_avd) { + expect(best_avd).toBeUndefined(); + }).fail(function (err) { + expect(err).toBeUndefined(); + }).fin(done); + }); + it('should return the first available image if there is no available target information for existing AVDs', function (done) { + var fake_avd = { name: 'MyFakeAVD' }; + var second_fake_avd = { name: 'AnotherAVD' }; + avds_promise.resolve([fake_avd, second_fake_avd]); + emu.best_image().then(function (best_avd) { + expect(best_avd).toBe(fake_avd); + }).fail(function (err) { + expect(err).toBeUndefined(); + }).fin(done); + }); + it('should return the first AVD for the API level that matches the project target', function (done) { + target_mock.and.returnValue('android-25'); + var fake_avd = { name: 'MyFakeAVD', target: 'Android 7.0 (API level 24)' }; + var second_fake_avd = { name: 'AnotherAVD', target: 'Android 7.1 (API level 25)' }; + var third_fake_avd = { name: 'AVDThree', target: 'Android 8.0 (API level 26)' }; + avds_promise.resolve([fake_avd, second_fake_avd, third_fake_avd]); + emu.best_image().then(function (best_avd) { + expect(best_avd).toBe(second_fake_avd); + }).fail(function (err) { + expect(err).toBeUndefined(); + }).fin(done); + }); + it('should return the AVD with API level that is closest to the project target API level, without going over', function (done) { + target_mock.and.returnValue('android-26'); + var fake_avd = { name: 'MyFakeAVD', target: 'Android 7.0 (API level 24)' }; + var second_fake_avd = { name: 'AnotherAVD', target: 'Android 7.1 (API level 25)' }; + var third_fake_avd = { name: 'AVDThree', target: 'Android 99.0 (API level 134)' }; + avds_promise.resolve([fake_avd, second_fake_avd, third_fake_avd]); + emu.best_image().then(function (best_avd) { + expect(best_avd).toBe(second_fake_avd); + }).fail(function (err) { + expect(err).toBeUndefined(); + }).fin(done); + }); + it('should not try to compare API levels when an AVD definition is missing API level info', function (done) { + avds_promise.resolve([ { name: 'Samsung_S8_API_26', + device: 'Samsung S8+ (User)', + path: '/Users/daviesd/.android/avd/Samsung_S8_API_26.avd', + abi: 'google_apis/x86', + target: 'Android 8.0' + }]); + emu.best_image().then(function (best_avd) { + expect(best_avd).toBeDefined(); + }).fail(function (err) { + expect(err).toBeUndefined(); + }).fin(done); + }); + }); }); From cde238de947bad9309c5d19ff3ae2784621fd105 Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 9 Oct 2017 09:17:40 +0200 Subject: [PATCH 4/5] Include missing values for task.name when 'cdvBuildMultipleApks' option is true, 'task.name' can have 'validateSigningArmv7Release' or 'validateSigningX86Release' values too. --- bin/templates/project/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/templates/project/build.gradle b/bin/templates/project/build.gradle index 0d8f167c..6ce8695b 100644 --- a/bin/templates/project/build.gradle +++ b/bin/templates/project/build.gradle @@ -268,7 +268,7 @@ def promptForReleaseKeyPassword() { gradle.taskGraph.whenReady { taskGraph -> taskGraph.getAllTasks().each() { task -> - if (task.name == 'validateReleaseSigning' || task.name == 'validateSigningRelease') { + if (['validateReleaseSigning', 'validateSigningRelease', 'validateSigningArmv7Release', 'validateSigningX86Release'].contains(task.name)) { promptForReleaseKeyPassword() } } From c12f7fef766b0938d3f565adf8eef9d95c4cb90a Mon Sep 17 00:00:00 2001 From: Joe Bowser Date: Fri, 13 Oct 2017 11:08:01 -0700 Subject: [PATCH 5/5] Close #379