UNPKG

fd-gulp-convert-encoding

Version:

convert file to assigned charset

131 lines (94 loc) 3.29 kB
'use strict'; var convertEncoding = require('../'); var should = require('should'); var File = require('gulp-util').File; var Buffer = require('buffer').Buffer; var fs = require('fs'); var Readable = require('stream').Readable; var Path = require('path'); var jschardet = require('jschardet'); require('mocha'); describe('fd-gulp-convert-encoding', function() { describe('convertEncoding()', function() { it('should emit error if encoding param is empty', function(done) { try { convertEncoding(); done(); } catch(err) { err.message.should.equal('encoding is empty'); done(); } }); it('should emit error for stream files', function(done) { var streamFile = { isNull: function () { return false; }, isStream: function () { return true; } }; var stream = convertEncoding('utf-8'); stream.on('error', function (err) { err.message.should.equal('Streaming not supported'); done(); }); stream.write(streamFile); }); it('should convert the gbk file to utf-8 file', function(done) { var testDirectory = './source'; var assets = Path.join(testDirectory, 'gbk.js'); var stream = convertEncoding('utf-8'); var fileAdata = fs.readFileSync(assets); var fileA = new File({ path: assets, contents: fileAdata }); stream.on('data', function(newFile){ should.exist(newFile); should.exist(newFile.path); should.exist(newFile.relative); should.exist(newFile.contents); Buffer.isBuffer(newFile.contents).should.equal(true); var filebuffer = newFile.contents; var fileencoding = jschardet.detect(filebuffer).encoding; // gbk转成utf-8编码时,notepadd++中显示编码为ASCI as UTF-8,即windows-1252 fileencoding.should.equal('windows-1252'); }); stream.on('end', function() { done(); }); stream.write(fileA); stream.end(); }); it('should convert the utf-8 file to gb2312 file', function(done) { var testDirectory = './source'; var assets = Path.join(testDirectory, 'utf.js'); var stream = convertEncoding('gbk'); var fileAdata = fs.readFileSync(assets); var fileA = new File({ path: assets, contents: fileAdata }); stream.on('data', function(newFile){ should.exist(newFile); should.exist(newFile.path); should.exist(newFile.relative); should.exist(newFile.contents); Buffer.isBuffer(newFile.contents).should.equal(true); var filebuffer = newFile.contents; var fileencoding = jschardet.detect(filebuffer).encoding; fileencoding.should.equal('GB2312'); }); stream.on('end', function() { done(); }); stream.write(fileA); stream.end(); }); }); }); function stringStream() { var stream = new Readable(); stream._read = function() { this.push('terin'); this.push(null); }; return stream; }