mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-29 02:57:12 +00:00
dab6e9aa8e
The unconventional use of callbacks to return both an error and data after compilation created a subtle bug where the output files were dropped by the LockManager in case of an error such as a timeout. This prevented the frontend to show error logs when a timeout occurs, creating confusion among users. We now attach the output files to the error so that they reach the controller and are sent back to the web service.
34 lines
894 B
CoffeeScript
34 lines
894 B
CoffeeScript
Client = require "./helpers/Client"
|
|
request = require "request"
|
|
require("chai").should()
|
|
ClsiApp = require "./helpers/ClsiApp"
|
|
|
|
|
|
describe "Timed out compile", ->
|
|
before (done) ->
|
|
@request =
|
|
options:
|
|
timeout: 10 #seconds
|
|
resources: [
|
|
path: "main.tex"
|
|
content: '''
|
|
\\documentclass{article}
|
|
\\begin{document}
|
|
\\def\\x{Hello!\\par\\x}
|
|
\\x
|
|
\\end{document}
|
|
'''
|
|
]
|
|
@project_id = Client.randomId()
|
|
ClsiApp.ensureRunning =>
|
|
Client.compile @project_id, @request, (@error, @res, @body) => done()
|
|
|
|
it "should return a timeout error", ->
|
|
@body.compile.error.should.equal "container timed out"
|
|
|
|
it "should return a timedout status", ->
|
|
@body.compile.status.should.equal "timedout"
|
|
|
|
it "should return the log output file name", ->
|
|
outputFilePaths = @body.compile.outputFiles.map((x) => x.path)
|
|
outputFilePaths.should.include('output.log')
|