cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-9122) Implement integration tests for platform and plugin save/restore feature
Date Thu, 11 Jun 2015 22:01:01 GMT

    [ https://issues.apache.org/jira/browse/CB-9122?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14582578#comment-14582578
] 

ASF GitHub Bot commented on CB-9122:
------------------------------------

Github user omefire commented on a diff in the pull request:

    https://github.com/apache/cordova-lib/pull/246#discussion_r32273230
  
    --- Diff: cordova-lib/spec-cordova/save.spec.js ---
    @@ -0,0 +1,435 @@
    +/**
    +    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.
    +*/
    +
    +describe('(save flag)', function () {
    +    var rewire      = require('rewire'),
    +        cordova     = require('../src/cordova/cordova'),
    +        helpers     = require('./helpers'),
    +        path        = require('path'),
    +        Q           = require('q'),
    +        fs          = require('fs'),
    +        shell       = require('shelljs'),
    +        util        = require('../src/cordova/util'),
    +        platform    = rewire('../src/cordova/platform.js');
    +
    +    var appName             = 'testApp',
    +        tempPath            = path.join(__dirname, 'temp'),
    +        appPath             = path.join(tempPath, appName),
    +        platformName        = helpers.testPlatform,
    +        platformVersionOld  = '4.0.0',
    +        platformVersionNew  = '4.0.1',
    +        platformLocalPath   = path.join(tempPath, 'cordova-' + platformName),
    +        platformGitUrl      = 'https://github.com/apache/cordova-' + platformName,
    +        platformGitRef      = '4.0.x',
    +        platformTgzUrl      = 'https://git-wip-us.apache.org/repos/asf?p=cordova-' +
platformName + '.git;a=snapshot;h=' + platformVersionNew + ';sf=tgz',
    +        pluginName          = 'cordova-plugin-console',
    +        pluginVersion       = '1.0.0',
    +        pluginGitUrl        = 'https://github.com/apache/cordova-plugin-console.git',
    +        pluginOldName       = 'org.apache.cordova.console',
    +        pluginOldVersion    = '0.2.11',
    +        variablePluginName  = 'com.phonegap.plugins.facebookconnect',
    +        variablePluginUrl   = 'https://github.com/Wizcorp/phonegap-facebook-plugin',
    +        localPluginName     = 'org.apache.cordova.fakeplugin1',
    +        localPluginPath     = path.join(__dirname, 'fixtures', 'plugins', 'fake1'),
    +        timeout             = 60 * 1000;
    +
    +    //mocks
    +    var is_cordova, cd_project_root, prepare,
    +        revert_copy_cordova_js, revert_copy_cordovajs_src, revert_install_plugins_for_new_platform;
    +
    +    beforeEach(function (done) {
    +        is_cordova = spyOn(util, 'isCordova').andReturn(appPath);
    +        cd_project_root = spyOn(util, 'cdProjectRoot').andReturn(appPath);
    +        prepare = spyOn(cordova.raw, 'prepare').andReturn(Q());
    +
    +        fs.exists(appPath, function (exists) {
    +            if (exists) {
    +                cordova.raw.platform('rm', platformName).then(done, done);
    +            } else {
    +                done();
    +            }
    +        });
    +    });
    +
    +    describe('(preparing fixtures)', function () {
    +        it('preparing temp dir', function () {
    +            shell.rm('-rf', tempPath);
    +            shell.mkdir(tempPath);
    +        });
    +
    +        it('creating mocks', function () {
    +            revert_copy_cordova_js = platform.__set__('copy_cordova_js', function ()
{});
    +            revert_copy_cordovajs_src = platform.__set__('copy_cordovajs_src', function
() {});
    +            revert_install_plugins_for_new_platform = platform.__set__('installPluginsForNewPlatform',
function () { return Q(); });
    +        });
    +
    +        it('creating test app', function (done) {
    +            cordova.raw.create(appPath, undefined, undefined, {}).then(function () {
    +                //removing unnecessary whitelist plugin from config
    +                helpers.removePlugin(appPath, 'cordova-plugin-whitelist');
    +                done();
    +            }, function (err) {
    +                expect(true).toBe(false);
    +                console.log(err);
    +                done();
    +            });
    +        });
    +
    +        it('cloning platform', function (done) {
    +            shell.exec('git clone ' + platformGitUrl + ' --depth 1 ' + platformLocalPath,
{ silent: true }, function (err) {
    +                expect(err).toBe(0);
    +                done();
    +            });
    +        }, timeout);
    +    });
    +
    +    describe('(platform add)', function () {
    +        it('spec.1 cusom tgz support: cordova platform add android@url_to_tgz', function
(done) {
    +            helpers.removeEngine(appPath);
    +            platform('add', platformName + '@' + platformTgzUrl, { 'save': true })
    +            .then(function () {
    +                expect(helpers.getEngineSpec(appPath)).toBe(platformTgzUrl);
    +                done();
    +            }).catch(function (err) {
    +                console.log(err);
    +                expect(false).toBe(true);
    +                done();
    +            });
    +        }, timeout);
    +
    +        it('spec.2 cordova platform add android --save [empty config.xml]', function
(done) {
    +            helpers.removeEngine(appPath);
    +            platform('add', platformName, { 'save': true })
    +            .then(function () {
    +                expect(helpers.getEngineSpec(appPath)).not.toBe(null);
    +                done();
    +            }).catch(function (err) {
    +                console.log(err);
    +                expect(false).toBe(true);
    +                done();
    +            });
    +        }, timeout);
    +
    +        it('spec.3 cordova platform add android --save [config.xml already contains android@4.0.0]',
function (done) {
    +            helpers.setEngineSpec(appPath, platformVersionOld);
    +            platform('add', platformName, { 'save': true })
    +            .then(function () {
    +                expect(helpers.getEngineSpec(appPath)).toBe('^' + platformVersionOld);
    +                done();
    +            }).catch(function (err) {
    +                console.log(err);
    +                expect(false).toBe(true);
    +                done();
    +            });
    +        }, timeout);
    +
    +        it('spec.4 cordova platform add android --save [config.xml contains android@file://C:/path/to/android]',
function (done) {
    +            helpers.setEngineSpec(appPath, platformLocalPath);
    +            platform('add', platformName, { 'save': true })
    +            .then(function () {
    +                expect(helpers.getEngineSpec(appPath)).toBe(platformLocalPath);
    +                done();
    +            }).catch(function (err) {
    +                console.log(err);
    +                expect(false).toBe(true);
    +                done();
    +            });
    +        }, timeout);
    +
    +        it('spec.5 cordova platform add android@3.969.696 --save [invalid version =>
should fail and should not update config.xml]', function (done) {
    +            helpers.removeEngine(appPath);
    +            platform('add', helpers.testPlatform + '@3.969.696', { 'save': true })
    +            .then(function () {
    +                expect(false).toBe(true);
    +                done();
    +            }).catch(function (err) {
    +                expect(err.message.indexOf('version not found') >= 0).toBe(true);
    +                expect(helpers.getEngineSpec(appPath)).toBe(null);
    +                done();
    +            });
    +        });
    +
    +        it('spec.6 cordova platform add C://path/to/android/platform --save', function
(done) {
    +            helpers.removeEngine(appPath);
    +            platform('add', platformLocalPath, { 'save': true })
    +            .then(function () {
    +                expect(helpers.getEngineSpec(appPath)).toBe(platformLocalPath);
    +                done();
    +            }).catch(function (err) {
    +                console.log(err);
    +                expect(false).toBe(true);
    +                done();
    +            });
    +        }, timeout);
    +
    +        it('spec.7 should support cordova platform add https://github.com/apache/cordova-android.git#4.0.x',
function (done) {
    +            var platformUrl = platformGitUrl + '#' + platformGitRef;
    +            helpers.removeEngine(appPath);
    +            platform('add', platformUrl, { 'save': true })
    +            .then(function () {
    +                expect(helpers.getEngineSpec(appPath)).toBe(platformUrl);
    +                done();
    +            }).catch(function (err) {
    +                console.log(err);
    +                expect(false).toBe(true);
    +                done();
    +            });
    +        }, timeout);
    +    });
    +
    +    describe('(platform remove)', function () {
    +        it('spec.8 cordova platform remove android --save [config.xml is empty]', function
(done) {
    +            helpers.removeEngine(appPath);
    +            platform('add', platformLocalPath)
    +            .then(function () {
    +                return cordova.raw.platform('rm', platformName, { 'save': true });
    +            }).then(function () {
    +                expect(helpers.getEngineSpec(appPath)).toBe(null);
    +                done();
    +            }).catch(function (err) {
    +                console.log(err);
    +                expect(false).toBe(true);
    +                done();
    +            });
    +        }, timeout);
    +
    +        it('spec.9 cordova platform remove android --save [config.xml contains android@C:/path/to/android/platform]',
function (done) {
    +            helpers.setEngineSpec(appPath, platformLocalPath);
    +            platform('add', platformLocalPath)
    +            .then(function () {
    +                return cordova.raw.platform('rm', platformName, { 'save': true });
    +            }).then(function () {
    +                expect(helpers.getEngineSpec(appPath)).toBe(null);
    +                done();
    +            }).catch(function (err) {
    +                console.log(err);
    +                expect(false).toBe(true);
    +                done();
    +            });
    +        }, timeout);
    +    });
    +
    +    describe('(platform update)', function () {
    +        it('spec. 10 cordova platform update android@4.0.0  --save [config.xml already
contains android@4.0.1]', function (done) {
    +            helpers.setEngineSpec(appPath, platformVersionNew);
    +            platform('add', platformName + '@' + platformVersionNew)
    +            .then(function () {
    +                return cordova.raw.platform('update', platformName + '@' + platformVersionOld,
{ 'save': true });
    +            }).then(function () {
    +                expect(helpers.getEngineSpec(appPath)).toBe('^' + platformVersionOld);
    +                done();
    +            }).catch(function (err) {
    +                console.log(err);
    +                expect(false).toBe(true);
    +                done();
    +            });
    +        }, timeout);
    +
    +        it('spec.11 support for git-urls: cordova platform update https://github.com/apache/cordova-android.git
–save', function (done) {
    +            helpers.setEngineSpec(appPath, platformVersionNew);
    +            platform('add', platformName + '@' + platformVersionNew)
    +            .then(function () {
    +                return cordova.raw.platform('update', platformGitUrl, { 'save': true
});
    +            }).then(function () {
    +                expect(helpers.getEngineSpec(appPath)).not.toBe(null);
    +                expect(helpers.getEngineSpec(appPath)).not.toBe(platformVersionNew);
    +                done();
    +            }).catch(function (err) {
    +                console.log(err);
    +                expect(false).toBe(true);
    +                done();
    +            });
    +        }, timeout);
    +    });
    +
    +    describe('(plugin add)', function () {
    +        beforeEach(function (done) {
    +            cordova.raw.plugin('rm', [ pluginName, pluginOldName, variablePluginName,
localPluginName ])
    +            .finally(function () {
    +                helpers.removePlugin(appPath, pluginName);
    +                helpers.removePlugin(appPath, pluginOldName);
    +                helpers.removePlugin(appPath, variablePluginName);
    +                helpers.removePlugin(appPath, localPluginName);
    +                done();
    +            });
    +        });
    +
    +        it('spec.12 cordova plugin add cordova-plugin-console –-save [config.xml empty]',
function (done) {
    +            platform('add', platformLocalPath)
    +            .then(function () {
    +                return cordova.raw.plugin('add', pluginName, { 'save': true });
    +            }).then(function () {
    +                expect(helpers.getPluginSpec(appPath, pluginName)).not.toBe(null);
    +                done();
    +            }).catch(function (err) {
    +                expect(true).toBe(false);
    +                console.log(err.message);
    +                done();
    +            });
    +        }, timeout);
    +
    +        it('spec.13 cordova plugin add cordova-plugin-console –-save [config.xml already
contains cordova-plugin-console@0.2.11]', function (done) {
    +            platform('add', platformLocalPath)
    +            .then(function () {
    +                helpers.setPluginSpec(appPath, pluginName, pluginOldVersion);
    +                return cordova.raw.plugin('add', pluginName, { 'save': true });
    +            }).then(function () {
    +                expect(helpers.getPluginSpec(appPath, pluginOldName)).toBe('^' + pluginOldVersion);
    +                done();
    +            }).catch(function (err) {
    +                expect(true).toBe(false);
    +                console.log(err.message);
    +                done();
    +            });
    +        }, timeout);
    +
    +        it('spec.14 cordova plugin add facebook-plugins –-variables … -–save [testing
variables support]', function (done) {
    +            platform('add', platformLocalPath)
    +            .then(function () {
    +                return cordova.raw.plugin('add', variablePluginUrl, {
    +                    'save': true,
    +                    'cli_variables': {
    +                        'APP_ID':'123456789',
    +                        'APP_NAME':'myApplication'
    +                    }
    +                });
    +            }).then(function () {
    +                expect(helpers.getPluginVariable(appPath, variablePluginName, 'APP_ID')).toBe('123456789');
    +                expect(helpers.getPluginVariable(appPath, variablePluginName, 'APP_NAME')).toBe('myApplication');
    +                done();
    +            }).catch(function (err) {
    +                expect(true).toBe(false);
    +                console.log(err.message);
    +                done();
    +            });
    +        }, timeout);
    +
    +        it('spec.15 cordova plugin add git_url --save', function (done) {
    +            platform('add', platformLocalPath)
    +            .then(function () {
    +                return cordova.raw.plugin('add', pluginGitUrl, { 'save': true });
    +            }).then(function () {
    +                expect(helpers.getPluginSpec(appPath, pluginName)).toBe(pluginGitUrl);
    +                done();
    +            }).catch(function (err) {
    +                expect(true).toBe(false);
    +                console.log(err.message);
    +                done();
    +            });
    +        }, timeout);
    +
    +        it('spec.16 cordova plugin add local_folder --save', function (done) {
    +            platform('add', platformLocalPath)
    +            .then(function () {
    +                return cordova.raw.plugin('add', localPluginPath, { 'save': true });
    +            }).then(function () {
    +                expect(helpers.getPluginSpec(appPath, localPluginName)).toBe(localPluginPath);
    +                done();
    +            }).catch(function (err) {
    +                expect(true).toBe(false);
    +                console.log(err.message);
    +                done();
    +            });
    +        }, timeout);
    +    });
    +
    +    describe('(plugin remove)', function () {
    +        it('spec.17 cordova plugin remove plugin-id --save [config.xml is empty]', function
(done) {
    +            platform('add', platformLocalPath)
    +            .then(function () {
    +                return cordova.raw.plugin('add', pluginName);
    +            }).then(function () {
    +                return cordova.raw.plugin('rm', pluginName, { 'save': true });
    +            }).then(function () {
    +                expect(helpers.getPluginSpec(appPath, pluginName)).toBe(null);
    +                done();
    +            }).catch(function (err) {
    +                expect(true).toBe(false);
    +                console.log(err.message);
    +                done();
    +            });
    +        }, timeout);
    +
    +        it('spec.18 cordova plugin remove plugin-id --save [config.xml contains git-url
of plugin]', function (done) {
    +            platform('add', platformLocalPath)
    +            .then(function () {
    +                return cordova.raw.plugin('add', pluginName);
    +            }).then(function () {
    +                helpers.setPluginSpec(appPath, pluginName, pluginGitUrl);
    +                return cordova.raw.plugin('rm', pluginName, { 'save': true });
    +            }).then(function () {
    +                expect(helpers.getPluginSpec(appPath, pluginName)).toBe(null);
    +                done();
    +            }).catch(function (err) {
    +                expect(true).toBe(false);
    +                console.log(err.message);
    +                done();
    +            });
    +        }, timeout);
    +    });
    +
    +    describe('plugin update', function () {
    +        //plugin update functionality is not yet implemented in cordova-cli
    +        xit('spec.19 cordova plugin update cordova-plugin-console --save', function (done)
{
    --- End diff --
    
    forgot to change this back to 'it' ?


> Implement integration tests for platform and plugin save/restore feature
> ------------------------------------------------------------------------
>
>                 Key: CB-9122
>                 URL: https://issues.apache.org/jira/browse/CB-9122
>             Project: Apache Cordova
>          Issue Type: Task
>          Components: CordovaLib
>            Reporter: Alexander Sorokin
>
> List of integration tests and scenarios to be written :
>  
>    CORDOVA PLATFORM/PLUGIN ADD TESTS :
> -          Ensure that support for custom .tgz files is still enabled (VS depends on
this)
> -          cordova platform add android --save [empty config.xml]
> -          cordova platform add android --save [config.xml already contains android@3.6.0]
> -          cordova platform add android --save [config.xml contains android@file://C:/path/to/android]
> -          cordova platform add android@3.18.9 --save [invalid version => in this
case, install should fail and should not update config.xml] 
> -          cordova platform add C://path/to/android/platform --save
> -          support for custom branch checkout : cordova platform add https://github.com/apache/cordova-android.git#2.6.x
> -          cordova plugin add cordova-plugin-console –save [config.xml empty]
> -          cordova plugin add cordova-plugin-console –save [config.xml already contains
cordova-plugin-console@0.2.11]
> -          cordova plugin add facebook-plugins –variables … –save [testing variables
support]
> -          cordova plugin add git_url
> -          cordova plugin add local_folder
>  
>    CORDOVA PLATFORM/PLUGIN REMOVE TESTS :
> -          cordova platform remove android --save [config.xml is empty]
> -          cordova platform remove android --save [config.xml contains android@C:/path/to/android/platform]
> -          cordova plugin remove plugin-id --save [config.xml is empty]
> -          cordova plugin remove plugin-id --save [config.xml contains git-url of plugin]
>  
>    CORDOVA PLATFORM/PLUGIN UPDATE TESTS :
> -          cordova platform update android@3.7.0  --save [config.xml already contains
android@3.8.0]
> -          support for git-urls : cordova platform update https://github.com/apache/cordova-android.git
–save
> -          cordova plugin update cordova-plugin-console --save
> -          cordova plugin update cordova-plugin-console@0.2.11 --save
>  
>   MASS-SAVE TESTS :
> -          cordova platform save [no platforms installed => no update to config.xml]
> -          cordova platform save [with some platforms installed]
> -          cordova plugin save [no plugins installed => no update to config.xml]
> -          cordova plugin save [with some plugins installed: one with version, one with
local folder and another one via git cloning]
>  
>    PLATFORM/PLUGIN RESTORATION :
> -          cordova prepare => should restore all platforms and plugins
> -          cordova prepare android



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message