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

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_r32273251
  
    --- 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 [email protected]]', 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 [email protected] --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 [email protected]  --save 
[config.xml already contains [email protected]]', 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 [email protected]]', 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) {
    +            platform('add', platformLocalPath)
    +            .then(function () {
    +                return cordova.raw.plugin('add', pluginName + '@' + 
pluginVersion);
    +            }).then(function () {
    +                return cordova.raw.plugin('update', pluginName, {'save': 
true});
    +            }).then(function () {
    +                expect(helpers.getPluginSpec(appPath, 
pluginName)).not.toBe(null);
    +                expect(helpers.getPluginSpec(appPath, 
pluginName)).not.toBe(pluginVersion);
    +                done();
    +            }).catch(function (err) {
    +                expect(true).toBe(false);
    +                console.log(err.message);
    +                done();
    +            });
    +        }, timeout);
    +
    +        //plugin update functionality is not yet implemented in cordova-cli
    +        xit('spec.20 cordova plugin update [email protected] 
--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 
> [email protected]]
> -          cordova platform add android --save [config.xml contains 
> android@file://C:/path/to/android]
> -          cordova platform add [email protected] --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 [email protected]]
> -          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 [email protected]  --save [config.xml already 
> contains [email protected]]
> -          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 [email protected] --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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to