Merge pull request #17599 from owncloud/fix-joinpaths-trailingslash
Fix OC.joinPaths with empty arguments
This commit is contained in:
commit
e18d0e26f6
|
@ -385,13 +385,23 @@ var OC={
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
var path = '';
|
var path = '';
|
||||||
var lastArg = arguments[arguments.length - 1];
|
// convert to array
|
||||||
var leadingSlash = arguments[0].charAt(0) === '/';
|
var args = Array.prototype.slice.call(arguments);
|
||||||
|
// discard empty arguments
|
||||||
|
args = _.filter(args, function(arg) {
|
||||||
|
return arg.length > 0;
|
||||||
|
});
|
||||||
|
if (args.length < 1) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
var lastArg = args[args.length - 1];
|
||||||
|
var leadingSlash = args[0].charAt(0) === '/';
|
||||||
var trailingSlash = lastArg.charAt(lastArg.length - 1) === '/';
|
var trailingSlash = lastArg.charAt(lastArg.length - 1) === '/';
|
||||||
var sections = [];
|
var sections = [];
|
||||||
var i;
|
var i;
|
||||||
for (i = 0; i < arguments.length; i++) {
|
for (i = 0; i < args.length; i++) {
|
||||||
sections = sections.concat(arguments[i].split('/'));
|
sections = sections.concat(args[i].split('/'));
|
||||||
}
|
}
|
||||||
var first = !leadingSlash;
|
var first = !leadingSlash;
|
||||||
for (i = 0; i < sections.length; i++) {
|
for (i = 0; i < sections.length; i++) {
|
||||||
|
|
|
@ -147,11 +147,15 @@ describe('Core base tests', function() {
|
||||||
});
|
});
|
||||||
it('keeps leading slashes', function() {
|
it('keeps leading slashes', function() {
|
||||||
expect(OC.joinPaths('/abc')).toEqual('/abc');
|
expect(OC.joinPaths('/abc')).toEqual('/abc');
|
||||||
|
expect(OC.joinPaths('/abc', '')).toEqual('/abc');
|
||||||
|
expect(OC.joinPaths('', '/abc')).toEqual('/abc');
|
||||||
expect(OC.joinPaths('/abc', 'def')).toEqual('/abc/def');
|
expect(OC.joinPaths('/abc', 'def')).toEqual('/abc/def');
|
||||||
expect(OC.joinPaths('/abc', 'def', 'ghi')).toEqual('/abc/def/ghi');
|
expect(OC.joinPaths('/abc', 'def', 'ghi')).toEqual('/abc/def/ghi');
|
||||||
});
|
});
|
||||||
it('keeps trailing slashes', function() {
|
it('keeps trailing slashes', function() {
|
||||||
|
expect(OC.joinPaths('', 'abc/')).toEqual('abc/');
|
||||||
expect(OC.joinPaths('abc/')).toEqual('abc/');
|
expect(OC.joinPaths('abc/')).toEqual('abc/');
|
||||||
|
expect(OC.joinPaths('abc/', '')).toEqual('abc/');
|
||||||
expect(OC.joinPaths('abc', 'def/')).toEqual('abc/def/');
|
expect(OC.joinPaths('abc', 'def/')).toEqual('abc/def/');
|
||||||
expect(OC.joinPaths('abc', 'def', 'ghi/')).toEqual('abc/def/ghi/');
|
expect(OC.joinPaths('abc', 'def', 'ghi/')).toEqual('abc/def/ghi/');
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue