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

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


The following commit(s) were added to refs/heads/master by this push:
     new a5bb1fd  Fixed case where src was a folder and dest was a folder that 
did not exist, added test to prove it. This closes #49
a5bb1fd is described below

commit a5bb1fd5bc9152e6639c9a9d4816e674fbc6628c
Author: Jesse MacFadyen <[email protected]>
AuthorDate: Tue Dec 5 22:43:33 2017 -0800

    Fixed case where src was a folder and dest was a folder that did not exist, 
added test to prove it. This closes #49
---
 bin/template/cordova/browser_handler.js |  7 ++++---
 spec/browser_handler.spec.js            | 30 ++++++++++++++++++++++++++----
 2 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/bin/template/cordova/browser_handler.js 
b/bin/template/cordova/browser_handler.js
index da1be3f..ae699e4 100644
--- a/bin/template/cordova/browser_handler.js
+++ b/bin/template/cordova/browser_handler.js
@@ -116,13 +116,14 @@ module.exports = {
         install: function (asset, plugin_dir, wwwDest) {
             var src = path.join(plugin_dir, asset.src);
             var dest = path.join(wwwDest, asset.target);
+            var destDir = path.parse(dest).dir;
+            if(destDir != '' && !fs.existsSync(destDir)) {
+                shell.mkdir('-p', destDir);
+            }
 
             if (fs.statSync(src).isDirectory()) {
                 shell.cp('-Rf', src + '/*', dest);
             } else {
-                if (path.parse(asset.target).dir !== '') {
-                    shell.mkdir('-p', path.parse(dest).dir);
-                }
                 shell.cp('-f', src, dest);
             }
         },
diff --git a/spec/browser_handler.spec.js b/spec/browser_handler.spec.js
index 1654b75..8fe71d7 100644
--- a/spec/browser_handler.spec.js
+++ b/spec/browser_handler.spec.js
@@ -24,8 +24,16 @@ var path = require('path');
 
 describe('Asset install tests', function () {
     var fsstatMock;
-    var asset = { itemType: 'asset', src: path.join('someSrc', 
'ServiceWorker.js'), target: 'ServiceWorker.js' };
-    var assetWithPath = { itemType: 'asset', src: path.join('someSrc', 
'reformat.js'), target: path.join('js', 'deepdown', 'reformat.js') };
+    var asset = { itemType: 'asset',
+                  src: path.join('someSrc', 'ServiceWorker.js'),
+                  target: 'ServiceWorker.js' };
+    var assetWithPath = { itemType: 'asset',
+                          src: path.join('someSrc', 'reformat.js'),
+                          target: path.join('js', 'deepdown', 'reformat.js') };
+    var assetWithPath2 = { itemType: 'asset',
+                           src: path.join('someSrc', 'reformat.js'),
+                           target: path.join('js', 'deepdown', 'reformat2.js') 
};
+
     var plugin_dir = 'pluginDir';
     var wwwDest = 'dest';
 
@@ -43,6 +51,7 @@ describe('Asset install tests', function () {
     it('if src is not a directory and asset has no path, should be called with 
cp, -f', function () {
         var cp = spyOn(shell, 'cp').and.returnValue('-f');
         var mkdir = spyOn(shell, 'mkdir');
+        var exSync = spyOn(fs, 'existsSync').and.returnValue(true);
         fsstatMock = {
             isDirectory: function () {
                 return false;
@@ -51,9 +60,12 @@ describe('Asset install tests', function () {
         spyOn(fs, 'statSync').and.returnValue(fsstatMock);
         browser_handler.asset.install(asset, plugin_dir, wwwDest);
         expect(mkdir).not.toHaveBeenCalled();
-        expect(cp).toHaveBeenCalledWith('-f', path.join('pluginDir', 
'someSrc', 'ServiceWorker.js'), path.join('dest', 'ServiceWorker.js'));
+        expect(cp).toHaveBeenCalledWith('-f', path.join('pluginDir', 
asset.src), path.join('dest', asset.target));
     });
     it('if src is not a directory and asset has a path, should be called with 
cp, -f', function () {
+        /*
+            Test that a dest directory gets created if it does not exist
+        */
         var cp = spyOn(shell, 'cp').and.returnValue('-f');
         var mkdir = spyOn(shell, 'mkdir');
         fsstatMock = {
@@ -62,8 +74,18 @@ describe('Asset install tests', function () {
             }
         };
         spyOn(fs, 'statSync').and.returnValue(fsstatMock);
+
         browser_handler.asset.install(assetWithPath, plugin_dir, wwwDest);
         expect(mkdir).toHaveBeenCalledWith('-p', path.join('dest', 'js', 
'deepdown'));
-        expect(cp).toHaveBeenCalledWith('-f', path.join('pluginDir', 
'someSrc', 'reformat.js'), path.join('dest', 'js', 'deepdown', 'reformat.js'));
+        expect(cp).toHaveBeenCalledWith('-f', path.join('pluginDir', 
assetWithPath.src),
+            path.join('dest', assetWithPath.target));
+        /*
+            Now test that a second call to the same dest folder skips mkdir 
because the first asset call should have created it.
+        */
+        var exSync = spyOn(fs, 'existsSync').and.returnValue(true);
+        browser_handler.asset.install(assetWithPath2, plugin_dir, wwwDest);
+        expect(mkdir.calls.count()).toBe(1); // not called again
+
+
     });
 });

-- 
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to