[ https://issues.apache.org/jira/browse/CB-9825?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15396624#comment-15396624 ]
ASF GitHub Bot commented on CB-9825: ------------------------------------ Github user juliascript commented on a diff in the pull request: https://github.com/apache/cordova-lib/pull/467#discussion_r72541191 --- 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)]; --- End diff -- The Podfile and pods.json should change after the removal and adding of a plugin. I believe the deletion of cache is necessary here. > 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: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org