mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2025-07-25 02:00:07 +02:00
86 lines
2.7 KiB
Diff
86 lines
2.7 KiB
Diff
diff --git a/services/clsi/app/js/LocalCommandRunner.js b/services/clsi/app/js/LocalCommandRunner.js
|
|
index ce274733585..aa62825443c 100644
|
|
--- a/services/clsi/app/js/LocalCommandRunner.js
|
|
+++ b/services/clsi/app/js/LocalCommandRunner.js
|
|
@@ -54,6 +54,7 @@ module.exports = CommandRunner = {
|
|
cwd: directory,
|
|
env,
|
|
stdio: ['pipe', 'pipe', 'ignore'],
|
|
+ detached: true,
|
|
})
|
|
|
|
let stdout = ''
|
|
diff --git a/services/clsi/test/acceptance/js/StopCompile.js b/services/clsi/test/acceptance/js/StopCompile.js
|
|
new file mode 100644
|
|
index 00000000000..103a70f37d7
|
|
--- /dev/null
|
|
+++ b/services/clsi/test/acceptance/js/StopCompile.js
|
|
@@ -0,0 +1,47 @@
|
|
+const Client = require('./helpers/Client')
|
|
+const ClsiApp = require('./helpers/ClsiApp')
|
|
+const { expect } = require('chai')
|
|
+
|
|
+describe('Stop compile', function () {
|
|
+ before(function (done) {
|
|
+ this.request = {
|
|
+ options: {
|
|
+ timeout: 100,
|
|
+ }, // seconds
|
|
+ resources: [
|
|
+ {
|
|
+ path: 'main.tex',
|
|
+ content: `\
|
|
+\\documentclass{article}
|
|
+\\begin{document}
|
|
+\\def\\x{Hello!\\par\\x}
|
|
+\\x
|
|
+\\end{document}\
|
|
+`,
|
|
+ },
|
|
+ ],
|
|
+ }
|
|
+ this.project_id = Client.randomId()
|
|
+ ClsiApp.ensureRunning(() => {
|
|
+ // start the compile in the background
|
|
+ Client.compile(this.project_id, this.request, (error, res, body) => {
|
|
+ this.compileResult = { error, res, body }
|
|
+ })
|
|
+ // wait for 1 second before stopping the compile
|
|
+ setTimeout(() => {
|
|
+ Client.stopCompile(this.project_id, (error, res, body) => {
|
|
+ this.stopResult = { error, res, body }
|
|
+ setTimeout(done, 1000) // allow time for the compile request to terminate
|
|
+ })
|
|
+ }, 1000)
|
|
+ })
|
|
+ })
|
|
+
|
|
+ it('should force a compile response with an error status', function () {
|
|
+ expect(this.stopResult.error).to.be.null
|
|
+ expect(this.stopResult.res.statusCode).to.equal(204)
|
|
+ expect(this.compileResult.res.statusCode).to.equal(200)
|
|
+ expect(this.compileResult.body.compile.status).to.equal('terminated')
|
|
+ expect(this.compileResult.body.compile.error).to.equal('terminated')
|
|
+ })
|
|
+})
|
|
diff --git a/services/clsi/test/acceptance/js/helpers/Client.js b/services/clsi/test/acceptance/js/helpers/Client.js
|
|
index a0bdce734f3..49bf7390c6f 100644
|
|
--- a/services/clsi/test/acceptance/js/helpers/Client.js
|
|
+++ b/services/clsi/test/acceptance/js/helpers/Client.js
|
|
@@ -42,6 +42,16 @@ module.exports = Client = {
|
|
)
|
|
},
|
|
|
|
+ stopCompile(projectId, callback) {
|
|
+ if (callback == null) {
|
|
+ callback = function () {}
|
|
+ }
|
|
+ return request.post(
|
|
+ { url: `${this.host}/project/${projectId}/compile/stop` },
|
|
+ callback
|
|
+ )
|
|
+ },
|
|
+
|
|
clearCache(projectId, callback) {
|
|
if (callback == null) {
|
|
callback = function () {}
|