You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
typesetting/pitfall/pdfkit/node_modules/static-module/test/brfs.js

185 lines
5.9 KiB
JavaScript

var staticModule = require('../');
var test = require('tape');
var concat = require('concat-stream');
var quote = require('quote-stream');
var fs = require('fs');
var path = require('path');
var vm = require('vm');
test('readFileSync', function (t) {
t.plan(2);
var sm = staticModule({
fs: {
readFileSync: function (file) {
return fs.createReadStream(file).pipe(quote());
}
}
}, { vars: { __dirname: path.join(__dirname, 'brfs') } });
readStream('source.js').pipe(sm).pipe(concat(function (body) {
t.equal(body.toString('utf8'),
'\nvar src = "beep boop\\n";'
+ '\nconsole.log(src);\n'
);
vm.runInNewContext(body.toString('utf8'), {
console: { log: log }
});
function log (msg) { t.equal(msg, 'beep boop\n') }
}));
});
test('readFileSync attribute', function (t) {
t.plan(2);
var sm = staticModule({
fs: {
readFileSync: function (file) {
return fs.createReadStream(file).pipe(quote());
}
}
}, { vars: { __dirname: path.join(__dirname, 'brfs') } });
readStream('attribute.js').pipe(sm).pipe(concat(function (body) {
t.equal(body.toString('utf8'),
'\nvar src = "beep boop\\n";'
+ '\nconsole.log(src);\n'
);
vm.runInNewContext(body.toString('utf8'), {
console: { log: log }
});
function log (msg) { t.equal(msg, 'beep boop\n') }
}));
});
test('readFileSync attribute with multiple vars', function (t) {
t.plan(2);
var sm = staticModule({
fs: {
readFileSync: function (file) {
return fs.createReadStream(file).pipe(quote());
}
}
}, { vars: { __dirname: path.join(__dirname, 'brfs') } });
readStream('attribute_vars.js').pipe(sm).pipe(concat(function (body) {
t.equal(body.toString('utf8'),
'var x = 5, y = 2;'
+ '\nvar src = "beep boop\\n";'
+ '\nconsole.log(src);\n'
);
vm.runInNewContext(body.toString('utf8'), {
console: { log: log }
});
function log (msg) { t.equal(msg, 'beep boop\n') }
}));
});
test('readFileSync attribute with multiple require vars', function (t) {
t.plan(2);
var sm = staticModule({
fs: {
readFileSync: function (file) {
return fs.createReadStream(file).pipe(quote());
}
}
}, { vars: { __dirname: path.join(__dirname, 'brfs') } });
readStream('multi_require.js').pipe(sm).pipe(concat(function (body) {
t.equal(body.toString('utf8'),
'var x = 5;'
+ '\nvar src = "beep boop\\n";'
+ '\nconsole.log(src);\n'
);
vm.runInNewContext(body.toString('utf8'), {
console: { log: log }
});
function log (msg) { t.equal(msg, 'beep boop\n') }
}));
});
test('readFileSync attribute with multiple require vars including an uninitalized var', function (t) {
t.plan(2);
var sm = staticModule({
fs: {
readFileSync: function (file) {
return fs.createReadStream(file).pipe(quote());
}
}
}, { vars: { __dirname: path.join(__dirname, 'brfs') } });
readStream('multi_require_with_uninitialized.js').pipe(sm).pipe(concat(function (body) {
t.equal(body.toString('utf8'),
'var x;'
+ '\nvar src = "beep boop\\n";'
+ '\nconsole.log(src);\n'
);
vm.runInNewContext(body.toString('utf8'), {
console: { log: log }
});
function log (msg) { t.equal(msg, 'beep boop\n') }
}));
});
test('readFileSync attribute with multiple require vars x5', function (t) {
t.plan(2);
var sm = staticModule({
fs: {
readFileSync: function (file) {
return fs.createReadStream(file).pipe(quote());
}
}
}, { vars: { __dirname: path.join(__dirname, 'brfs') } });
readStream('x5.js').pipe(sm).pipe(concat(function (body) {
t.equal(body.toString('utf8').replace(/;/g,''),
'var a = 1, b = 2, c = 3, d = 4, '
+ 'src = "beep boop\\n",\n'
+ ' e = 5\n'
+ 'console.log(src)\n'
);
vm.runInNewContext(body.toString('utf8'), {
console: { log: log }
});
function log (msg) { t.equal(msg, 'beep boop\n') }
}));
});
test('readFileSync with bracket notation', function (t) {
t.plan(2);
var sm = staticModule({
fs: {
readFileSync: function (file) {
return fs.createReadStream(file).pipe(quote());
}
}
}, { vars: { __dirname: path.join(__dirname, 'brfs') } });
readStream('brackets.js').pipe(sm).pipe(concat(function (body) {
t.equal(body.toString('utf8'),
'\nvar src = "beep boop\\n";'
+ '\nconsole.log(src);\n'
);
vm.runInNewContext(body.toString('utf8'), {
console: { log: log }
});
function log (msg) { t.equal(msg, 'beep boop\n') }
}));
});
test('readFileSync attribute bracket notation', function (t) {
t.plan(2);
var sm = staticModule({
fs: {
readFileSync: function (file) {
return fs.createReadStream(file).pipe(quote());
}
}
}, { vars: { __dirname: path.join(__dirname, 'brfs') } });
readStream('attribute_brackets.js').pipe(sm).pipe(concat(function (body) {
t.equal(body.toString('utf8'),
'\nvar src = "beep boop\\n";'
+ '\nconsole.log(src);\n'
);
vm.runInNewContext(body.toString('utf8'), {
console: { log: log }
});
function log (msg) { t.equal(msg, 'beep boop\n') }
}));
});
function readStream (file) {
return fs.createReadStream(path.join(__dirname, 'brfs', file));
}