From fcf9c92160220267773543f5a2a764e8707bcc40 Mon Sep 17 00:00:00 2001 From: John Lees-Miller Date: Tue, 14 Jun 2022 11:08:32 +0100 Subject: [PATCH] Split test for log parser changes GitOrigin-RevId: efe9fb29c5ae56889b686692f8533ae0ae4a3b1d --- .../src/Features/Project/ProjectController.js | 15 ++++++++++++ .../features/pdf-preview/util/output-files.js | 2 ++ .../js/ide/log-parser/latex-log-parser.js | 24 +++++++++++++++---- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/services/web/app/src/Features/Project/ProjectController.js b/services/web/app/src/Features/Project/ProjectController.js index ef01fba9e8..5ef812a56b 100644 --- a/services/web/app/src/Features/Project/ProjectController.js +++ b/services/web/app/src/Features/Project/ProjectController.js @@ -906,6 +906,21 @@ const ProjectController = { } ) }, + latexLogParserAssignment(cb) { + SplitTestHandler.getAssignment( + req, + res, + 'latex-log-parser', + (error, assignment) => { + // do not fail editor load if assignment fails + if (error) { + cb(null, { variant: 'default' }) + } else { + cb(null, assignment) + } + } + ) + }, }, ( err, diff --git a/services/web/frontend/js/features/pdf-preview/util/output-files.js b/services/web/frontend/js/features/pdf-preview/util/output-files.js index e115d80bb2..85473dea34 100644 --- a/services/web/frontend/js/features/pdf-preview/util/output-files.js +++ b/services/web/frontend/js/features/pdf-preview/util/output-files.js @@ -82,6 +82,8 @@ export const handleLogFiles = async (outputFiles, data, signal) => { result.log, { ignoreDuplicates: true, + oldRegexes: + getMeta('ol-splitTestVariants')['latex-log-parser'] !== 'new', } ) diff --git a/services/web/frontend/js/ide/log-parser/latex-log-parser.js b/services/web/frontend/js/ide/log-parser/latex-log-parser.js index e62f8075b0..f38f65d8fb 100644 --- a/services/web/frontend/js/ide/log-parser/latex-log-parser.js +++ b/services/web/frontend/js/ide/log-parser/latex-log-parser.js @@ -9,6 +9,10 @@ const LINES_REGEX = /lines? ([0-9]+)/ const PACKAGE_REGEX = /^(?:Package|Class|Module) (\b.+\b) Warning/ const FILE_LINE_ERROR_REGEX = /^([./].*):(\d+): (.*)/ +const LATEX_WARNING_REGEX_OLD = /^LaTeX Warning: (.*)$/ +const PACKAGE_WARNING_REGEX_OLD = /^(Package \b.+\b Warning:.*)$/ +const PACKAGE_REGEX_OLD = /^Package (\b.+\b) Warning/ + const STATE = { NORMAL: 0, ERROR: 1, @@ -23,6 +27,16 @@ export default class LatexParser { this.fileStack = [] this.currentFileList = this.rootFileList = [] this.openParens = 0 + // TODO: Needed only for beta release; remove when over. 20220530 + if (options.oldRegexes) { + this.latexWarningRegex = LATEX_WARNING_REGEX_OLD + this.packageWarningRegex = PACKAGE_WARNING_REGEX_OLD + this.packageRegex = PACKAGE_REGEX_OLD + } else { + this.latexWarningRegex = LATEX_WARNING_REGEX + this.packageWarningRegex = PACKAGE_WARNING_REGEX + this.packageRegex = PACKAGE_REGEX + } this.log = new LogText(text) } @@ -45,7 +59,7 @@ export default class LatexParser { } else if (this.currentLineIsRunawayArgument()) { this.parseRunawayArgumentError() } else if (this.currentLineIsWarning()) { - this.parseSingleWarningLine(LATEX_WARNING_REGEX) + this.parseSingleWarningLine(this.latexWarningRegex) } else if (this.currentLineIsHboxWarning()) { this.parseHboxLine() } else if (this.currentLineIsPackageWarning()) { @@ -95,11 +109,11 @@ export default class LatexParser { } currentLineIsWarning() { - return !!this.currentLine.match(LATEX_WARNING_REGEX) + return !!this.currentLine.match(this.latexWarningRegex) } currentLineIsPackageWarning() { - return !!this.currentLine.match(PACKAGE_WARNING_REGEX) + return !!this.currentLine.match(this.packageWarningRegex) } currentLineIsHboxWarning() { @@ -161,7 +175,7 @@ export default class LatexParser { parseMultipleWarningLine() { // Some package warnings are multiple lines, let's parse the first line - let warningMatch = this.currentLine.match(PACKAGE_WARNING_REGEX) + let warningMatch = this.currentLine.match(this.packageWarningRegex) // Something strange happened, return early if (!warningMatch) { return @@ -169,7 +183,7 @@ export default class LatexParser { const warningLines = [warningMatch[1]] let lineMatch = this.currentLine.match(LINES_REGEX) let line = lineMatch ? parseInt(lineMatch[1], 10) : null - const packageMatch = this.currentLine.match(PACKAGE_REGEX) + const packageMatch = this.currentLine.match(this.packageRegex) const packageName = packageMatch[1] // Regex to get rid of the unnecesary (packagename) prefix in most multi-line warnings const prefixRegex = new RegExp(