Return-Path: X-Original-To: apmail-cordova-commits-archive@www.apache.org Delivered-To: apmail-cordova-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 85FED189F6 for ; Thu, 18 Feb 2016 12:50:39 +0000 (UTC) Received: (qmail 58599 invoked by uid 500); 18 Feb 2016 12:50:39 -0000 Delivered-To: apmail-cordova-commits-archive@cordova.apache.org Received: (qmail 58573 invoked by uid 500); 18 Feb 2016 12:50:39 -0000 Mailing-List: contact commits-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list commits@cordova.apache.org Received: (qmail 58564 invoked by uid 99); 18 Feb 2016 12:50:39 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 Feb 2016 12:50:39 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 3AF8FDFF67; Thu, 18 Feb 2016 12:50:39 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: an-selm@apache.org To: commits@cordova.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: cordova-windows git commit: CB-10303 Adds tests to cover arguments parsing regression Date: Thu, 18 Feb 2016 12:50:39 +0000 (UTC) Repository: cordova-windows Updated Branches: refs/heads/master 45e5bd131 -> 51ac7ab16 CB-10303 Adds tests to cover arguments parsing regression Also updates some tests to: * Use jamine spies instead of rewire in most cases * Do not stub console log to simplify debug This closes #145 Project: http://git-wip-us.apache.org/repos/asf/cordova-windows/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-windows/commit/51ac7ab1 Tree: http://git-wip-us.apache.org/repos/asf/cordova-windows/tree/51ac7ab1 Diff: http://git-wip-us.apache.org/repos/asf/cordova-windows/diff/51ac7ab1 Branch: refs/heads/master Commit: 51ac7ab16cbb68fe52fa13c4049aa7546ce5a770 Parents: 45e5bd1 Author: Vladimir Kotikov Authored: Thu Jan 28 14:36:51 2016 +0300 Committer: Vladimir Kotikov Committed: Thu Feb 18 15:42:47 2016 +0300 ---------------------------------------------------------------------- spec/unit/build.spec.js | 89 ++++++++++++++-------------- spec/unit/fixtures/fakeBuildConfig.json | 9 +++ 2 files changed, 52 insertions(+), 46 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/51ac7ab1/spec/unit/build.spec.js ---------------------------------------------------------------------- diff --git a/spec/unit/build.spec.js b/spec/unit/build.spec.js index 3105906..96b1fac 100644 --- a/spec/unit/build.spec.js +++ b/spec/unit/build.spec.js @@ -25,6 +25,9 @@ var Q = require('q'), prepare = require(platformRoot + '/cordova/lib/prepare.js'), build = rewire(platformRoot + '/cordova/lib/build.js'); +var utils = require(platformRoot + '/cordova/lib/utils'); +var AppxManifest = require(platformRoot + '/cordova/lib/AppxManifest'); + function createFindAvailableVersionMock(version, path, buildSpy) { build.__set__('MSBuildTools.findAvailableVersion', function() { return Q.resolve({ @@ -68,28 +71,11 @@ function createConfigParserMock(winVersion, phoneVersion) { } describe('run method', function() { - var consoleLogOriginal, - isCordovaProjectOriginal, - findAvailableVersionOriginal, - applyPlatformConfigOriginal, + var findAvailableVersionOriginal, configParserOriginal; - var isCordovaProjectFalse = function () { - return false; - }; - - var isCordovaProjectTrue = function () { - return true; - }; - beforeEach(function () { - // console output suppression - consoleLogOriginal = build.__get__('console.log'); - build.__set__('console.log', function () {} ); - - isCordovaProjectOriginal = build.__get__('utils.isCordovaProject'); findAvailableVersionOriginal = build.__get__('MSBuildTools.findAvailableVersion'); - applyPlatformConfigOriginal = build.__get__('prepare.applyPlatformConfig'); configParserOriginal = build.__get__('ConfigParser'); var originalBuildMethod = build.run; @@ -98,14 +84,21 @@ describe('run method', function() { return originalBuildMethod.apply({locations: {www: 'some/path'}}, arguments); }); + spyOn(utils, 'isCordovaProject').andReturn(true); + spyOn(prepare, 'applyPlatformConfig'); spyOn(prepare, 'addBOMSignature'); + spyOn(prepare, 'updateBuildConfig'); + + spyOn(AppxManifest, 'get').andReturn({ + getIdentity: function () { + return { setPublisher: function () {} }; + }, + write: function () {} + }); }); afterEach(function() { - build.__set__('console.log', consoleLogOriginal); - build.__set__('utils.isCordovaProject', isCordovaProjectOriginal); build.__set__('MSBuildTools.findAvailableVersion', findAvailableVersionOriginal); - build.__set__('prepare.applyPlatformConfig', applyPlatformConfigOriginal); build.__set__('ConfigParser', configParserOriginal); }); @@ -113,7 +106,8 @@ describe('run method', function() { var rejectSpy = jasmine.createSpy(), buildSpy = jasmine.createSpy(); - build.__set__('utils.isCordovaProject', isCordovaProjectFalse); + // utils.isCordovaProject is a spy, so we can call andReturn directly on it + utils.isCordovaProject.andReturn(false); createFindAllAvailableVersionsMock([{version: '14.0', buildProject: buildSpy, path: testPath }]); build.run([ 'node', buildPath, '--release', '--debug' ]) @@ -129,7 +123,6 @@ describe('run method', function() { var rejectSpy = jasmine.createSpy(), buildSpy = jasmine.createSpy(); - build.__set__('utils.isCordovaProject', isCordovaProjectTrue); createFindAvailableVersionMock('14.0', testPath, buildSpy); build.run([ 'node', buildPath, '--release', '--debug' ]) @@ -145,7 +138,6 @@ describe('run method', function() { var rejectSpy = jasmine.createSpy(), buildSpy = jasmine.createSpy(); - build.__set__('utils.isCordovaProject', isCordovaProjectTrue); createFindAvailableVersionMock('14.0', testPath, buildSpy); build.run([ 'node', buildPath, '--phone', '--win' ]) @@ -157,14 +149,37 @@ describe('run method', function() { }); }); + it('should respect build configuration from \'buildConfig\' option', function (done) { + + createFindAllAvailableVersionsMock([{version: '14.0', buildProject: jasmine.createSpy(), path: testPath }]); + var buildConfigPath = path.resolve(__dirname, 'fixtures/fakeBuildConfig.json'); + + build.run({ buildConfig: buildConfigPath }) + .finally(function() { + expect(prepare.updateBuildConfig).toHaveBeenCalled(); + + var buildOpts = prepare.updateBuildConfig.calls[0].args[0]; + var buildConfig = require(buildConfigPath).windows.debug; + + expect(buildOpts.packageCertificateKeyFile).toBeDefined(); + expect(buildOpts.packageCertificateKeyFile) + .toEqual(path.resolve(path.dirname(buildConfigPath), buildConfig.packageCertificateKeyFile)); + + ['packageThumbprint', 'publisherId'].forEach(function (key) { + expect(buildOpts[key]).toBeDefined(); + expect(buildOpts[key]).toEqual(buildConfig[key]); + }); + + done(); + }); + }); + it('spec.4 should call buildProject of MSBuildTools with buildType = "release" if called with --release argument', function(done) { var buildSpy = jasmine.createSpy().andCallFake(function (solutionFile, buildType, buildArch) { expect(buildType).toBe('release'); }); - build.__set__('utils.isCordovaProject', isCordovaProjectTrue); createFindAllAvailableVersionsMock([{version: '14.0', buildProject: buildSpy, path: testPath }]); - build.__set__('prepare.applyPlatformConfig', function() {} ); build.run({ release: true }) .finally(function() { @@ -178,9 +193,7 @@ describe('run method', function() { expect(buildType).toBe('debug'); }); - build.__set__('utils.isCordovaProject', isCordovaProjectTrue); createFindAllAvailableVersionsMock([{version: '14.0', buildProject: buildSpy, path: testPath }]); - build.__set__('prepare.applyPlatformConfig', function() {} ); build.run([ 'node', buildPath ]) .finally(function() { @@ -194,11 +207,9 @@ describe('run method', function() { expect(buildArch).toBe('arm'); }); - build.__set__('utils.isCordovaProject', isCordovaProjectTrue); createFindAllAvailableVersionsMock([{version: '14.0', buildProject: buildSpy, path: testPath }]); - build.__set__('prepare.applyPlatformConfig', function() {} ); - build.run({argv: ['--archs=arm'] }) + build.run({ archs: 'arm' }) .finally(function() { expect(buildSpy).toHaveBeenCalled(); done(); @@ -211,7 +222,6 @@ describe('run method', function() { x64Build = jasmine.createSpy(), anyCpuBuild = jasmine.createSpy(); - build.__set__('utils.isCordovaProject', isCordovaProjectTrue); createFindAllAvailableVersionsMock([ { version: '14.0', @@ -237,9 +247,8 @@ describe('run method', function() { } } }]); - build.__set__('prepare.applyPlatformConfig', function() {} ); - build.run({ argv: ['--archs=arm x86 x64 anycpu', '--phone'] }) + build.run({ archs: 'arm x86 x64 anycpu', argv: ['--phone'] }) .finally(function() { expect(armBuild).toHaveBeenCalled(); expect(x86Build).toHaveBeenCalled(); @@ -253,9 +262,7 @@ describe('run method', function() { var buildSpy = jasmine.createSpy(), errorSpy = jasmine.createSpy(); - build.__set__('utils.isCordovaProject', isCordovaProjectTrue); createFindAllAvailableVersionsMock([{version: '4.0', buildProject: buildSpy, path: testPath }]); - build.__set__('prepare.applyPlatformConfig', function() {} ); createConfigParserMock('8.0'); build.run({argv: ['--win']}) @@ -273,9 +280,7 @@ describe('run method', function() { it('spec.9 should call buildProject of MSBuildTools if built for windows 8.1', function(done) { var buildSpy = jasmine.createSpy(); - build.__set__('utils.isCordovaProject', isCordovaProjectTrue); createFindAllAvailableVersionsMock([{version: '14.0', buildProject: buildSpy, path: testPath }]); - build.__set__('prepare.applyPlatformConfig', function() {} ); createConfigParserMock('8.1'); build.run({argv: ['--win']}) @@ -289,9 +294,7 @@ describe('run method', function() { var buildSpy = jasmine.createSpy(), errorSpy = jasmine.createSpy(); - build.__set__('utils.isCordovaProject', isCordovaProjectTrue); createFindAvailableVersionMock('14.0', testPath, buildSpy); - build.__set__('prepare.applyPlatformConfig', function() {} ); createConfigParserMock('unsupported value here'); build.run({argv: ['--win']}) @@ -309,9 +312,7 @@ describe('run method', function() { it('spec.11 should call buildProject of MSBuildTools if built for windows phone 8.1', function(done) { var buildSpy = jasmine.createSpy(); - build.__set__('utils.isCordovaProject', isCordovaProjectTrue); createFindAllAvailableVersionsMock([{version: '14.0', buildProject: buildSpy, path: testPath }]); - build.__set__('prepare.applyPlatformConfig', function() {} ); createConfigParserMock(null, '8.1'); build.run({argv: ['--phone']}) @@ -325,9 +326,7 @@ describe('run method', function() { var buildSpy = jasmine.createSpy(), errorSpy = jasmine.createSpy(); - build.__set__('utils.isCordovaProject', isCordovaProjectTrue); createFindAvailableVersionMock('14.0', testPath, buildSpy); - build.__set__('prepare.applyPlatformConfig', function() {} ); createConfigParserMock(null, 'unsupported value here'); build.run({argv: ['--phone']}) @@ -348,9 +347,7 @@ describe('run method', function() { expect(solutionFile.toLowerCase().indexOf('cordovaapp.windows10.jsproj') >=0).toBe(true); }); - build.__set__('utils.isCordovaProject', isCordovaProjectTrue); createFindAllAvailableVersionsMock([{version: '14.0', buildProject: buildSpy, path: testPath }]); - build.__set__('prepare.applyPlatformConfig', function() {} ); // provision config to target Windows 8.1 createConfigParserMock('8.1', '8.1'); // explicitly specify Windows 10 as target http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/51ac7ab1/spec/unit/fixtures/fakeBuildConfig.json ---------------------------------------------------------------------- diff --git a/spec/unit/fixtures/fakeBuildConfig.json b/spec/unit/fixtures/fakeBuildConfig.json new file mode 100644 index 0000000..a89df47 --- /dev/null +++ b/spec/unit/fixtures/fakeBuildConfig.json @@ -0,0 +1,9 @@ +{ + "windows": { + "debug": { + "packageCertificateKeyFile": "some/path", + "packageThumbprint": "thumbprint", + "publisherId": "CN=Publisher, O=Id" + } + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org For additional commands, e-mail: commits-help@cordova.apache.org