@apexdevtools/apex-parser 4.4.1 → 5.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +112 -0
- package/README.md +98 -42
- package/lib/ApexErrorListener.d.ts +25 -0
- package/lib/ApexErrorListener.js +64 -0
- package/lib/ApexErrorListener.js.map +1 -0
- package/lib/ApexParserFactory.d.ts +69 -0
- package/lib/ApexParserFactory.js +125 -0
- package/lib/ApexParserFactory.js.map +1 -0
- package/lib/CaseInsensitiveInputStream.d.ts +11 -13
- package/lib/CaseInsensitiveInputStream.js +22 -28
- package/lib/CaseInsensitiveInputStream.js.map +1 -1
- package/lib/Check.d.ts +36 -0
- package/lib/Check.js +212 -0
- package/lib/Check.js.map +1 -0
- package/lib/{ApexLexer.d.ts → antlr/ApexLexer.d.ts} +11 -18
- package/lib/antlr/ApexLexer.js +1575 -0
- package/lib/antlr/ApexLexer.js.map +1 -0
- package/lib/{ApexParser.d.ts → antlr/ApexParser.d.ts} +1344 -1304
- package/lib/antlr/ApexParser.js +20976 -0
- package/lib/antlr/ApexParser.js.map +1 -0
- package/lib/{ApexParserListener.d.ts → antlr/ApexParserListener.d.ts} +708 -686
- package/lib/antlr/ApexParserListener.js +12 -0
- package/lib/antlr/ApexParserListener.js.map +1 -0
- package/lib/{ApexParserVisitor.d.ts → antlr/ApexParserVisitor.d.ts} +420 -406
- package/lib/antlr/ApexParserVisitor.js +15 -0
- package/lib/antlr/ApexParserVisitor.js.map +1 -0
- package/lib/index.d.ts +8 -24
- package/lib/index.js +13 -140
- package/lib/index.js.map +1 -1
- package/package.json +30 -27
- package/lib/ApexLexer.js +0 -1704
- package/lib/ApexLexer.js.map +0 -1
- package/lib/ApexParser.js +0 -19514
- package/lib/ApexParser.js.map +0 -1
- package/lib/ApexParserListener.js +0 -4
- package/lib/ApexParserListener.js.map +0 -1
- package/lib/ApexParserVisitor.js +0 -4
- package/lib/ApexParserVisitor.js.map +0 -1
- package/lib/ThrowingErrorListener.d.ts +0 -10
- package/lib/ThrowingErrorListener.js +0 -18
- package/lib/ThrowingErrorListener.js.map +0 -1
- package/lib/__tests__/ApexLexerTest.d.ts +0 -1
- package/lib/__tests__/ApexLexerTest.js +0 -48
- package/lib/__tests__/ApexLexerTest.js.map +0 -1
- package/lib/__tests__/ApexListenerTest.d.ts +0 -1
- package/lib/__tests__/ApexListenerTest.js +0 -41
- package/lib/__tests__/ApexListenerTest.js.map +0 -1
- package/lib/__tests__/ApexParserTest.d.ts +0 -1
- package/lib/__tests__/ApexParserTest.js +0 -199
- package/lib/__tests__/ApexParserTest.js.map +0 -1
- package/lib/__tests__/ApexTriggerTest.d.ts +0 -1
- package/lib/__tests__/ApexTriggerTest.js +0 -66
- package/lib/__tests__/ApexTriggerTest.js.map +0 -1
- package/lib/__tests__/ApexVisitorTest.d.ts +0 -1
- package/lib/__tests__/ApexVisitorTest.js +0 -46
- package/lib/__tests__/ApexVisitorTest.js.map +0 -1
- package/lib/__tests__/SOQLParserTest.d.ts +0 -1
- package/lib/__tests__/SOQLParserTest.js +0 -121
- package/lib/__tests__/SOQLParserTest.js.map +0 -1
- package/lib/__tests__/SOSLParserTest.d.ts +0 -1
- package/lib/__tests__/SOSLParserTest.js +0 -101
- package/lib/__tests__/SOSLParserTest.js.map +0 -1
- package/lib/__tests__/SyntaxErrorCounter.d.ts +0 -10
- package/lib/__tests__/SyntaxErrorCounter.js +0 -52
- package/lib/__tests__/SyntaxErrorCounter.js.map +0 -1
- package/lib/__tests__/system/SampleParseSys.d.ts +0 -1
- package/lib/__tests__/system/SampleParseSys.js +0 -75
- package/lib/__tests__/system/SampleParseSys.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SOQLParserTest.js","sourceRoot":"","sources":["../../src/__tests__/SOQLParserTest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/*
|
|
4
|
-
Copyright (c) 2021 Kevin Jones, All rights reserved.
|
|
5
|
-
Redistribution and use in source and binary forms, with or without
|
|
6
|
-
modification, are permitted provided that the following conditions
|
|
7
|
-
are met:
|
|
8
|
-
1. Redistributions of source code must retain the above copyright
|
|
9
|
-
notice, this list of conditions and the following disclaimer.
|
|
10
|
-
2. Redistributions in binary form must reproduce the above copyright
|
|
11
|
-
notice, this list of conditions and the following disclaimer in the
|
|
12
|
-
documentation and/or other materials provided with the distribution.
|
|
13
|
-
3. The name of the author may not be used to endorse or promote products
|
|
14
|
-
derived from this software without specific prior written permission.
|
|
15
|
-
*/
|
|
16
|
-
const ApexParser_1 = require("../ApexParser");
|
|
17
|
-
const SyntaxErrorCounter_1 = require("./SyntaxErrorCounter");
|
|
18
|
-
test('testBasicQuery', () => {
|
|
19
|
-
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)("[Find 'something' RETURNING Account]");
|
|
20
|
-
const context = parser.soslLiteral();
|
|
21
|
-
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
22
|
-
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
23
|
-
});
|
|
24
|
-
test('testEmbeddedQuote', () => {
|
|
25
|
-
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)("[Find 'some\\'thing' RETURNING Account]");
|
|
26
|
-
const context = parser.soslLiteral();
|
|
27
|
-
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
28
|
-
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
29
|
-
});
|
|
30
|
-
test('testBracesFail', () => {
|
|
31
|
-
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)("[Find {something} RETURNING Account]");
|
|
32
|
-
const context = parser.soslLiteral();
|
|
33
|
-
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
34
|
-
expect(errorCounter.getNumErrors()).toEqual(1);
|
|
35
|
-
});
|
|
36
|
-
test('testBracesOnAltFormat', () => {
|
|
37
|
-
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)("[Find {something} RETURNING Account]");
|
|
38
|
-
const context = parser.soslLiteralAlt();
|
|
39
|
-
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralAltContext);
|
|
40
|
-
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
41
|
-
});
|
|
42
|
-
test('testQuotesFailOnAltFormat', () => {
|
|
43
|
-
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)("[Find 'something' RETURNING Account]");
|
|
44
|
-
const context = parser.soslLiteralAlt();
|
|
45
|
-
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralAltContext);
|
|
46
|
-
expect(errorCounter.getNumErrors()).toEqual(1);
|
|
47
|
-
});
|
|
48
|
-
test('testWithUserModeQuery', () => {
|
|
49
|
-
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)("[Find 'something' RETURNING Account WITH USER_MODE WITH METADATA='Labels']");
|
|
50
|
-
const context = parser.soslLiteral();
|
|
51
|
-
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
52
|
-
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
53
|
-
});
|
|
54
|
-
test('testWithSystemModeQuery', () => {
|
|
55
|
-
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)("[Find 'something' RETURNING Account WITH METADATA='Labels' WITH SYSTEM_MODE]");
|
|
56
|
-
const context = parser.soslLiteral();
|
|
57
|
-
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
58
|
-
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
59
|
-
});
|
|
60
|
-
test('testToLabel', () => {
|
|
61
|
-
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)("[FIND :searchTerm IN ALL FIELDS RETURNING Account(Id, toLabel(Name)) LIMIT 10]");
|
|
62
|
-
const context = parser.soslLiteral();
|
|
63
|
-
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
64
|
-
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
65
|
-
});
|
|
66
|
-
test('testToLabelWithAlias', () => {
|
|
67
|
-
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)("[FIND :searchTerm IN ALL FIELDS RETURNING Account(Id, toLabel(Name) AliasName) LIMIT 10]");
|
|
68
|
-
const context = parser.soslLiteral();
|
|
69
|
-
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
70
|
-
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
71
|
-
});
|
|
72
|
-
test('testConvertCurrency', () => {
|
|
73
|
-
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)(`[
|
|
74
|
-
FIND 'test' RETURNING Opportunity(
|
|
75
|
-
Name,
|
|
76
|
-
convertCurrency(Amount),
|
|
77
|
-
convertCurrency(Amount) AliasCurrency
|
|
78
|
-
)
|
|
79
|
-
]`);
|
|
80
|
-
const context = parser.soslLiteral();
|
|
81
|
-
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
82
|
-
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
83
|
-
});
|
|
84
|
-
test('testConvertCurrencyWithFormat', () => {
|
|
85
|
-
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)(`[
|
|
86
|
-
FIND 'Acme' RETURNING Account(
|
|
87
|
-
AnnualRevenue,
|
|
88
|
-
FORMAT(convertCurrency(AnnualRevenue)) convertedCurrency
|
|
89
|
-
)
|
|
90
|
-
]`);
|
|
91
|
-
const context = parser.soslLiteral();
|
|
92
|
-
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
93
|
-
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
94
|
-
});
|
|
95
|
-
test('testFormatWithAggregate', () => {
|
|
96
|
-
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)("[ FIND 'Acme' RETURNING Account(AnnualRevenue, FORMAT(MIN(CloseDate))) ]");
|
|
97
|
-
const context = parser.soslLiteral();
|
|
98
|
-
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
99
|
-
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
100
|
-
});
|
|
101
|
-
//# sourceMappingURL=SOSLParserTest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SOSLParserTest.js","sourceRoot":"","sources":["../../src/__tests__/SOSLParserTest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ANTLRErrorListener, RecognitionException, Recognizer, Token } from "antlr4ts";
|
|
2
|
-
import { ApexLexer } from "../ApexLexer";
|
|
3
|
-
import { ApexParser } from "../ApexParser";
|
|
4
|
-
export declare class SyntaxErrorCounter<T = Token> implements ANTLRErrorListener<T> {
|
|
5
|
-
numErrors: number;
|
|
6
|
-
syntaxError(recognizer: Recognizer<T, any>, offendingSymbol: T, line: number, charPositionInLine: number, msg: string, e: RecognitionException | undefined): any;
|
|
7
|
-
getNumErrors(): number;
|
|
8
|
-
}
|
|
9
|
-
export declare function createLexer(input: string, caseInsensitive?: boolean): [ApexLexer, SyntaxErrorCounter<number>];
|
|
10
|
-
export declare function createParser(input: string): [ApexParser, SyntaxErrorCounter];
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createParser = exports.createLexer = exports.SyntaxErrorCounter = void 0;
|
|
4
|
-
/*
|
|
5
|
-
Copyright (c) 2021 Kevin Jones, All rights reserved.
|
|
6
|
-
Redistribution and use in source and binary forms, with or without
|
|
7
|
-
modification, are permitted provided that the following conditions
|
|
8
|
-
are met:
|
|
9
|
-
1. Redistributions of source code must retain the above copyright
|
|
10
|
-
notice, this list of conditions and the following disclaimer.
|
|
11
|
-
2. Redistributions in binary form must reproduce the above copyright
|
|
12
|
-
notice, this list of conditions and the following disclaimer in the
|
|
13
|
-
documentation and/or other materials provided with the distribution.
|
|
14
|
-
3. The name of the author may not be used to endorse or promote products
|
|
15
|
-
derived from this software without specific prior written permission.
|
|
16
|
-
*/
|
|
17
|
-
const antlr4ts_1 = require("antlr4ts");
|
|
18
|
-
const ApexLexer_1 = require("../ApexLexer");
|
|
19
|
-
const ApexParser_1 = require("../ApexParser");
|
|
20
|
-
const CaseInsensitiveInputStream_1 = require("../CaseInsensitiveInputStream");
|
|
21
|
-
class SyntaxErrorCounter {
|
|
22
|
-
constructor() {
|
|
23
|
-
this.numErrors = 0;
|
|
24
|
-
}
|
|
25
|
-
syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) {
|
|
26
|
-
this.numErrors += 1;
|
|
27
|
-
}
|
|
28
|
-
getNumErrors() {
|
|
29
|
-
return this.numErrors;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
exports.SyntaxErrorCounter = SyntaxErrorCounter;
|
|
33
|
-
function createLexer(input, caseInsensitive = true) {
|
|
34
|
-
const stream = antlr4ts_1.CharStreams.fromString(input);
|
|
35
|
-
const lexer = new ApexLexer_1.ApexLexer(caseInsensitive ? new CaseInsensitiveInputStream_1.CaseInsensitiveInputStream(stream) : stream);
|
|
36
|
-
lexer.removeErrorListeners();
|
|
37
|
-
const errorCounter = new SyntaxErrorCounter();
|
|
38
|
-
lexer.addErrorListener(errorCounter);
|
|
39
|
-
return [lexer, errorCounter];
|
|
40
|
-
}
|
|
41
|
-
exports.createLexer = createLexer;
|
|
42
|
-
function createParser(input) {
|
|
43
|
-
const lexer = new ApexLexer_1.ApexLexer(new CaseInsensitiveInputStream_1.CaseInsensitiveInputStream(antlr4ts_1.CharStreams.fromString(input)));
|
|
44
|
-
const tokens = new antlr4ts_1.CommonTokenStream(lexer);
|
|
45
|
-
const parser = new ApexParser_1.ApexParser(tokens);
|
|
46
|
-
parser.removeErrorListeners();
|
|
47
|
-
const errorCounter = new SyntaxErrorCounter();
|
|
48
|
-
parser.addErrorListener(errorCounter);
|
|
49
|
-
return [parser, errorCounter];
|
|
50
|
-
}
|
|
51
|
-
exports.createParser = createParser;
|
|
52
|
-
//# sourceMappingURL=SyntaxErrorCounter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SyntaxErrorCounter.js","sourceRoot":"","sources":["../../src/__tests__/SyntaxErrorCounter.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACH,uCAOkB;AAClB,4CAAyC;AACzC,8CAA2C;AAC3C,8EAA2E;AAE3E,MAAa,kBAAkB;IAA/B;QACI,cAAS,GAAG,CAAC,CAAC;IAgBlB,CAAC;IAdG,WAAW,CACP,UAA8B,EAC9B,eAAkB,EAClB,IAAY,EACZ,kBAA0B,EAC1B,GAAW,EACX,CAAmC;QAEnC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;CACJ;AAjBD,gDAiBC;AAED,SAAgB,WAAW,CACvB,KAAa,EACb,kBAA2B,IAAI;IAE/B,MAAM,MAAM,GAAG,sBAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,qBAAS,CACvB,eAAe,CAAC,CAAC,CAAC,IAAI,uDAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CACpE,CAAC;IAEF,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAU,CAAC;IACtD,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAErC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACjC,CAAC;AAdD,kCAcC;AAED,SAAgB,YAAY,CAAC,KAAa;IACtC,MAAM,KAAK,GAAG,IAAI,qBAAS,CACvB,IAAI,uDAA0B,CAAC,sBAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAChE,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,4BAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,uBAAU,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,CAAC,oBAAoB,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC9C,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAEtC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAClC,CAAC;AAZD,oCAYC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
/*
|
|
13
|
-
* Copyright (c) 2022 FinancialForce.com, inc. All rights reserved.
|
|
14
|
-
*/
|
|
15
|
-
const child_process_1 = require("child_process");
|
|
16
|
-
const fs_1 = require("fs");
|
|
17
|
-
const path_1 = require("path");
|
|
18
|
-
const __1 = require("../..");
|
|
19
|
-
describe("Parse samples", () => {
|
|
20
|
-
// .each runs first before any hooks like beforeAll
|
|
21
|
-
function getSamples() {
|
|
22
|
-
if (!process.env.SAMPLES) {
|
|
23
|
-
throw new Error("Missing environment variable 'SAMPLES' with path to samples.");
|
|
24
|
-
}
|
|
25
|
-
const sampleDir = (0, path_1.resolve)(process.env.SAMPLES);
|
|
26
|
-
return (0, fs_1.readdirSync)(sampleDir)
|
|
27
|
-
.filter(f => !(/(^|\/)\.[^\/\.]/g).test(f)) // not hidden
|
|
28
|
-
.map(f => (0, path_1.resolve)(sampleDir, f)) // full path
|
|
29
|
-
.filter(f => (0, fs_1.lstatSync)(f).isDirectory())
|
|
30
|
-
.map(d => [(0, path_1.basename)(d), d]);
|
|
31
|
-
}
|
|
32
|
-
// disable jest wrapped logging
|
|
33
|
-
const jestConsole = console;
|
|
34
|
-
beforeEach(() => {
|
|
35
|
-
global.console = require("console");
|
|
36
|
-
});
|
|
37
|
-
afterEach(() => {
|
|
38
|
-
global.console = jestConsole;
|
|
39
|
-
});
|
|
40
|
-
test.each(getSamples())("Sample: %s", (_name, path) => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
-
const result = yield (0, __1.checkProject)(path);
|
|
42
|
-
expect(result).toMatchSnapshot();
|
|
43
|
-
// run the jvm version of check over same dirs
|
|
44
|
-
result.forEach(r => {
|
|
45
|
-
const jvmCheck = (0, child_process_1.spawnSync)("java", [
|
|
46
|
-
"-cp",
|
|
47
|
-
"jvm/target/dependency/*:jvm/target/apex-parser.jar",
|
|
48
|
-
"io.github.apexdevtools.apexparser.Check",
|
|
49
|
-
(0, path_1.resolve)(path, r.path)
|
|
50
|
-
], {
|
|
51
|
-
// can only be run from npm dir
|
|
52
|
-
cwd: (0, path_1.resolve)(process.cwd(), ".."),
|
|
53
|
-
timeout: 10000
|
|
54
|
-
});
|
|
55
|
-
const errors = [];
|
|
56
|
-
const logs = [];
|
|
57
|
-
// either >1 or null, truthy check not enough
|
|
58
|
-
if (jvmCheck.status || jvmCheck.status == null) {
|
|
59
|
-
logs.push(...jvmCheck.stderr.toString("utf8").split("\n"));
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
jvmCheck.stdout
|
|
63
|
-
.toString("utf8")
|
|
64
|
-
.split("\n")
|
|
65
|
-
.forEach(l => (l.startsWith("{") ? errors : logs).push(l));
|
|
66
|
-
}
|
|
67
|
-
console.log(logs.filter(l => l).map(s => `(JVM) ${s}`).join("\n"));
|
|
68
|
-
// catch unexpected failures or timeouts
|
|
69
|
-
expect(jvmCheck.status).toEqual(r.status);
|
|
70
|
-
// match syntax errors to snapshot value
|
|
71
|
-
expect(errors.map(j => JSON.parse(j))).toMatchObject(r.errors);
|
|
72
|
-
});
|
|
73
|
-
}), 15000);
|
|
74
|
-
});
|
|
75
|
-
//# sourceMappingURL=SampleParseSys.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SampleParseSys.js","sourceRoot":"","sources":["../../../src/__tests__/system/SampleParseSys.ts"],"names":[],"mappings":"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"}
|