@@ -106,6 +106,53 @@ describe('Input/output', function() {
106
106
readable . pipe ( pipeline ) . pipe ( writable ) ;
107
107
} ) ;
108
108
109
+ it ( 'Read from Stream and write to multiple Streams' , function ( done ) {
110
+ var finishEventsExpected = 2 ;
111
+ // Output stream 1
112
+ var output1 = fixtures . path ( 'output.multi-stream.1.jpg' ) ;
113
+ var writable1 = fs . createWriteStream ( output1 ) ;
114
+ writable1 . on ( 'finish' , function ( ) {
115
+ sharp ( output1 ) . toBuffer ( function ( err , data , info ) {
116
+ if ( err ) throw err ;
117
+ assert . strictEqual ( true , data . length > 0 ) ;
118
+ assert . strictEqual ( data . length , info . size ) ;
119
+ assert . strictEqual ( 'jpeg' , info . format ) ;
120
+ assert . strictEqual ( 320 , info . width ) ;
121
+ assert . strictEqual ( 240 , info . height ) ;
122
+ fs . unlinkSync ( output1 ) ;
123
+ finishEventsExpected -- ;
124
+ if ( finishEventsExpected === 0 ) {
125
+ done ( ) ;
126
+ }
127
+ } ) ;
128
+ } ) ;
129
+ // Output stream 2
130
+ var output2 = fixtures . path ( 'output.multi-stream.2.jpg' ) ;
131
+ var writable2 = fs . createWriteStream ( output2 ) ;
132
+ writable2 . on ( 'finish' , function ( ) {
133
+ sharp ( output2 ) . toBuffer ( function ( err , data , info ) {
134
+ if ( err ) throw err ;
135
+ assert . strictEqual ( true , data . length > 0 ) ;
136
+ assert . strictEqual ( data . length , info . size ) ;
137
+ assert . strictEqual ( 'jpeg' , info . format ) ;
138
+ assert . strictEqual ( 100 , info . width ) ;
139
+ assert . strictEqual ( 122 , info . height ) ;
140
+ fs . unlinkSync ( output2 ) ;
141
+ finishEventsExpected -- ;
142
+ if ( finishEventsExpected === 0 ) {
143
+ done ( ) ;
144
+ }
145
+ } ) ;
146
+ } ) ;
147
+ // Create parent instance
148
+ var rotator = sharp ( ) . rotate ( 90 ) ;
149
+ // Cloned instances with differing dimensions
150
+ rotator . clone ( ) . resize ( 320 , 240 ) . pipe ( writable1 ) ;
151
+ rotator . clone ( ) . resize ( 100 ) . pipe ( writable2 ) ;
152
+ // Go
153
+ fs . createReadStream ( fixtures . inputJpg ) . pipe ( rotator ) ;
154
+ } ) ;
155
+
109
156
it ( 'Handle Stream to Stream error ' , function ( done ) {
110
157
var pipeline = sharp ( ) . resize ( 320 , 240 ) ;
111
158
var anErrorWasEmitted = false ;
0 commit comments