UNPKG

2.94 kBJavaScriptView Raw
1var staticModule = require('../');
2var test = require('tape');
3var concat = require('concat-stream');
4var quote = require('quote-stream');
5var through = require('through2');
6var fs = require('fs');
7var path = require('path');
8
9test('fs.readFileSync twice', function (t) {
10 var expected = [ 'EXTERMINATE\n', 'beep boop\n' ];
11 t.plan(expected.length + 1);
12 var sm = staticModule({
13 fs: { readFileSync: readFileSync }
14 }, { vars: { __dirname: __dirname + '/fs_twice' } });
15 readStream('html.js').pipe(sm).pipe(concat(function (body) {
16 t.equal(body.toString('utf8'),
17 'var a = "EXTERMINATE\\n";\n'
18 + 'var b = "beep boop\\n";\n'
19 + 'console.log(a);\n'
20 + 'console.log(b);\n'
21 );
22 Function(['console'],body)({ log: log });
23 function log (msg) { t.equal(msg, expected.shift()) }
24 }));
25});
26
27test('fs.readFileSync twice in vars', function (t) {
28 var expected = [ 'EXTERMINATE\n', 'beep boop\n' ];
29 t.plan(expected.length + 1);
30 var sm = staticModule({
31 fs: { readFileSync: readFileSync }
32 }, { vars: { __dirname: __dirname + '/fs_twice' } });
33 readStream('vars.js').pipe(sm).pipe(concat(function (body) {
34 t.equal(body.toString('utf8').trim(),
35 'var a = "EXTERMINATE\\n",\n'
36 + ' b = "beep boop\\n";\n'
37 + 'console.log(a);\n'
38 + 'console.log(b);'
39 );
40 Function(['console'],body)({ log: log });
41 function log (msg) { t.equal(msg, expected.shift()) }
42 }));
43});
44
45test('fs.readFileSync 4x', function (t) {
46 var expected = [
47 'EXTERMINATE\n', 'beep boop\n', 'EXTERMINATE\n', 'beep boop\n'
48 ];
49 t.plan(expected.length + 1);
50 var sm = staticModule({
51 fs: { readFileSync: readFileSync }
52 }, { vars: { __dirname: __dirname + '/fs_twice' } });
53 readStream('4x.js').pipe(sm).pipe(concat(function (body) {
54 t.equal(body.toString('utf8').trim(),
55 'var a = "EXTERMINATE\\n";\n'
56 + 'var b = "beep boop\\n";\n'
57 + 'var c = "EXTERMINATE\\n";\n'
58 + 'var d = "beep boop\\n";\n'
59 + 'console.log(a);\n'
60 + 'console.log(b);\n'
61 + 'console.log(c);\n'
62 + 'console.log(d);'
63 );
64 Function(['console'],body)({ log: log });
65 function log (msg) { t.equal(msg, expected.shift()) }
66 }));
67});
68
69function readStream (file) {
70 return fs.createReadStream(path.join(__dirname, 'fs_twice', file));
71}
72
73function readFile (file, cb) {
74 var stream = through(write, end);
75 stream.push('process.nextTick(function(){(' + cb + ')(null,');
76 return fs.createReadStream(file).pipe(quote()).pipe(stream);
77
78 function write (buf, enc, next) { this.push(buf); next() }
79 function end (next) { this.push(')})'); this.push(null); next() }
80}
81
82function readFileSync (file, opts) {
83 return fs.createReadStream(file).pipe(quote());
84}