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