-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathstreamSync.js
84 lines (67 loc) · 1.83 KB
/
streamSync.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*global describe, it, beforeEach */
"use strict";
var gSpawn = require("../"),
Stream = require("stream"),
Vinyl = require("vinyl"),
assert = require("assert"),
es = require("event-stream");
describe("gulp-spawn", function () {
describe("in stream mode", function () {
it("should work with sync streams", function (done) {
var stream = gSpawn({
cmd: "cat"
});
var inputStream = new Stream.PassThrough({objectMode: true}),
outputStream = new Stream.PassThrough({objectMode: true}),
n = 0;
var fakeFile = new Vinyl({
cwd: "./",
base: "test",
path: "test/file.js",
contents: new Stream.PassThrough()
});
var fakeFile2 = new Vinyl({
cwd: "./",
base: "test",
path: "test/file2.js",
contents: new Stream.PassThrough()
});
inputStream
.pipe(stream)
.pipe(outputStream);
outputStream.on("readable", function () {
var newFile;
while (newFile = outputStream.read()) {
assert(newFile);
assert.equal(newFile.cwd, "./");
assert.equal(newFile.base, "test");
assert(newFile.contents instanceof Stream);
if (++n === 1) {
assert.equal(newFile.path, "test/file.js");
newFile.contents.pipe(es.wait(function (err, data) {
assert.equal(data, "plipplap");
}));
} else {
assert.equal(newFile.path, "test/file2.js");
newFile.contents.pipe(es.wait(function (err, data) {
assert.equal(data, "plopplup");
}));
}
}
});
outputStream.on("end", function () {
assert.equal(n, 2);
done();
});
stream.write(fakeFile);
stream.write(fakeFile2);
stream.end();
fakeFile.contents.write("plip");
fakeFile.contents.write("plap");
fakeFile.contents.end();
fakeFile2.contents.write("plop");
fakeFile2.contents.write("plup");
fakeFile2.contents.end();
});
});
});