mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Merge pull request #19642 from overleaf/jdt-latexmkrc-ce
feat: add latexmkrc for server-ce GitOrigin-RevId: 0d7385808a6a0b98d0a759ce0e329e6b9f578f35
This commit is contained in:
parent
f4c57fce4c
commit
7add11a190
3 changed files with 40 additions and 9 deletions
|
@ -82,6 +82,10 @@ RUN chmod +x /overleaf/bin/flush-history-queues
|
||||||
ADD server-ce/bin/force-history-resyncs /overleaf/bin/force-history-resyncs
|
ADD server-ce/bin/force-history-resyncs /overleaf/bin/force-history-resyncs
|
||||||
RUN chmod +x /overleaf/bin/force-history-resyncs
|
RUN chmod +x /overleaf/bin/force-history-resyncs
|
||||||
|
|
||||||
|
# Copy Latexmkrc
|
||||||
|
# -----------------------
|
||||||
|
COPY server-ce/config/latexmkrc /usr/local/share/latexmk/LatexMk
|
||||||
|
|
||||||
# File that controls open|closed status of the site
|
# File that controls open|closed status of the site
|
||||||
# -------------------------------------------------
|
# -------------------------------------------------
|
||||||
ENV SITE_MAINTENANCE_FILE "/etc/overleaf/site_status"
|
ENV SITE_MAINTENANCE_FILE "/etc/overleaf/site_status"
|
||||||
|
|
3
server-ce/config/latexmkrc
Normal file
3
server-ce/config/latexmkrc
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# equivalent to -gt option. Used to prevent latexmk from skipping recompilation
|
||||||
|
# of output.log and output.pdf
|
||||||
|
$go_mode = 3;
|
|
@ -16,7 +16,7 @@ describe('SandboxedCompiles', function () {
|
||||||
ALL_TEX_LIVE_DOCKER_IMAGE_NAMES: '2023,2022',
|
ALL_TEX_LIVE_DOCKER_IMAGE_NAMES: '2023,2022',
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('enabled in Server Pro', () => {
|
describe('enabled in Server Pro', function () {
|
||||||
if (isExcludedBySharding('PRO_CUSTOM_2')) return
|
if (isExcludedBySharding('PRO_CUSTOM_2')) return
|
||||||
startWith({
|
startWith({
|
||||||
pro: true,
|
pro: true,
|
||||||
|
@ -28,7 +28,7 @@ describe('SandboxedCompiles', function () {
|
||||||
login('user@example.com')
|
login('user@example.com')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should offer TexLive images and switch the compiler', () => {
|
it('should offer TexLive images and switch the compiler', function () {
|
||||||
cy.visit('/project')
|
cy.visit('/project')
|
||||||
createProject('sandboxed')
|
createProject('sandboxed')
|
||||||
const recompile = throttledRecompile()
|
const recompile = throttledRecompile()
|
||||||
|
@ -58,10 +58,11 @@ describe('SandboxedCompiles', function () {
|
||||||
|
|
||||||
checkSyncTeX()
|
checkSyncTeX()
|
||||||
checkXeTeX()
|
checkXeTeX()
|
||||||
|
checkRecompilesAfterErrors()
|
||||||
})
|
})
|
||||||
|
|
||||||
function checkSyncTeX() {
|
function checkSyncTeX() {
|
||||||
describe('SyncTeX', () => {
|
describe('SyncTeX', function () {
|
||||||
let projectName: string
|
let projectName: string
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
projectName = `Project ${uuid()}`
|
projectName = `Project ${uuid()}`
|
||||||
|
@ -81,7 +82,7 @@ describe('SandboxedCompiles', function () {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should sync to code', () => {
|
it('should sync to code', function () {
|
||||||
cy.log('navigate to \\maketitle using double click in PDF')
|
cy.log('navigate to \\maketitle using double click in PDF')
|
||||||
cy.get('.pdf-viewer').within(() => {
|
cy.get('.pdf-viewer').within(() => {
|
||||||
cy.findByText(projectName).dblclick()
|
cy.findByText(projectName).dblclick()
|
||||||
|
@ -112,7 +113,7 @@ describe('SandboxedCompiles', function () {
|
||||||
cy.get('.cm-activeLine').should('have.text', '\\section{Section B}')
|
cy.get('.cm-activeLine').should('have.text', '\\section{Section B}')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should sync to pdf', () => {
|
it('should sync to pdf', function () {
|
||||||
cy.log('zoom in')
|
cy.log('zoom in')
|
||||||
cy.findByText('45%').click()
|
cy.findByText('45%').click()
|
||||||
cy.findByText('400%').click()
|
cy.findByText('400%').click()
|
||||||
|
@ -150,8 +151,25 @@ describe('SandboxedCompiles', function () {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function checkRecompilesAfterErrors() {
|
||||||
|
it('recompiles even if there are Latex errors', function () {
|
||||||
|
login('user@example.com')
|
||||||
|
cy.visit('/project')
|
||||||
|
createProject('test-project')
|
||||||
|
const recompile = throttledRecompile()
|
||||||
|
cy.findByText('\\maketitle').parent().click()
|
||||||
|
cy.findByText('\\maketitle')
|
||||||
|
.parent()
|
||||||
|
.type('\n\\fakeCommand{} \n\\section{{}Test Section}')
|
||||||
|
recompile()
|
||||||
|
recompile()
|
||||||
|
cy.get('.pdf-viewer').should('contain.text', 'Test Section')
|
||||||
|
cy.get('.logs-pane').should('not.contain.text', 'No PDF')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
function checkXeTeX() {
|
function checkXeTeX() {
|
||||||
it('should be able to use XeLaTeX', () => {
|
it('should be able to use XeLaTeX', function () {
|
||||||
cy.visit('/project')
|
cy.visit('/project')
|
||||||
createProject('XeLaTeX')
|
createProject('XeLaTeX')
|
||||||
const recompile = throttledRecompile()
|
const recompile = throttledRecompile()
|
||||||
|
@ -181,7 +199,11 @@ describe('SandboxedCompiles', function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkUsesDefaultCompiler() {
|
function checkUsesDefaultCompiler() {
|
||||||
it('should not offer TexLive images and use default compiler', () => {
|
beforeEach(function () {
|
||||||
|
login('user@example.com')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should not offer TexLive images and use default compiler', function () {
|
||||||
cy.visit('/project')
|
cy.visit('/project')
|
||||||
createProject('sandboxed')
|
createProject('sandboxed')
|
||||||
cy.log('wait for compile')
|
cy.log('wait for compile')
|
||||||
|
@ -198,7 +220,7 @@ describe('SandboxedCompiles', function () {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('disabled in Server Pro', () => {
|
describe('disabled in Server Pro', function () {
|
||||||
if (isExcludedBySharding('PRO_DEFAULT_2')) return
|
if (isExcludedBySharding('PRO_DEFAULT_2')) return
|
||||||
startWith({ pro: true })
|
startWith({ pro: true })
|
||||||
ensureUserExists({ email: 'user@example.com' })
|
ensureUserExists({ email: 'user@example.com' })
|
||||||
|
@ -209,9 +231,10 @@ describe('SandboxedCompiles', function () {
|
||||||
checkUsesDefaultCompiler()
|
checkUsesDefaultCompiler()
|
||||||
checkSyncTeX()
|
checkSyncTeX()
|
||||||
checkXeTeX()
|
checkXeTeX()
|
||||||
|
checkRecompilesAfterErrors()
|
||||||
})
|
})
|
||||||
|
|
||||||
describe.skip('unavailable in CE', () => {
|
describe.skip('unavailable in CE', function () {
|
||||||
if (isExcludedBySharding('CE_CUSTOM_1')) return
|
if (isExcludedBySharding('CE_CUSTOM_1')) return
|
||||||
startWith({ pro: false, vars: enabledVars, resetData: true })
|
startWith({ pro: false, vars: enabledVars, resetData: true })
|
||||||
ensureUserExists({ email: 'user@example.com' })
|
ensureUserExists({ email: 'user@example.com' })
|
||||||
|
@ -222,5 +245,6 @@ describe('SandboxedCompiles', function () {
|
||||||
checkUsesDefaultCompiler()
|
checkUsesDefaultCompiler()
|
||||||
checkSyncTeX()
|
checkSyncTeX()
|
||||||
checkXeTeX()
|
checkXeTeX()
|
||||||
|
checkRecompilesAfterErrors()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue