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]