diff --git a/test/mocha.opts b/test/mocha.opts new file mode 100644 index 000000000..0689afdbc --- /dev/null +++ b/test/mocha.opts @@ -0,0 +1 @@ +--timeout 20000 diff --git a/test/unixTerminal.test.js b/test/unixTerminal.test.js index c2ede88e5..0c7e4102a 100644 --- a/test/unixTerminal.test.js +++ b/test/unixTerminal.test.js @@ -21,4 +21,41 @@ describe("UnixTerminal", function() { } }); }); + + describe("PtyForkEncodingOption", function() { + it("should default to utf8", function(done) { + const term = new UnixTerminal(null, [ '-c', 'cat "' + __dirname + '/utf8-character.txt"' ]); + term.on('data', function(data) { + assert.equal(typeof data, 'string'); + assert.equal(data, '\u00E6'); + done(); + }); + }); + it("should return a Buffer when encoding is null", function(done) { + const term = new UnixTerminal(null, [ '-c', 'cat "' + __dirname + '/utf8-character.txt"' ], { + encoding: null, + }); + term.on('data', function(data) { + assert.equal(typeof data, 'object'); + assert.ok(data instanceof Buffer); + assert.equal(0xC3, data[0]); + assert.equal(0xA6, data[1]); + done(); + }); + }); + it("should support other encodings", function(done) { + const term = new UnixTerminal(null, [ '-c', 'cat "' + __dirname + '/utf8-sentence.txt"' ], { + encoding: 'base64' + }); + var buf = ''; + term.on('data', function(data) { + assert.equal(typeof data, 'string'); + buf += data; + }); + term.on('close', function() { + assert.equal(buf, 'SGV5LCDDpiEgV2hhZGR1cD8='); + done(); + }); + }); + }); }); diff --git a/test/utf8-character.txt b/test/utf8-character.txt new file mode 100644 index 000000000..8a73067f9 --- /dev/null +++ b/test/utf8-character.txt @@ -0,0 +1 @@ +æ \ No newline at end of file diff --git a/test/utf8-sentence.txt b/test/utf8-sentence.txt new file mode 100644 index 000000000..5e99e4585 --- /dev/null +++ b/test/utf8-sentence.txt @@ -0,0 +1 @@ +Hey, æ! Whaddup? \ No newline at end of file