[
https://issues.apache.org/jira/browse/CB-9825?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15396569#comment-15396569
]
ASF GitHub Bot commented on CB-9825:
------------------------------------
Github user stevengill commented on a diff in the pull request:
https://github.com/apache/cordova-lib/pull/467#discussion_r72538340
--- Diff: cordova-lib/spec-cordova/platform.spec.js ---
@@ -356,3 +356,123 @@ describe('plugin add and rm end-to-end --fetch',
function () {
.fin(done);
}, 60000);
});
+
+describe('cocoapod plugin add and rm end-to-end', function () {
+
+ var tmpDir = helpers.tmpDir('cocoapod_plugin_test');
+ var project = path.join(tmpDir, 'hello4');
+
+ var samplePlugin =
path.resolve('./spec-cordova/fixtures/plugins/sample-cordova-plugin-cocoapod-dependent');
+ var overlappingDependencyPlugin =
path.resolve('./spec-cordova/fixtures/plugins/sample-cocoapod-plugin-overlapping-dependency');
+ var AFNetworking = 'AFNetworking',
+ CWStatusBarNotification = 'CWStatusBarNotification';
+ var podfile, podsJSON, workspace;
+
+ beforeEach(function() {
+ shell.exec('pwd');
+ process.chdir(tmpDir);
+ });
+
+ afterEach(function() {
+ process.chdir(path.join(__dirname, '..')); // Needed to rm the
dir on Windows.
+ shell.rm('-rf', tmpDir);
+ });
+
+ it('installs and uninstalls plugin depending on new pod and existing
pod', function(done) {
+
+ cordova.raw.create('hello4')
+ .then(function() {
+ process.chdir(project);
+ //TODO: change this to cordova-ios on npm
+ return cordova.raw.platform('add',
'https://github.com/juliascript/cordova-ios.git#CB-9825');
+ })
+ .then(function() {
+ return cordova.raw.plugin('add', samplePlugin);
+ })
+ .then(function() {
+ podfile = path.resolve('./platforms/ios/Podfile');
+ podsJSON = path.resolve('./platforms/ios/pods.json');
+ workspace =
path.resolve('./platforms/ios/HelloCordova.xcworkspace');
+
+ //podfile should have been created
+ fs.exists(podfile, function(podfileExists){
+ expect(podfileExists);
+ });
+
+ //pods.json should have been created
+ fs.exists(podsJSON, function(podsJSONExists){
+ expect(podsJSONExists);
+ });
+
+ //workspace should have been created
+ fs.exists(workspace, function(workspaceCreated){
+ expect(workspaceCreated);
+ });
+
+ delete require.cache[require.resolve(podfile)];
+ var podfileContent = fs.readFileSync(podfile, {'encoding' :
'utf8'});
+
+ expect(podfileContent.includes(AFNetworking));
+
+ delete require.cache[require.resolve(podsJSON)];
+ var podsJSONContent = require(podsJSON);
+
+ expect(podsJSONContent[AFNetworking] !== null);
+ return cordova.raw.plugin('add', overlappingDependencyPlugin);
+ })
+ .then(function() {
+ delete require.cache[require.resolve(podfile)];
+ var podfileContent = fs.readFileSync(podfile, {'encoding' :
'utf8'});
+ var numberOfTimesAFNetworkingIsInPodfile =
podfileContent.match(/AFNetworking/g || []).length;
+
+ expect(podfileContent.includes(CWStatusBarNotification));
+ expect(numberOfTimesAFNetworkingIsInPodfile).toEqual(1);
+
+ delete require.cache[require.resolve(podsJSON)];
+ var podsJSONContent = require(podsJSON);
+ var countPropertyOfAFNetworkingInPodsJSON =
podsJSONContent[AFNetworking].count;
+ var specPropertyOfAFNetworkingInPodsJSON =
podsJSONContent[AFNetworking].spec;
+
+ expect(countPropertyOfAFNetworkingInPodsJSON).toEqual(2);
+ //spec property should not be changed because of overlapping
dependency
+ expect(specPropertyOfAFNetworkingInPodsJSON).toEqual('~> 3.0');
+
+ return
cordova.raw.plugin('rm','sample-cocoapod-plugin-overlapping-dependency');
+ })
+ .then(function() {
+ //expect only AFNetworking
+ delete require.cache[require.resolve(podfile)];
+ var podfileContent = fs.readFileSync(podfile, {'encoding' :
'utf8'});
+
+
expect(podfileContent.includes(CWStatusBarNotification)).toBe(false);
+ expect(podfileContent.includes(AFNetworking));
+
+ delete require.cache[require.resolve(podsJSON)];
+ var podsJSONContent = require(podsJSON);
+
+ expect(podsJSONContent[AFNetworking]);
+ expect(podsJSONContent[CWStatusBarNotification] === undefined);
+
+ return cordova.raw.plugin('rm',
'sample-cordova-plugin-cocoapod-dependent');
+ })
+ .then(function() {
+ //expect no pods
+ delete require.cache[require.resolve(podfile)];
--- End diff --
not needed
> Support third-party package managers like Cocoapods and Nuget
> -------------------------------------------------------------
>
> Key: CB-9825
> URL: https://issues.apache.org/jira/browse/CB-9825
> Project: Apache Cordova
> Issue Type: New Feature
> Components: CordovaLib
> Reporter: Shazron Abdullah
> Assignee: Julia Geist
> Labels: cordova-ios-5.0.x
>
> ML discussion:
> http://markmail.org/message/5qvg6rwr4nz4q7mc
> cordova-discuss proposal (to be brought back to the list when finalized):
> https://github.com/cordova/cordova-discuss/blob/master/proposals/ThirdPartyPackageManagers.md
> From Steve Gill in the ML:
> At the Cordova F2F, everyone seemed to agree that we should bring CocoaPods
> support to plugins as dependencies for iOS.
> Cordova-android currently uses Gradle as a way to enable external
> dependency resolution for plugins using the framework tag.
> A suggestion about using the engine tag to fetch cocoapods-cli (mac) &
> NuGet (windows) followed by using the framework tag was discussed.
> The minutes[1] show Carlos, Shaz and Raghav as looking into the design.
> Someone should write up a proposal on cordova-discuss[2] and create the
> issues. Post them in this thread.
> This shouldn't take priority over cordova-ios 4 issues.
> [1]
> https://docs.google.com/document/d/1MArKRmnLS052LBbhPxJF57_4ZivghOj8znWo5sTCkbU/edit?usp=sharing
> [2] https://github.com/cordova/cordova-discuss
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]