ResourceLoader: Fix require('../foo.js') from top of module directory
Bug: T373065 Depends-On: I00dc9b1d44b52cddc4c443752a441e614d86c1d8 Depends-On: I6ff80615afa91220cc3502ec1861c926b0756ab0 Change-Id: I8378294582590c4af44d4b7680988412890b179d
This commit is contained in:
parent
f794e7d382
commit
657872dee5
2 changed files with 49 additions and 2 deletions
|
|
@ -587,7 +587,11 @@
|
||||||
var prefix;
|
var prefix;
|
||||||
while ( ( prefix = prefixes.pop() ) !== undefined ) {
|
while ( ( prefix = prefixes.pop() ) !== undefined ) {
|
||||||
if ( prefix === '..' ) {
|
if ( prefix === '..' ) {
|
||||||
baseDirParts.pop();
|
if ( baseDirParts.length ) {
|
||||||
|
baseDirParts.pop();
|
||||||
|
} else {
|
||||||
|
baseDirParts.push( prefix );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -477,7 +477,7 @@
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit.test( '.implement( package files )', ( assert ) => {
|
QUnit.test( '.implement() [packageFiles long paths]', ( assert ) => {
|
||||||
var done = assert.async(),
|
var done = assert.async(),
|
||||||
initJsRan = false,
|
initJsRan = false,
|
||||||
counter = 41;
|
counter = 41;
|
||||||
|
|
@ -519,6 +519,49 @@
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
QUnit.test( '.implement() [packageFiles with parent files]', ( assert ) => {
|
||||||
|
var done = assert.async();
|
||||||
|
var initJsRan = false;
|
||||||
|
var counter = 41;
|
||||||
|
mw.loader.implement(
|
||||||
|
'test.implement.packageWithParentFiles',
|
||||||
|
{
|
||||||
|
main: 'init.js',
|
||||||
|
files: {
|
||||||
|
'data/hello.json': { hello: 'world' },
|
||||||
|
'foo.js': function ( require, module ) {
|
||||||
|
counter++;
|
||||||
|
module.exports = { answer: counter };
|
||||||
|
},
|
||||||
|
'../bar/bar.js': function ( require, module ) {
|
||||||
|
var core = require( './core.js' );
|
||||||
|
module.exports = { data: core.sayHello( 'Alice' ) };
|
||||||
|
},
|
||||||
|
'../bar/core.js': function ( require, module ) {
|
||||||
|
module.exports = { sayHello: function ( name ) {
|
||||||
|
return 'Hello ' + name;
|
||||||
|
} };
|
||||||
|
},
|
||||||
|
'init.js': function ( require ) {
|
||||||
|
initJsRan = true;
|
||||||
|
assert.deepEqual( require( './data/hello.json' ), { hello: 'world' }, 'require() .json' );
|
||||||
|
assert.deepEqual( require( './foo.js' ), { answer: 42 }, 'require() .js in same dir' );
|
||||||
|
assert.deepEqual( require( '../bar/bar.js' ), { data: 'Hello Alice' }, 'require() with ../ ' );
|
||||||
|
assert.deepEqual( require( './foo.js' ), { answer: 42 }, 'require() same script twice' );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
|
||||||
|
return mw.loader.using( 'test.implement.packageWithParentFiles' ).done( () => {
|
||||||
|
assert.true( initJsRan, 'main JS file is executed' );
|
||||||
|
done();
|
||||||
|
} );
|
||||||
|
} );
|
||||||
|
|
||||||
QUnit.test( '.implement( name with @ )', ( assert ) => {
|
QUnit.test( '.implement( name with @ )', ( assert ) => {
|
||||||
var done = assert.async();
|
var done = assert.async();
|
||||||
// Calling implement() without a version number works if the '@' is the first character
|
// Calling implement() without a version number works if the '@' is the first character
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue