gulp-batch-replace
Version:
A batch string/regexp replace plugin for gulp
181 lines (151 loc) • 4.97 kB
JavaScript
var replacePlugin = require('../');
var fs = require('fs');
var path = require('path');
var es = require('event-stream');
var should = require('should');
var gutil = require('gulp-util');
require('mocha');
var replaceThisString = [
['world','person'],
['old','weird'],
['new','funky'],
['kind','lovely'],
['cruel','amazing']
];
var replaceThisRegexp = [
[/world/g,'person'],
[/old/g,'weird'],
[/new/g,'funky'],
[/kind/g,'lovely'],
[/cruel/g,'amazing']
];
var replaceThisMixed = [
[/world/g,'person'],
['old','weird'],
[/new/g,'funky'],
['kind','lovely'],
[/cruel/g,'amazing']
];
var makeFile = function(contents) {
return new gutil.File({
path: 'test/file.txt',
cwd: 'test/',
base: 'test/',
contents: contents
});
};
describe('gulp-batch-replace', function() {
describe('replacePlugin()', function() {
it('should replace string with string on a stream', function(done) {
var file = new gutil.File({
path: 'test/fixtures/helloworld.txt',
cwd: 'test/',
base: 'test/fixtures',
contents: fs.createReadStream('test/fixtures/helloworld.txt')
});
var stream = replacePlugin(replaceThisString);
stream.on('data', function(newFile) {
should.exist(newFile);
should.exist(newFile.contents);
newFile.contents.pipe(es.wait(function(err, data) {
should.not.exist(err);
data.should.equal(fs.readFileSync('test/expected/helloworld.txt', 'utf8'));
done();
}));
});
stream.write(file);
stream.end();
});
it('should replace regex with string on a stream', function(done) {
var file = new gutil.File({
path: 'test/fixtures/helloworld.txt',
cwd: 'test/',
base: 'test/fixtures',
contents: fs.createReadStream('test/fixtures/helloworld.txt')
});
var stream = replacePlugin(replaceThisRegexp);
stream.on('data', function(newFile) {
should.exist(newFile);
should.exist(newFile.contents);
newFile.contents.pipe(es.wait(function(err, data) {
should.not.exist(err);
data.should.equal(fs.readFileSync('test/expected/helloworld.txt', 'utf8'));
done();
}));
});
stream.write(file);
stream.end();
});
it('should replace string with string on a buffer', function(done) {
var file = new gutil.File({
path: 'test/fixtures/helloworld.txt',
cwd: 'test/',
base: 'test/fixtures',
contents: fs.readFileSync('test/fixtures/helloworld.txt')
});
var stream = replacePlugin(replaceThisString);
stream.on('data', function(newFile) {
should.exist(newFile);
should.exist(newFile.contents);
String(newFile.contents).should.equal(fs.readFileSync('test/expected/helloworld.txt', 'utf8'));
done();
});
stream.write(file);
stream.end();
});
it('should replace regex with string on a buffer', function(done) {
var file = new gutil.File({
path: 'test/fixtures/helloworld.txt',
cwd: 'test/',
base: 'test/fixtures',
contents: fs.readFileSync('test/fixtures/helloworld.txt')
});
var stream = replacePlugin(replaceThisRegexp);
stream.on('data', function(newFile) {
should.exist(newFile);
should.exist(newFile.contents);
String(newFile.contents).should.equal(fs.readFileSync('test/expected/helloworld.txt', 'utf8'));
done();
});
stream.write(file);
stream.end();
});
it('should replace mixed search types on a buffer', function(done) {
var file = new gutil.File({
path: 'test/fixtures/helloworld.txt',
cwd: 'test/',
base: 'test/fixtures',
contents: fs.readFileSync('test/fixtures/helloworld.txt')
});
var stream = replacePlugin(replaceThisMixed);
stream.on('data', function(newFile) {
should.exist(newFile);
should.exist(newFile.contents);
String(newFile.contents).should.equal(fs.readFileSync('test/expected/helloworld.txt', 'utf8'));
done();
});
stream.write(file);
stream.end();
});
it('should replace mixed search types on a stream', function(done) {
var file = new gutil.File({
path: 'test/fixtures/helloworld.txt',
cwd: 'test/',
base: 'test/fixtures',
contents: fs.createReadStream('test/fixtures/helloworld.txt')
});
var stream = replacePlugin(replaceThisMixed);
stream.on('data', function(newFile) {
should.exist(newFile);
should.exist(newFile.contents);
newFile.contents.pipe(es.wait(function(err, data) {
should.not.exist(err);
data.should.equal(fs.readFileSync('test/expected/helloworld.txt', 'utf8'));
done();
}));
});
stream.write(file);
stream.end();
});
});
});