This is an automated email from the ASF dual-hosted git repository. janpio pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cordova-windows.git
The following commit(s) were added to refs/heads/master by this push: new 8c07366 CB-13878 MSBUILDDIR env variable (#262) 8c07366 is described below commit 8c07366fb8d784563a2fefe7d9bb326cb1cb721d Author: Jan Piotrowski <piotrowski+git...@gmail.com> AuthorDate: Thu Feb 15 16:34:04 2018 +0100 CB-13878 MSBUILDDIR env variable (#262) * MSBUILDDIR for MSBuild selection * Change order of builds on AppVeyor * Use MSBUILDDIR on AppVeyor * avoid crosspolution in tests that rely on ENV vars (uh, ugly) * console.log msbuild command and params that are used to build --- appveyor.yml | 18 ++++++++++++++---- spec/unit/build.spec.js | 34 +++++++++++++++++++++++++++++++++- template/cordova/lib/MSBuildTools.js | 22 +++++++++++++++++++++- 3 files changed, 68 insertions(+), 6 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 382664e..19e7f28 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -19,13 +19,23 @@ # appveyor file # http://www.appveyor.com/docs/appveyor-yml -image: -- Visual Studio 2015 -- Visual Studio 2017 environment: matrix: - - nodejs_version: "4" - nodejs_version: "6" + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + + - nodejs_version: "6" + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + MSBUILDDIR: "C:\\Program Files (x86)\\MSBuild\\14.0\\bin\\" + + - nodejs_version: "6" + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + + - nodejs_version: "4" + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + + - nodejs_version: "4" + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 install: - ps: Install-Product node $env:nodejs_version diff --git a/spec/unit/build.spec.js b/spec/unit/build.spec.js index 81b2ada..f9f55fa 100644 --- a/spec/unit/build.spec.js +++ b/spec/unit/build.spec.js @@ -371,11 +371,14 @@ describe('run method', function () { }); }); - it('spec.14 should use user-specified msbuild if VSINSTALLDIR variable is set', function (done) { + it('spec.14a should use user-specified msbuild if VSINSTALLDIR variable is set', function (done) { var customMSBuildPath = '/some/path'; var msBuildBinPath = path.join(customMSBuildPath, 'MSBuild/15.0/Bin'); var customMSBuildVersion = '15.0'; process.env.VSINSTALLDIR = customMSBuildPath; + // avoid crosspollution with MSBUILDDIR + var backupMSBUILDDIR = process.env.MSBUILDDIR; + delete process.env.MSBUILDDIR; spyOn(MSBuildTools, 'getMSBuildToolsAt') .and.returnValue(Q({ @@ -392,6 +395,35 @@ describe('run method', function () { expect(fail).not.toHaveBeenCalled(); expect(MSBuildTools.getMSBuildToolsAt).toHaveBeenCalledWith(msBuildBinPath); delete process.env.VSINSTALLDIR; + process.env.MSBUILDDIR = backupMSBUILDDIR; + done(); + }); + }); + + it('spec.14b should use user-specified msbuild if MSBUILDDIR variable is set', function (done) { + var msBuildBinPath = path.join('/some/path', 'MSBuild/15.0/Bin'); + var customMSBuildVersion = '15.0'; + process.env.MSBUILDDIR = msBuildBinPath; + // avoid crosspollution with VSINSTALLDIR + var backupVSINSTALLDIR = process.env.VSINSTALLDIR; + delete process.env.VSINSTALLDIR; + + spyOn(MSBuildTools, 'getMSBuildToolsAt') + .and.returnValue(Q({ + path: msBuildBinPath, + version: customMSBuildVersion, + buildProject: jasmine.createSpy('buildProject').and.returnValue(Q()) + })); + + var fail = jasmine.createSpy('fail'); + + build.run({}) + .fail(fail) + .finally(function () { + expect(fail).not.toHaveBeenCalled(); + expect(MSBuildTools.getMSBuildToolsAt).toHaveBeenCalledWith(msBuildBinPath); + delete process.env.MSBUILDDIR; + process.env.VSINSTALLDIR = backupVSINSTALLDIR; done(); }); }); diff --git a/template/cordova/lib/MSBuildTools.js b/template/cordova/lib/MSBuildTools.js index fa05e73..c65e169 100644 --- a/template/cordova/lib/MSBuildTools.js +++ b/template/cordova/lib/MSBuildTools.js @@ -68,6 +68,7 @@ MSBuildTools.prototype.buildProject = function (projFile, buildType, buildarch, } return promise.then(function () { + console.log('buildProject spawn:', path.join(that.path, 'msbuild'), [projFile].concat(args), { stdio: 'inherit' }); return spawn(path.join(that.path, 'msbuild'), [projFile].concat(args), { stdio: 'inherit' }); }); }; @@ -75,9 +76,28 @@ MSBuildTools.prototype.buildProject = function (projFile, buildType, buildarch, // check_reqs.js -> checkMSBuild() module.exports.findAllAvailableVersions = function () { console.log('findAllAvailableVersions'); + + var msBuildPath = ''; + + // Use MSBUILDDIR environment variable if defined to find MSBuild. + // MSBUILDDIR = C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin + // MSBUILDDIR = C:\Program Files (x86)\MSBuild\14.0\bin\ + if (process.env.MSBUILDDIR) { + console.log('ENV var MSBUILDDIR is set', process.env.MSBUILDDIR); + msBuildPath = process.env.MSBUILDDIR; + return module.exports.getMSBuildToolsAt(msBuildPath) + .then(function (msBuildTools) { + return [msBuildTools]; + }) + // If MSBUILDDIR is not specified or doesn't contain a valid MSBuild + // - fall back to default discovery mechanism. + .catch(findAllAvailableVersionsFallBack); + } + // CB-11548 use VSINSTALLDIR environment if defined to find MSBuild. if (process.env.VSINSTALLDIR) { - var msBuildPath = path.join(process.env.VSINSTALLDIR, 'MSBuild/15.0/Bin'); + console.log('ENV var VSINSTALLDIR is set', process.env.VSINSTALLDIR); + msBuildPath = path.join(process.env.VSINSTALLDIR, 'MSBuild/15.0/Bin'); return module.exports.getMSBuildToolsAt(msBuildPath) .then(function (msBuildTools) { return [msBuildTools]; -- To stop receiving notification emails like this one, please contact jan...@apache.org. --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cordova.apache.org For additional commands, e-mail: commits-h...@cordova.apache.org