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;
|
||||
while ( ( prefix = prefixes.pop() ) !== undefined ) {
|
||||
if ( prefix === '..' ) {
|
||||
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(),
|
||||
initJsRan = false,
|
||||
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 ) => {
|
||||
var done = assert.async();
|
||||
// Calling implement() without a version number works if the '@' is the first character
|
||||
|
|
|
|||
Loading…
Reference in a new issue