2012-03-21 19:41:03 +08:00
// Should not break it... should not include complete directory...
require = require ( "../../../require-polyfill" ) ( require . valueOf ( ) ) ;
2012-03-10 20:11:23 +08:00
window . test ( true , "index.js should be replaced with index.web.js" ) ;
2012-04-07 10:13:26 +08:00
require ( "script!../js/libary1.js" ) ;
2012-03-10 20:11:23 +08:00
window . test ( window . libary1 , "libary1 loaded" ) ;
window . test ( window . libary2 . ok , "libary2 loaded" ) ;
require . ensure ( "subcontent" , function ( require ) {
// Comments work!
exports . ok = true ;
window . test ( require ( "subcontent" ) === "replaced" , "node_modules should be replaced with web_modules" ) ;
window . test ( require ( "subcontent2/file.js" ) === "orginal" , "node_modules should still work when web_modules exists" ) ;
} ) ;
setTimeout ( function ( ) {
window . test ( exports . ok , "asnyc loaded, exports is still avaible" ) ;
} , 3000 ) ;
window . test ( require ( "./circular" ) === 1 , "circular require should work" ) ;
window . test ( require ( "./singluar.js" ) . value === 1 , "sigular module loaded" ) ;
2012-03-12 07:30:54 +08:00
require ( "./sing" + "luar.js" ) . value = 2 ;
2012-03-10 20:11:23 +08:00
window . test ( require ( "./singluar" ) . value === 2 , "exported object is singluar" ) ;
window . test ( require ( "subfilemodule" ) === "subfilemodule" , "Modules as single file should load" ) ;
2012-03-12 04:37:18 +08:00
window . test ( require . context ( "../templates" ) ( "./tmpl" ) === "test template" , "Context should work" ) ;
2012-03-12 07:30:54 +08:00
window . test ( require . context ( "." + "." + "/" + "templ" + "ates" ) ( "./subdir/tmpl.js" ) === "subdir test template" , "Context should work with subdirectories and splitted" ) ;
2012-03-14 23:33:46 +08:00
var template = "tmpl" , templateFull = "./tmpl.js" ;
2012-03-12 04:37:18 +08:00
window . test ( require ( "../templates/" + template ) === "test template" , "Automatical context should work" ) ;
2012-03-14 23:33:46 +08:00
window . test ( require ( "../templates/templateLoader" ) ( templateFull ) === "test template" , "Automatical context without prefix should work" ) ;
window . test ( require ( "../templates/templateLoaderIndirect" ) ( templateFull ) === "test template" , "Automatical context should work with require identifier" ) ;
window . test ( function ( require ) { return require ; } ( 1234 ) === 1234 , "require overwrite in anonymos function" ) ;
function testFunc ( abc , require ) {
return require ;
}
window . test ( testFunc ( 333 , 678 ) === 678 , "require overwrite in named function" ) ;
2012-03-20 02:59:38 +08:00
function testCase ( number ) {
//window.test(require("./folder/file" + (number === 1 ? 1 : "2")) === "file" + number);
window . test ( require ( number === 1 ? "../folder/file1" : number === 2 ? "../folder/file2" : number === 3 ? "../folder/file3" : "./missingModule" ) === "file" + number , "?: operator in require do not create context, test " + number ) ;
}
testCase ( 1 ) ;
testCase ( 2 ) ;
testCase ( 3 ) ;
2012-03-26 20:49:03 +08:00
window . test ( require ( "../folder/typeof" ) === "function" , "typeof require should be function" ) ;
2012-03-14 23:33:46 +08:00
2012-03-20 02:59:38 +08:00
var error = null ;
try {
testCase ( 4 ) ;
} catch ( e ) {
error = e ;
}
window . test ( error instanceof Error , "Missing module should throw Error, indirect" ) ;
error = null ;
try {
require ( "./missingModule2" ) ;
} catch ( e ) {
error = e ;
}
window . test ( error instanceof Error , "Missing module should throw Error, direct" ) ;
2012-03-12 04:37:18 +08:00
require . ensure ( [ ] , function ( require ) {
var contextRequire = require . context ( "." ) ;
window . test ( contextRequire ( "./singluar" ) . value === 2 , "Context works in chunk" ) ;
2012-03-12 07:30:54 +08:00
var singl = "singl" ;
window . test ( require ( "." + "/" + singl + "uar" ) . value === 2 , "Context works in chunk, when splitted" ) ;
2012-03-15 21:38:55 +08:00
window . test ( typeof module . id === "string" , "module.id should be a string" ) ;
window . test ( process . argv && process . argv . length > 1 , "process.argv should be an array" ) ;
process . nextTick ( function ( ) {
sum2 ++ ;
} ) ;
process . on ( "xyz" , function ( ) {
sum2 ++ ;
} ) ;
process . emit ( "xyz" ) ;
2012-03-16 06:01:42 +08:00
window . test ( window === global , "window === global" ) ;
( function ( ) {
var require = 123 ;
window . test ( require === 123 , "overwrite require via variable should be ok" ) ;
} ( ) ) ;
( function ( ) {
var module = 1233 ;
window . test ( module === 1233 , "overwrite module via variable should be ok" ) ;
} ( ) ) ;
2012-03-12 04:37:18 +08:00
} ) ;
2012-03-10 20:11:23 +08:00
require . ensure ( [ ] , function ( require ) {
require ( "./acircular" ) ;
require ( "./duplicate" ) ;
require ( "./duplicate2" ) ;
} ) ;
require . ensure ( [ ] , function ( require ) {
require ( "./acircular2" ) ;
require ( "./duplicate" ) ;
require ( "./duplicate2" ) ;
} ) ;
var sum = 0 ;
require . ensure ( [ ] , function ( require ) {
require ( "./duplicate" ) ;
require ( "./duplicate2" ) ;
sum ++ ;
} ) ;
require . ensure ( [ ] , function ( require ) {
require ( "./duplicate" ) ;
require ( "./duplicate2" ) ;
sum ++ ;
} ) ;
2012-03-15 21:38:55 +08:00
var sum2 = 0 ;
2012-03-10 20:11:23 +08:00
setTimeout ( function ( ) {
window . test ( sum === 2 , "Multiple callbacks on code load finish" ) ;
2012-03-15 21:38:55 +08:00
window . test ( sum2 === 2 , "process.nextTick and process.emit/on should be polyfilled" ) ;
2012-03-10 20:11:23 +08:00
} , 3000 ) ;
2012-03-27 06:00:32 +08:00
// Loader tests
window . test ( require ( "testloader!../resources/abc.txt" ) === "abcwebpack" , "Loader in package.json" ) ;
window . test ( require ( "testloader/lib/loader!../resources/abc.txt" ) === "abcwebpack" , "Loader with .webpack-loader.js extention" ) ;
window . test ( require ( "testloader/lib/loader.web-loader.js!../resources/abc.txt" ) === "abcweb" , "Loader with .web-loader.js extention" ) ;
window . test ( require ( "testloader/lib/loader.loader.js!../resources/abc.txt" ) === "abcloader" , "Loader with .loader.js extention" ) ;
window . test ( require ( "testloader/lib/loader-indirect!../resources/abc.txt" ) === "abcwebpack" , "Loader with .js extention and requires in loader" ) ;
window . test ( require ( "testloader!../loaders/reverseloader!../resources/abc.txt" ) === "cbawebpack" , "Multiple loaders and relative paths" ) ;
window . test ( require ( "raw!../resources/abc.txt" ) === "abc" , "Buildin 'raw' loader" ) ;
window . test ( require ( "jade!../resources/template.jade" ) ( { abc : "abc" } ) === "<p>abc</p>" , "Buildin 'jade' loader" ) ;
window . test ( require ( "../resources/template.jade" ) ( { abc : "abc" } ) === "<p>abc</p>" , "Buildin 'jade' loader, by ext" ) ;
window . test ( require ( "json!../../../package.json" ) . name === "webpack" , "Buildin 'json' loader" ) ;
window . test ( require ( "../../../package.json" ) . name === "webpack" , "Buildin 'json' loader, by ext" ) ;
window . test ( require ( "coffee!../resources/script.coffee" ) === "coffee test" , "Buildin 'coffee' loader" ) ;
window . test ( require ( "../resources/script.coffee" ) === "coffee test" , "Buildin 'coffee' loader, by ext" ) ;
2012-04-07 09:20:45 +08:00
window . test ( require ( "css!../css/stylesheet.css" ) . indexOf ( ".rule-direct" ) !== - 1 , "Buildin 'css' loader, direct content" ) ;
window . test ( require ( "css!../css/stylesheet.css" ) . indexOf ( ".rule-import1" ) !== - 1 , "Buildin 'css' loader, imported rule" ) ;
window . test ( require ( "css!../css/stylesheet.css" ) . indexOf ( ".rule-import2" ) !== - 1 , "Buildin 'css' loader, double imported rule" ) ;
2012-05-04 22:42:38 +08:00
window . test ( require ( "css!val!../css/generateCss" ) . indexOf ( "generated" ) !== - 1 , "Buildin 'val' loader, combined with css" ) ;
window . test ( require ( "css!val!../css/generateCss" ) . indexOf ( ".rule-import2" ) !== - 1 , "Buildin 'val' loader, combined with css, imported css" ) ;
window . test ( require ( "raw!val!../css/generateCss" ) . indexOf ( "generated" ) !== - 1 , "Buildin 'val' loader, combined with raw" ) ;
2012-05-01 21:47:37 +08:00
window . test ( require ( "less!../less/stylesheet.less" ) . indexOf ( ".less-rule-direct" ) !== - 1 , "Buildin 'less' loader, direct content" ) ;
window . test ( require ( "less!../less/stylesheet.less" ) . indexOf ( ".less-rule-import1" ) !== - 1 , "Buildin 'less' loader, imported rule" ) ;
window . test ( require ( "less!../less/stylesheet.less" ) . indexOf ( ".less-rule-import2" ) !== - 1 , "Buildin 'less' loader, double imported rule" ) ;
2012-04-07 09:20:45 +08:00
// Buildin 'style' loader adds css to document
require ( "../css/stylesheet.css" ) ;
2012-05-01 21:47:37 +08:00
require ( "../less/stylesheet.less" ) ;
2012-04-03 22:26:08 +08:00
2012-05-07 23:59:00 +08:00
// file loader
window . test ( require ( "file/png!../img/image.png" ) . indexOf ( "js/" ) === 0 , "Buildin 'file' loader, png" ) ;
setTimeout ( function ( ) {
document . getElementById ( "image" ) . src = require ( "file/png!../img/image.png" ) ;
} , 200 ) ;
2012-04-03 22:26:08 +08:00
// Loader & Context
var abc = "abc" , scr = "script.coffee" ;
window . test ( require ( "../resources/" + scr ) === "coffee test" , "context should process extensions" ) ;
window . test ( require ( "raw!../resources/" + abc + ".txt" ) === "abc" , "raw loader with context" ) ;
2012-07-04 17:50:20 +08:00
// require behavior
var singlarObj = require ( "./singluar2" ) ;
var singlarId = require . resolve ( "./singluar2" ) ;
var singlarIdInConditional = require . resolve ( true ? "./singluar2" : "./singluar" ) ;
window . test ( typeof singlarId == "number" , "require.resolve returns a id" ) ;
window . test ( singlarIdInConditional === singlarId , "require.resolve returns a id if in conditional" ) ;
window . test ( typeof require . cache [ singlarId ] == "object" , "require.cache can be read" ) ;
delete require . cache [ singlarId ] ;
window . test ( require ( "./singluar2" ) !== singlarObj , "require.cache can be deleted" ) ;
2012-04-05 20:59:01 +08:00
2012-05-04 22:42:38 +08:00
// Tests from node.js
require ( "bundle!../nodetests" ) ;