You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by er...@apache.org on 2019/05/27 07:48:31 UTC
[cordova-electron] branch master updated: Append package top-level
key options (#51)
This is an automated email from the ASF dual-hosted git repository.
erisu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cordova-electron.git
The following commit(s) were added to refs/heads/master by this push:
new 229647c Append package top-level key options (#51)
229647c is described below
commit 229647c8d1714ded2a8628040646ae36c4cb062f
Author: Gedas Gardauskas <ge...@gmail.com>
AuthorDate: Mon May 27 16:48:27 2019 +0900
Append package top-level key options (#51)
Co-Authored-By: エリス <er...@users.noreply.github.com>
---
bin/templates/cordova/lib/build.js | 7 +
.../spec/unit/templates/cordova/lib/build.spec.js | 146 +++++++++++++++++++++
2 files changed, 153 insertions(+)
diff --git a/bin/templates/cordova/lib/build.js b/bin/templates/cordova/lib/build.js
index 66283ce..a7baabf 100644
--- a/bin/templates/cordova/lib/build.js
+++ b/bin/templates/cordova/lib/build.js
@@ -111,6 +111,13 @@ class ElectronBuilder {
if (target === 'mas') {
userBuildSettings.config['mas'] = {};
}
+
+ if (typeof target === 'object' && Object.keys(target).length !== 0) {
+ const targetKey = Object.keys(target)[0];
+ userBuildSettings.config[targetKey] = target[targetKey];
+ target = targetKey;
+ }
+
/**
* The target of arch values are not validated as electron-builder will handle this.
* If the arch value is missing, 64-bit will be defaulted.
diff --git a/tests/spec/unit/templates/cordova/lib/build.spec.js b/tests/spec/unit/templates/cordova/lib/build.spec.js
index 399212e..8d25bec 100644
--- a/tests/spec/unit/templates/cordova/lib/build.spec.js
+++ b/tests/spec/unit/templates/cordova/lib/build.spec.js
@@ -699,6 +699,152 @@ describe('Testing build.js:', () => {
expect(electronBuilder.userBuildSettings.config.win).toEqual(expectedWin);
});
+ it('should append package top-level key options if the object is empty.', () => {
+ // mock platformConfig, buildConfig and buildOptions Objects
+ const platformConfig = {
+ mac: { package: ['pkg', { dmg: { } }], arch: 'arch', signing: 'signing' }
+ };
+ const buildConfig = {
+ electron: platformConfig,
+ author: 'Apache',
+ name: 'Guy',
+ displayName: 'HelloWorld',
+ APP_BUILD_DIR: api.locations.build,
+ APP_BUILD_RES_DIR: api.locations.buildRes,
+ APP_WWW_DIR: api.locations.www
+ };
+
+ const buildOptions = { debug: false, buildConfig: buildConfig, argv: [] };
+
+ // create spies
+ existsSyncSpy = jasmine.createSpy('existsSync').and.returnValue(true);
+ requireSpy = jasmine.createSpy('require').and.returnValue(buildConfig);
+ build.__set__('fs', { existsSync: existsSyncSpy });
+ build.__set__({ require: requireSpy });
+
+ const __validateUserPlatformBuildSettingsSpy = jasmine.createSpy('__validateUserPlatformBuildSettings').and.returnValue(true);
+ build.__set__({ __validateUserPlatformBuildSettings: __validateUserPlatformBuildSettingsSpy });
+
+ electronBuilder = new ElectronBuilder(buildOptions, api).configureUserBuildSettings();
+
+ expect(existsSyncSpy).toHaveBeenCalled();
+ expect(requireSpy).toHaveBeenCalled();
+
+ const expectedMac = {
+ target: [
+ { target: 'pkg', arch: 'arch' },
+ { target: 'dmg', arch: 'arch' }
+ ],
+ type: '${BUILD_TYPE}',
+ icon: '${APP_INSTALLER_ICON}'
+ };
+
+ expect(electronBuilder.userBuildSettings.config.mac).toEqual(expectedMac);
+ expect(electronBuilder.userBuildSettings.config.dmg).toEqual({ });
+ expect(electronBuilder.userBuildSettings.config.linux).toEqual(undefined);
+ expect(electronBuilder.userBuildSettings.config.windows).toEqual(undefined);
+ });
+
+ it('should append package top-level key options.', () => {
+ // mock platformConfig, buildConfig and buildOptions Objects
+ const platformConfig = {
+ mac: { package: ['pkg', { dmg: { format: 'UDZO' } }], arch: 'arch', signing: 'signing' }
+ };
+ const buildConfig = {
+ electron: platformConfig,
+ author: 'Apache',
+ name: 'Guy',
+ displayName: 'HelloWorld',
+ APP_BUILD_DIR: api.locations.build,
+ APP_BUILD_RES_DIR: api.locations.buildRes,
+ APP_WWW_DIR: api.locations.www
+ };
+
+ const buildOptions = { debug: false, buildConfig: buildConfig, argv: [] };
+
+ // create spies
+ existsSyncSpy = jasmine.createSpy('existsSync').and.returnValue(true);
+ requireSpy = jasmine.createSpy('require').and.returnValue(buildConfig);
+ build.__set__('fs', { existsSync: existsSyncSpy });
+ build.__set__({ require: requireSpy });
+
+ const __validateUserPlatformBuildSettingsSpy = jasmine.createSpy('__validateUserPlatformBuildSettings').and.returnValue(true);
+ build.__set__({ __validateUserPlatformBuildSettings: __validateUserPlatformBuildSettingsSpy });
+
+ electronBuilder = new ElectronBuilder(buildOptions, api).configureUserBuildSettings();
+
+ expect(existsSyncSpy).toHaveBeenCalled();
+ expect(requireSpy).toHaveBeenCalled();
+
+ const expectedMac = {
+ target: [
+ { target: 'pkg', arch: 'arch' },
+ { target: 'dmg', arch: 'arch' }
+ ],
+ type: '${BUILD_TYPE}',
+ icon: '${APP_INSTALLER_ICON}'
+ };
+
+ const expectedDmgOptions = {
+ format: 'UDZO'
+ };
+
+ expect(electronBuilder.userBuildSettings.config.mac).toEqual(expectedMac);
+ expect(electronBuilder.userBuildSettings.config.dmg).toEqual(expectedDmgOptions);
+ expect(electronBuilder.userBuildSettings.config.linux).toEqual(undefined);
+ expect(electronBuilder.userBuildSettings.config.windows).toEqual(undefined);
+ });
+
+ it('should append package top-level key nested options.', () => {
+ // mock platformConfig, buildConfig and buildOptions Objects
+ const platformConfig = {
+ mac: { package: ['pkg', { dmg: { format: { UDZO: '' } } }], arch: 'arch', signing: 'signing' }
+ };
+ const buildConfig = {
+ electron: platformConfig,
+ author: 'Apache',
+ name: 'Guy',
+ displayName: 'HelloWorld',
+ APP_BUILD_DIR: api.locations.build,
+ APP_BUILD_RES_DIR: api.locations.buildRes,
+ APP_WWW_DIR: api.locations.www
+ };
+
+ const buildOptions = { debug: false, buildConfig: buildConfig, argv: [] };
+
+ // create spies
+ existsSyncSpy = jasmine.createSpy('existsSync').and.returnValue(true);
+ requireSpy = jasmine.createSpy('require').and.returnValue(buildConfig);
+ build.__set__('fs', { existsSync: existsSyncSpy });
+ build.__set__({ require: requireSpy });
+
+ const __validateUserPlatformBuildSettingsSpy = jasmine.createSpy('__validateUserPlatformBuildSettings').and.returnValue(true);
+ build.__set__({ __validateUserPlatformBuildSettings: __validateUserPlatformBuildSettingsSpy });
+
+ electronBuilder = new ElectronBuilder(buildOptions, api).configureUserBuildSettings();
+
+ expect(existsSyncSpy).toHaveBeenCalled();
+ expect(requireSpy).toHaveBeenCalled();
+
+ const expectedMac = {
+ target: [
+ { target: 'pkg', arch: 'arch' },
+ { target: 'dmg', arch: 'arch' }
+ ],
+ type: '${BUILD_TYPE}',
+ icon: '${APP_INSTALLER_ICON}'
+ };
+
+ const expectedDmgOptions = {
+ format: { UDZO: '' }
+ };
+
+ expect(electronBuilder.userBuildSettings.config.mac).toEqual(expectedMac);
+ expect(electronBuilder.userBuildSettings.config.dmg).toEqual(expectedDmgOptions);
+ expect(electronBuilder.userBuildSettings.config.linux).toEqual(undefined);
+ expect(electronBuilder.userBuildSettings.config.windows).toEqual(undefined);
+ });
+
it('should fetchPlatformDefaults true.', () => {
// mock buildOptions Objecet and platformFile path
const buildOptions = { debug: true, buildConfig: 'build.xml', argv: [] };
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org