diff --git a/packages/comms/src/clienttools/eclcc.ts b/packages/comms/src/clienttools/eclcc.ts index c0a0bcbe68..48406ed028 100644 --- a/packages/comms/src/clienttools/eclcc.ts +++ b/packages/comms/src/clienttools/eclcc.ts @@ -126,7 +126,7 @@ export class EclccErrors extends Errors { super(checked); if (stdErr && stdErr.length) { for (const errLine of stdErr.split(os.EOL)) { - let match = /([a-z,A-Z]:\\(?:[-\w\.\d]+\\)*(?:[-\w\.\d]+)?|(?:\/[\w\.\-]+)+)\((\d*),(\d*)\): ?(error|warning|info) C(\d*): ?(.*)/.exec(errLine); + let match = /([a-zA-Z]:\\(?:[- \w\.\d]+\\)*(?:[- \w\.\d]+)?|(?:\/[\w\.\-]+)+)\((\d*),(\d*)\) ?: ?(error|warning|info) C(\d*) ?: ?(.*)/.exec(errLine); if (match) { const [, filePath, row, _col, severity, code, _msg] = match; const line: number = +row; diff --git a/tests/test-comms/src/clienttools/eclcc.spec.ts b/tests/test-comms/src/clienttools/eclcc.spec.ts index 6443338125..4cc2808aa9 100644 --- a/tests/test-comms/src/clienttools/eclcc.spec.ts +++ b/tests/test-comms/src/clienttools/eclcc.spec.ts @@ -1,6 +1,6 @@ import { expect } from "chai"; -import { locateClientTools, Version, Workunit } from "@hpcc-js/comms"; +import { EclccErrors, locateClientTools, Version, Workunit } from "@hpcc-js/comms"; import { isBrowser } from "@hpcc-js/util"; import { ESP_URL, isTravis } from "../testLib"; @@ -17,6 +17,11 @@ function logVersion(build: string): Promise { }); } +function hasError(errStr: string): boolean { + const err = new EclccErrors(errStr, []); + return err.hasError(); +} + describe("eclcc", function () { this.timeout(30000); if (!isBrowser) { @@ -81,6 +86,12 @@ describe("eclcc", function () { logVersion("comms_5.0.0") ]); }); + + it("Syntax Error", function () { + expect(hasError(`c:\\Users\\gordon\\Downloads\\VS\\SomeFolder\\VS\\BWR\\BWR_welcome.ecl(1,7): error C3002: syntax error near "'Welcome'" : expected ANY, ASCII, ASSERT, BIG_ENDIAN, CONST, DATASET, DICTIONARY, EBCDIC, GROUPED, IF, LITTLE_ENDIAN, NOCONST, OPT, OUT, PACKED, PATTERN, RECORD, ROW, RULE, SET, type-name, TOKEN, TYPEOF, UNSIGNED, VIRTUAL, , , dataset, identifier, identifier, type name, type name, type name, type name, datarow, function-name, function-name, action, pattern, event, transform-name, '^', '$'`)).to.be.true; + expect(hasError(`c:\\Users\\gordon\\Down-loads\\VS\\Some Folder\\VS\\BWR\\BWR_welcome.ecl(1,7): error C3002: syntax error near "'Welcome'" : expected ANY, ASCII, ASSERT, BIG_ENDIAN, CONST, DATASET, DICTIONARY, EBCDIC, GROUPED, IF, LITTLE_ENDIAN, NOCONST, OPT, OUT, PACKED, PATTERN, RECORD, ROW, RULE, SET, type-name, TOKEN, TYPEOF, UNSIGNED, VIRTUAL, , , dataset, identifier, identifier, type name, type name, type name, type name, datarow, function-name, function-name, action, pattern, event, transform-name, '^', '$'`)).to.be.true; + expect(hasError("c:\\temp\\test.ecl(7,13) : error C007 : Hello and Welcome")).to.be.true; + }); } } });