This is an automated email from the ASF dual-hosted git repository.

raphinesse pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cordova-lib.git


The following commit(s) were added to refs/heads/master by this push:
     new 3079853  Dereference possible symlinks when copying plugin (#705)
3079853 is described below

commit 3079853c0ac2a60c7c38db87fc1996ab3cf1b9b8
Author: Oliver Salzburg <oliver.salzb...@gmail.com>
AuthorDate: Tue Sep 25 13:06:17 2018 +0200

    Dereference possible symlinks when copying plugin (#705)
    
    When `npm install`ing a local plugin, npm will create a symlink to the 
source. When we then attempt to copy that symlink, the result will be invalid 
on Windows OS. Thus, we need to dereference the link/junction and create a 
proper copy.
    
    Fixes #700
    Fixes #704
---
 integration-tests/plugman_fetch.spec.js | 6 +++---
 src/plugman/fetch.js                    | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/integration-tests/plugman_fetch.spec.js 
b/integration-tests/plugman_fetch.spec.js
index e16a337..81ef6aa 100644
--- a/integration-tests/plugman_fetch.spec.js
+++ b/integration-tests/plugman_fetch.spec.js
@@ -85,12 +85,12 @@ describe('fetch', function () {
 
         it('Test 001 : should copy locally-available plugin to plugins 
directory', function () {
             return fetch(test_plugin, temp).then(function () {
-                
expect(fs.copySync).toHaveBeenCalledWith(path.join(test_plugin), 
path.join(temp, test_plugin_id));
+                
expect(fs.copySync).toHaveBeenCalledWith(path.join(test_plugin), 
path.join(temp, test_plugin_id), jasmine.objectContaining({dereference: true}));
             });
         });
         it('Test 002 : should copy locally-available plugin to plugins 
directory when adding a plugin with searchpath argument', function () {
             return fetch(test_plugin_id, temp, { searchpath: 
test_plugin_searchpath }).then(function () {
-                
expect(fs.copySync).toHaveBeenCalledWith(path.join(test_plugin), 
path.join(temp, test_plugin_id));
+                
expect(fs.copySync).toHaveBeenCalledWith(path.join(test_plugin), 
path.join(temp, test_plugin_id), jasmine.objectContaining({dereference: true}));
             });
         });
         it('Test 003 : should create a symlink if used with `link` param', 
function () {
@@ -129,7 +129,7 @@ describe('fetch', function () {
         });
         it('Test 027 : should copy locally-available plugin to plugins 
directory', function () {
             return fetch(test_pkgjson_plugin, temp).then(function () {
-                
expect(fs.copySync).toHaveBeenCalledWith(path.join(test_pkgjson_plugin), 
path.join(temp, 'pkgjson-test-plugin'));
+                
expect(fs.copySync).toHaveBeenCalledWith(path.join(test_pkgjson_plugin), 
path.join(temp, 'pkgjson-test-plugin'), jasmine.objectContaining({dereference: 
true}));
                 expect(fetchCalls).toBe(1);
             });
         });
diff --git a/src/plugman/fetch.js b/src/plugman/fetch.js
index d52bae7..86d3ea3 100644
--- a/src/plugman/fetch.js
+++ b/src/plugman/fetch.js
@@ -289,7 +289,7 @@ function copyPlugin (pinfo, plugins_dir, link) {
         fs.symlinkSync(fixedPath, dest, 'junction');
     } else {
         events.emit('verbose', 'Copying plugin "' + plugin_dir + '" => "' + 
dest + '"');
-        fs.copySync(plugin_dir, dest);
+        fs.copySync(plugin_dir, dest, {dereference: true});
     }
     return dest;
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cordova.apache.org
For additional commands, e-mail: commits-h...@cordova.apache.org

Reply via email to