@@ -7,15 +7,17 @@ var mkdirp = require('mkdirp');
7
7
var browserify = require ( 'browserify' ) ;
8
8
var factor = require ( '../' ) ;
9
9
var concat = require ( 'concat-stream' ) ;
10
+ var through = require ( 'through2' ) ;
10
11
11
12
var files = [
12
13
__dirname + '/deps/x.js' ,
13
14
__dirname + '/deps/y.js'
14
15
] ;
15
- var tmpdir = tmp ( ) + '/factor-bundle-' + Math . random ( ) ;
16
- mkdirp . sync ( tmpdir ) ;
17
16
18
17
test ( 'file outputs' , function ( t ) {
18
+ var tmpdir = tmp ( ) + '/factor-bundle-' + Math . random ( ) ;
19
+ mkdirp . sync ( tmpdir ) ;
20
+
19
21
t . plan ( 2 ) ;
20
22
var b = browserify ( files ) ;
21
23
b . plugin ( factor , {
@@ -43,6 +45,8 @@ test('file outputs', function (t) {
43
45
} ) ;
44
46
45
47
test ( 'stream outputs' , function ( t ) {
48
+ var tmpdir = tmp ( ) + '/factor-bundle-' + Math . random ( ) ;
49
+ mkdirp . sync ( tmpdir ) ;
46
50
t . plan ( 2 ) ;
47
51
var sources = { } , pending = 3 ;
48
52
function write ( key ) {
@@ -68,3 +72,76 @@ test('stream outputs', function (t) {
68
72
} } } ) ;
69
73
}
70
74
} ) ;
75
+
76
+
77
+ test ( 'bundle twice' , function ( t ) {
78
+ var tmpdir = tmp ( ) + '/factor-bundle-' + Math . random ( ) ;
79
+ mkdirp . sync ( tmpdir ) ;
80
+
81
+ t . plan ( 4 ) ;
82
+ var b = browserify ( files ) ;
83
+ var outputs = [
84
+ path . join ( tmpdir , 'x.js' ) ,
85
+ path . join ( tmpdir , 'y.js' )
86
+ ] ;
87
+ b . on ( 'reset' , function ( ) {
88
+ b . pipeline . get ( 'deps' ) . push ( through . obj ( function ( data , enc , next ) {
89
+ if ( data . file . indexOf ( 'x.js' ) !== - 1 ) {
90
+ data . source = data . source . replace ( 'z(5)' , 'z(6)' ) ;
91
+ }
92
+ this . push ( data ) ;
93
+ next ( ) ;
94
+ } ) ) ;
95
+ } ) ;
96
+ b . plugin ( factor , {
97
+ outputs : outputs
98
+ } ) ;
99
+ validate ( 55500 , 333 , function ( ) {
100
+ validate ( 66600 , 333 ) ;
101
+ } ) ;
102
+ function validate ( xVal , yVal , cb ) {
103
+ var w = fs . createWriteStream ( path . join ( tmpdir , 'common.js' ) ) ;
104
+ b . bundle ( ) . pipe ( w ) ;
105
+ w . on ( 'finish' , function ( ) {
106
+ var common = fs . readFileSync ( tmpdir + '/common.js' , 'utf8' ) ;
107
+ var x = fs . readFileSync ( tmpdir + '/x.js' , 'utf8' ) ;
108
+ var y = fs . readFileSync ( tmpdir + '/y.js' , 'utf8' ) ;
109
+
110
+ vm . runInNewContext ( common + x , { console : { log : function ( msg ) {
111
+ t . equal ( msg , xVal ) ;
112
+ } } } ) ;
113
+
114
+ vm . runInNewContext ( common + y , { console : { log : function ( msg ) {
115
+ t . equal ( msg , yVal ) ;
116
+ } } } ) ;
117
+ if ( cb ) cb ( ) ;
118
+ } ) ;
119
+ }
120
+ } ) ;
121
+
122
+ test ( 'outpipe outputs' , function ( t ) {
123
+ var tmpdir = tmp ( ) + '/factor-bundle-' + Math . random ( ) ;
124
+ mkdirp . sync ( tmpdir ) ;
125
+
126
+ t . plan ( 2 ) ;
127
+ var b = browserify ( files ) ;
128
+ b . plugin ( factor , {
129
+ output : ' cat > ' + tmpdir + '/`basename $FILE`'
130
+ } ) ;
131
+ var w = fs . createWriteStream ( path . join ( tmpdir , 'common.js' ) ) ;
132
+ b . bundle ( ) . pipe ( w ) ;
133
+
134
+ w . on ( 'finish' , function ( ) {
135
+ var common = fs . readFileSync ( tmpdir + '/common.js' , 'utf8' ) ;
136
+ var x = fs . readFileSync ( tmpdir + '/x.js' , 'utf8' ) ;
137
+ var y = fs . readFileSync ( tmpdir + '/y.js' , 'utf8' ) ;
138
+
139
+ vm . runInNewContext ( common + x , { console : { log : function ( msg ) {
140
+ t . equal ( msg , 55500 ) ;
141
+ } } } ) ;
142
+
143
+ vm . runInNewContext ( common + y , { console : { log : function ( msg ) {
144
+ t . equal ( msg , 333 ) ;
145
+ } } } ) ;
146
+ } ) ;
147
+ } ) ;
0 commit comments