diff --git a/spec/e2e/helpers/projectActions.js b/spec/e2e/helpers/projectActions.js deleted file mode 100644 index 9ac8936d..00000000 --- a/spec/e2e/helpers/projectActions.js +++ /dev/null @@ -1,150 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -var PluginInfoProvider = require('cordova-common').PluginInfoProvider; -var shell = require('shelljs'); -var cp = require('child_process'); -var path = require('path'); -var util = require('util'); - -var cordova_bin = path.join(__dirname, '../../../bin'); - -/** - * Creates a project using platform create script with given parameters - * @param {string} projectname - name of the project - * @param {string} projectid - id of the project - * @param {string} platformpath - path to the platform - * @param {function} callback - function which is called (without arguments) when the project is created or (with error object) when error occurs - */ -module.exports.createProject = function (projectname, projectid, platformpath, callback) { - // platformpath is optional - if (!callback && typeof platformpath === 'function') { - callback = platformpath; - platformpath = null; - } - var projectDirName = getDirName(projectid); - var createScriptPath = platformpath ? path.join(platformpath, 'bin/create') : path.join(cordova_bin, 'create'); - - // remove existing folder - module.exports.removeProject(projectid); - - // create the project - var command = util.format('"%s" %s %s "%s"', createScriptPath, projectDirName, projectid, projectname); - cp.exec(command, function (error, stdout, stderr) { - if (error) { - console.log(stdout); - console.error(stderr); - } - callback(error); - }); -}; - -/** - * Updates a project using platform update script with given parameters - * @param {string} projectid - id of the project - * @param {string} platformpath - path to the platform - * @param {function} callback - function which is called (without arguments) when the project is updated or (with error object) when error occurs - */ -module.exports.updateProject = function (projectid, platformpath, callback) { - // platformpath is optional - if (!callback && typeof platformpath === 'function') { - callback = platformpath; - platformpath = null; - } - var projectDirName = getDirName(projectid); - var updateScriptPath = platformpath ? path.join(platformpath, 'bin/update') : path.join(cordova_bin, 'update'); - var command = util.format('"%s" %s', updateScriptPath, projectDirName); - cp.exec(command, function (error, stdout, stderr) { - if (error) { - console.log(stdout); - console.error(stderr); - } - callback(error); - }); - -}; - -/** - * Builds a project using platform build script with given parameters - * @param {string} projectid - id of the project - * @param {function} callback - function which is called (without arguments) when the project is built or (with error object) when error occurs - */ -module.exports.buildProject = function (projectid, callback) { - var projectDirName = getDirName(projectid); - var command = path.join(projectDirName, 'cordova/build'); - - cp.exec(command, function (error, stdout, stderr) { - if (error) { - console.log(stdout); - console.error(stderr); - } - callback(error); - }); -}; - -/** - * Removes a project - * @param {string} projectid - id of the project - */ -module.exports.removeProject = function (projectid) { - var projectDirName = getDirName(projectid); - shell.rm('-rf', projectDirName); -}; - -/** - * Add a plugin to a project using platform api - * @param {string} projectid - id of the project - * @param {string} plugindir - path to a plugin - * @param {function} callback - function which is called (without arguments) when the plugin is added or (with error object) when error occurs - */ -module.exports.addPlugin = function (projectid, plugindir, callback) { - var projectDirName = getDirName(projectid); - var pip = new PluginInfoProvider(); - var pluginInfo = pip.get(plugindir); - var Api = require(path.join(__dirname, '../../..', projectDirName, 'cordova', 'Api.js')); - var api = new Api('android', projectDirName); - - api.addPlugin(pluginInfo).then(function () { - callback(null); - }, function (error) { - console.error(error); - callback(error); - }); -}; - -/** - * Gets a version number from project using platform script - * @param {string} projectid - id of the project - * @param {function} callback - function which is called with platform version as an argument - */ -module.exports.getPlatformVersion = function (projectid, callback) { - var command = path.join(getDirName(projectid), 'cordova/version'); - - cp.exec(command, function (error, stdout, stderr) { - if (error) { - console.log(stdout); - console.error(stderr); - } - callback(stdout.trim()); - }); -}; - -function getDirName (projectid) { - return 'test-' + projectid; -} diff --git a/spec/e2e/plugin.spec.js b/spec/e2e/plugin.spec.js index 9772ed56..509a0721 100644 --- a/spec/e2e/plugin.spec.js +++ b/spec/e2e/plugin.spec.js @@ -17,28 +17,37 @@ under the License. */ -var path = require('path'); -var actions = require('./helpers/projectActions.js'); +const os = require('os'); +const fs = require('fs'); +const path = require('path'); +const shell = require('shelljs'); +const { PluginInfoProvider, superspawn } = require('cordova-common'); -var PLUGIN_ADD_TIMEOUT = 90000; +const createBin = path.join(__dirname, '../../bin/create'); +const fakePluginPath = path.join(__dirname, 'fixtures/cordova-plugin-fake'); describe('plugin add', function () { + let tmpDir; + beforeEach(() => { + const tmpDirTemplate = path.join(os.tmpdir(), `cordova-android-test-`); + tmpDir = fs.realpathSync(fs.mkdtempSync(tmpDirTemplate)); + }); + afterEach(() => { + shell.rm('-rf', tmpDir); + }); - it('Test#001 : create project and add a plugin with framework', function (done) { - var projectname = 'testpluginframework'; - var projectid = 'com.test.plugin.framework'; - var fakePluginPath = path.join(__dirname, 'fixtures/cordova-plugin-fake'); + it('Test#001 : create project and add a plugin with framework', function () { + const projectname = 'testpluginframework'; + const projectid = 'com.test.plugin.framework'; - actions.createProject(projectname, projectid, function () { - actions.addPlugin(projectid, fakePluginPath, function (error) { - actions.removeProject(projectid); - if (error) { - console.error(error.stack); - } - expect(error).toBe(null); - done(); + const projectPath = path.join(tmpDir, projectname); + const pluginInfo = new PluginInfoProvider().get(fakePluginPath); + + return Promise.resolve() + .then(() => superspawn.spawn(createBin, [projectPath, projectid, projectname])) + .then(() => { + const Api = require(path.join(projectPath, 'cordova/Api.js')); + return new Api('android', projectPath).addPlugin(pluginInfo); }); - }); - }, PLUGIN_ADD_TIMEOUT); - + }, 90000); });