@@ -17,54 +17,65 @@ describe("TestCases", function() {
1717 } )
1818 } ;
1919 } ) ;
20- categories . forEach ( function ( category ) {
21- describe ( category . name , function ( ) {
22- category . tests . forEach ( function ( testName ) {
23- var suite = describe ( testName , function ( ) { } ) ;
24- it ( "should compile " + testName , function ( done ) {
25- var testDirectory = path . join ( casesPath , category . name , testName ) ;
26- var outputDirectory = path . join ( __dirname , "js" , category . name , testName ) ;
27- webpack ( {
28- context : casesPath ,
29- entry : "./" + category . name + "/" + testName + "/index" ,
30- target : "async-node" ,
31- devtool : "eval" ,
32- output : {
33- pathinfo : true ,
34- path : outputDirectory ,
35- filename : "bundle.js"
36- } ,
37- module : {
38- loaders : [
39- { test : / \. j s o n $ / , loader : "json" } ,
40- { test : / \. c o f f e e $ / , loader : "coffee" } ,
41- { test : / \. j a d e $ / , loader : "jade" }
42- ]
43- }
44- } , function ( err , stats ) {
45- if ( err ) return done ( err ) ;
46- var jsonStats = stats . toJson ( ) ;
47- if ( checkArrayExpectation ( testDirectory , jsonStats , "error" , "Error" , done ) ) return ;
48- if ( checkArrayExpectation ( testDirectory , jsonStats , "warning" , "Warning" , done ) ) return ;
49- var exportedTest = 0 ;
50- function _it ( title , fn ) {
51- var test = new Test ( title , fn ) ;
52- suite . addTest ( test ) ;
53- exportedTest ++ ;
54- return test ;
55- }
56- function _require ( module ) {
57- if ( module . substr ( 0 , 2 ) === "./" ) {
58- var p = path . join ( outputDirectory , module ) ;
59- var fn = vm . runInThisContext ( "(function(require, module, exports, __dirname, it) {" + fs . readFileSync ( p , "utf-8" ) + "\n})" , p ) ;
60- var module = { exports : { } } ;
61- fn . call ( module . exports , _require , module , module . exports , outputDirectory , _it ) ;
62- return module . exports ;
63- } else return require ( module ) ;
64- }
65- _require ( "./bundle.js" ) ;
66- if ( exportedTest === 0 ) return done ( new Error ( "No tests exported by test case" ) ) ;
67- done ( ) ;
20+ [
21+ { name : "normal" } ,
22+ { name : "minimized" , optimize : { minimize : true } } ,
23+ { name : "deduped" , optimize : { dedupe : true } } ,
24+ { name : "minimized-deduped" , optimize : { minimize : true , dedupe : true } } ,
25+ { name : "optimized" , optimize : { minimize : true , dedupe : true , occurenceOrder : true } }
26+ ] . forEach ( function ( config ) {
27+ describe ( config . name , function ( ) {
28+ categories . forEach ( function ( category ) {
29+ describe ( category . name , function ( ) {
30+ category . tests . forEach ( function ( testName ) {
31+ var suite = describe ( testName , function ( ) { } ) ;
32+ it ( "should compile " + testName , function ( done ) {
33+ var testDirectory = path . join ( casesPath , category . name , testName ) ;
34+ var outputDirectory = path . join ( __dirname , "js" , config . name , category . name , testName ) ;
35+ webpack ( {
36+ context : casesPath ,
37+ entry : "./" + category . name + "/" + testName + "/index" ,
38+ target : "async-node" ,
39+ devtool : "eval" ,
40+ output : {
41+ pathinfo : true ,
42+ path : outputDirectory ,
43+ filename : "bundle.js"
44+ } ,
45+ optimize : config . optimize ,
46+ module : {
47+ loaders : [
48+ { test : / \. j s o n $ / , loader : "json" } ,
49+ { test : / \. c o f f e e $ / , loader : "coffee" } ,
50+ { test : / \. j a d e $ / , loader : "jade" }
51+ ]
52+ }
53+ } , function ( err , stats ) {
54+ if ( err ) return done ( err ) ;
55+ var jsonStats = stats . toJson ( ) ;
56+ if ( checkArrayExpectation ( testDirectory , jsonStats , "error" , "Error" , done ) ) return ;
57+ if ( checkArrayExpectation ( testDirectory , jsonStats , "warning" , "Warning" , done ) ) return ;
58+ var exportedTest = 0 ;
59+ function _it ( title , fn ) {
60+ var test = new Test ( title , fn ) ;
61+ suite . addTest ( test ) ;
62+ exportedTest ++ ;
63+ return test ;
64+ }
65+ function _require ( module ) {
66+ if ( module . substr ( 0 , 2 ) === "./" ) {
67+ var p = path . join ( outputDirectory , module ) ;
68+ var fn = vm . runInThisContext ( "(function(require, module, exports, __dirname, it) {" + fs . readFileSync ( p , "utf-8" ) + "\n})" , p ) ;
69+ var module = { exports : { } } ;
70+ fn . call ( module . exports , _require , module , module . exports , outputDirectory , _it ) ;
71+ return module . exports ;
72+ } else return require ( module ) ;
73+ }
74+ _require ( "./bundle.js" ) ;
75+ if ( exportedTest === 0 ) return done ( new Error ( "No tests exported by test case" ) ) ;
76+ done ( ) ;
77+ } ) ;
78+ } ) ;
6879 } ) ;
6980 } ) ;
7081 } ) ;
0 commit comments