[ 
https://issues.apache.org/jira/browse/CB-11174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vladimir Kotikov updated CB-11174:
----------------------------------
    Description: 
When project dir is inside of symlinked directory (say {{/var}} on OS X), 
{{getPlatformApi}} method in cordova-lib doesn't resolve real path before 
dealing with cache and uses provided path as-is. This causes returning two 
separate instances of {{PlatformApi}} class when {{getPlatformApi}} is first 
called with symlinked path and then with real one, despite of the fact that 
both paths are pointing to the same project.

In the real life this issue causes the following 'npm test' failures for 
cordova-lib on OS X, caused by mocking methods for one PlatformApi instance and 
using another one:

{noformat}
  1) plugin end-to-end should not run prepare after plugin installation/removal 
if platform return non-falsy value
   Message:
     Expected spy preparePlatforms not to have been called.
   Stacktrace:
     Error: Expected spy preparePlatforms not to have been called.
    at 
/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/spec-cordova/plugin.spec.js:175:50
    at _fulfilled 
(/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:787:54)
    at self.promiseDispatch.done 
(/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:816:30)
    at Promise.promise.promiseDispatch 
(/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:749:13)
    at 
/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:557:44
    at flush 
(/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:108:17)
    at nextTickCallbackWith0Args (node.js:419:9)
    at process._tickCallback (node.js:348:13)
 
  2) plugin end-to-end should not run prepare after plugin installation/removal 
if platform return non-falsy value
   Message:
     Expected spy preparePlatforms not to have been called.
   Stacktrace:
     Error: Expected spy preparePlatforms not to have been called.
    at 
/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/spec-cordova/plugin.spec.js:179:50
    at _fulfilled 
(/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:787:54)
    at self.promiseDispatch.done 
(/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:816:30)
    at Promise.promise.promiseDispatch 
(/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:749:13)
    at 
/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:557:44
    at flush 
(/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:108:17)
    at nextTickCallbackWith0Args (node.js:419:9)
    at process._tickCallback (node.js:348:13)
{noformat}

  was:When project dir is inside of symlinked directory (say {{/var}} on OS X), 
{{getPlatformApi}} method in cordova-lib doesn't resolve real path before 
dealing with cache and uses provided path as-is. This causes returning two 
separate instances of {{PlatformApi}} class when {{getPlatformApi}} is first 
called with symlinked path and then with real one, despite of the fact that 
both paths are pointing to the same project.


> cordova platformApi cache isn't dealing correctly with symlinked project dirs
> -----------------------------------------------------------------------------
>
>                 Key: CB-11174
>                 URL: https://issues.apache.org/jira/browse/CB-11174
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: CordovaLib
>    Affects Versions: 6.1.1
>            Reporter: Vladimir Kotikov
>            Assignee: Vladimir Kotikov
>
> When project dir is inside of symlinked directory (say {{/var}} on OS X), 
> {{getPlatformApi}} method in cordova-lib doesn't resolve real path before 
> dealing with cache and uses provided path as-is. This causes returning two 
> separate instances of {{PlatformApi}} class when {{getPlatformApi}} is first 
> called with symlinked path and then with real one, despite of the fact that 
> both paths are pointing to the same project.
> In the real life this issue causes the following 'npm test' failures for 
> cordova-lib on OS X, caused by mocking methods for one PlatformApi instance 
> and using another one:
> {noformat}
>   1) plugin end-to-end should not run prepare after plugin 
> installation/removal if platform return non-falsy value
>    Message:
>      Expected spy preparePlatforms not to have been called.
>    Stacktrace:
>      Error: Expected spy preparePlatforms not to have been called.
>     at 
> /Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/spec-cordova/plugin.spec.js:175:50
>     at _fulfilled 
> (/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:787:54)
>     at self.promiseDispatch.done 
> (/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:816:30)
>     at Promise.promise.promiseDispatch 
> (/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:749:13)
>     at 
> /Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:557:44
>     at flush 
> (/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:108:17)
>     at nextTickCallbackWith0Args (node.js:419:9)
>     at process._tickCallback (node.js:348:13)
>  
>   2) plugin end-to-end should not run prepare after plugin 
> installation/removal if platform return non-falsy value
>    Message:
>      Expected spy preparePlatforms not to have been called.
>    Stacktrace:
>      Error: Expected spy preparePlatforms not to have been called.
>     at 
> /Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/spec-cordova/plugin.spec.js:179:50
>     at _fulfilled 
> (/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:787:54)
>     at self.promiseDispatch.done 
> (/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:816:30)
>     at Promise.promise.promiseDispatch 
> (/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:749:13)
>     at 
> /Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:557:44
>     at flush 
> (/Users/csantana23/Documents/dev/cordova/cordova-lib/cordova-lib/node_modules/q/q.js:108:17)
>     at nextTickCallbackWith0Args (node.js:419:9)
>     at process._tickCallback (node.js:348:13)
> {noformat}



--
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