mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
set encoding when reading from streams
using .toString() works most of the time but can lead to utf8 characters being broken across chunk boundaries. https://nodejs.org/api/stream.html#stream_readable_setencoding_encoding
This commit is contained in:
parent
7b9912034d
commit
8e86f02c43
6 changed files with 7 additions and 4 deletions
|
@ -334,7 +334,7 @@ module.exports = CompileManager = {
|
||||||
proc.on('error', callback)
|
proc.on('error', callback)
|
||||||
|
|
||||||
let stderr = ''
|
let stderr = ''
|
||||||
proc.stderr.on('data', chunk => (stderr += chunk.toString()))
|
proc.stderr.setEncoding('utf8').on('data', chunk => (stderr += chunk))
|
||||||
|
|
||||||
return proc.on('close', function(code) {
|
return proc.on('close', function(code) {
|
||||||
if (code === 0) {
|
if (code === 0) {
|
||||||
|
|
|
@ -46,7 +46,7 @@ module.exports = CommandRunner = {
|
||||||
const proc = spawn(command[0], command.slice(1), { cwd: directory, env })
|
const proc = spawn(command[0], command.slice(1), { cwd: directory, env })
|
||||||
|
|
||||||
let stdout = ''
|
let stdout = ''
|
||||||
proc.stdout.on('data', data => (stdout += data))
|
proc.stdout.setEncoding('utf8').on('data', data => (stdout += data))
|
||||||
|
|
||||||
proc.on('error', function(err) {
|
proc.on('error', function(err) {
|
||||||
logger.err(
|
logger.err(
|
||||||
|
|
|
@ -87,7 +87,7 @@ module.exports = OutputFileFinder = {
|
||||||
|
|
||||||
const proc = spawn('find', args)
|
const proc = spawn('find', args)
|
||||||
let stdout = ''
|
let stdout = ''
|
||||||
proc.stdout.on('data', chunk => (stdout += chunk.toString()))
|
proc.stdout.setEncoding('utf8').on('data', chunk => (stdout += chunk))
|
||||||
proc.on('error', callback)
|
proc.on('error', callback)
|
||||||
return proc.on('close', function(code) {
|
return proc.on('close', function(code) {
|
||||||
if (code !== 0) {
|
if (code !== 0) {
|
||||||
|
|
|
@ -78,7 +78,7 @@ module.exports = OutputFileOptimiser = {
|
||||||
const timer = new Metrics.Timer('qpdf')
|
const timer = new Metrics.Timer('qpdf')
|
||||||
const proc = spawn('qpdf', args)
|
const proc = spawn('qpdf', args)
|
||||||
let stdout = ''
|
let stdout = ''
|
||||||
proc.stdout.on('data', chunk => (stdout += chunk.toString()))
|
proc.stdout.setEncoding('utf8').on('data', chunk => (stdout += chunk))
|
||||||
callback = _.once(callback) // avoid double call back for error and close event
|
callback = _.once(callback) // avoid double call back for error and close event
|
||||||
proc.on('error', function(err) {
|
proc.on('error', function(err) {
|
||||||
logger.warn({ err, args }, 'qpdf failed')
|
logger.warn({ err, args }, 'qpdf failed')
|
||||||
|
|
|
@ -294,6 +294,7 @@ describe('CompileManager', function() {
|
||||||
this.proc = new EventEmitter()
|
this.proc = new EventEmitter()
|
||||||
this.proc.stdout = new EventEmitter()
|
this.proc.stdout = new EventEmitter()
|
||||||
this.proc.stderr = new EventEmitter()
|
this.proc.stderr = new EventEmitter()
|
||||||
|
this.proc.stderr.setEncoding = sinon.stub().returns(this.proc.stderr)
|
||||||
this.child_process.spawn = sinon.stub().returns(this.proc)
|
this.child_process.spawn = sinon.stub().returns(this.proc)
|
||||||
this.CompileManager.clearProject(
|
this.CompileManager.clearProject(
|
||||||
this.project_id,
|
this.project_id,
|
||||||
|
@ -328,6 +329,7 @@ describe('CompileManager', function() {
|
||||||
this.proc = new EventEmitter()
|
this.proc = new EventEmitter()
|
||||||
this.proc.stdout = new EventEmitter()
|
this.proc.stdout = new EventEmitter()
|
||||||
this.proc.stderr = new EventEmitter()
|
this.proc.stderr = new EventEmitter()
|
||||||
|
this.proc.stderr.setEncoding = sinon.stub().returns(this.proc.stderr)
|
||||||
this.child_process.spawn = sinon.stub().returns(this.proc)
|
this.child_process.spawn = sinon.stub().returns(this.proc)
|
||||||
this.CompileManager.clearProject(
|
this.CompileManager.clearProject(
|
||||||
this.project_id,
|
this.project_id,
|
||||||
|
|
|
@ -70,6 +70,7 @@ describe('OutputFileFinder', function() {
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
this.proc = new EventEmitter()
|
this.proc = new EventEmitter()
|
||||||
this.proc.stdout = new EventEmitter()
|
this.proc.stdout = new EventEmitter()
|
||||||
|
this.proc.stdout.setEncoding = sinon.stub().returns(this.proc.stdout)
|
||||||
this.spawn.returns(this.proc)
|
this.spawn.returns(this.proc)
|
||||||
this.directory = '/base/dir'
|
this.directory = '/base/dir'
|
||||||
return this.OutputFileFinder._getAllFiles(this.directory, this.callback)
|
return this.OutputFileFinder._getAllFiles(this.directory, this.callback)
|
||||||
|
|
Loading…
Reference in a new issue