From acb3888c4afd676fc6226dbb2927c13948e18878 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Mon, 3 Jun 2024 11:05:16 +0300 Subject: [PATCH] fix: Resolve merge conflicts --- src/linter/ui5Types/SourceFileLinter.ts | 5 +- test/lib/linter/_linterHelper.ts | 5 +- .../rules/snapshots/AsyncComponentFlags.ts.md | 306 ++++++++++-------- .../snapshots/AsyncComponentFlags.ts.snap | Bin 1068 -> 1904 bytes .../rules/snapshots/NoPseudoModules.ts.md | 2 +- .../rules/snapshots/NoPseudoModules.ts.snap | Bin 771 -> 781 bytes test/lib/linter/snapshots/linter.ts.md | 28 +- test/lib/linter/snapshots/linter.ts.snap | Bin 8520 -> 8326 bytes 8 files changed, 172 insertions(+), 174 deletions(-) diff --git a/src/linter/ui5Types/SourceFileLinter.ts b/src/linter/ui5Types/SourceFileLinter.ts index 7c34f60e9..074c8f54e 100644 --- a/src/linter/ui5Types/SourceFileLinter.ts +++ b/src/linter/ui5Types/SourceFileLinter.ts @@ -3,7 +3,6 @@ import path from "node:path/posix"; import SourceFileReporter from "./SourceFileReporter.js"; import LinterContext, {ResourcePath, CoverageCategory, LintMessageSeverity} from "../LinterContext.js"; import {RULES, MESSAGES, formatMessage} from "../linterReporting.js"; -import fs from "node:fs/promises"; import analyzeComponentJson from "./asyncComponentFlags.js"; interface DeprecationInfo { @@ -28,8 +27,8 @@ export default class SourceFileLinter { constructor( context: LinterContext, resourcePath: ResourcePath, sourceFile: ts.SourceFile, sourceMap: string | undefined, checker: ts.TypeChecker, - reportCoverage: boolean | undefined = false, messageDetails: boolean | undefined = false, manifestContent?: string | undefined, - dataTypes: Record | undefined + reportCoverage: boolean | undefined = false, messageDetails: boolean | undefined = false, + dataTypes: Record | undefined, manifestContent?: string | undefined ) { this.#resourcePath = resourcePath; this.#sourceFile = sourceFile; diff --git a/test/lib/linter/_linterHelper.ts b/test/lib/linter/_linterHelper.ts index ced82d69e..2f859ea30 100644 --- a/test/lib/linter/_linterHelper.ts +++ b/test/lib/linter/_linterHelper.ts @@ -30,12 +30,13 @@ export async function esmockDeprecationText() { sourceMap: string | undefined, checker: TypeChecker, reportCoverage: boolean | undefined = false, messageDetails: boolean | undefined = false, - dataTypes: Record, + dataTypes: Record, manifestContent?: string | undefined ) { // Don't use sinon's stubs as it's hard to clean after them in this case and it leaks memory. const linter = new SourceFileLinter( - context, filePath, sourceFile, sourceMap, checker, reportCoverage, messageDetails, dataTypes, manifestContent + context, filePath, sourceFile, sourceMap, checker, reportCoverage, + messageDetails, dataTypes, manifestContent ); linter.getDeprecationText = () => "Deprecated test message"; return linter; diff --git a/test/lib/linter/rules/snapshots/AsyncComponentFlags.ts.md b/test/lib/linter/rules/snapshots/AsyncComponentFlags.ts.md index 36c36f6dc..d82e185d1 100644 --- a/test/lib/linter/rules/snapshots/AsyncComponentFlags.ts.md +++ b/test/lib/linter/rules/snapshots/AsyncComponentFlags.ts.md @@ -11,17 +11,10 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, + errorCount: 0, + fatalErrorCount: 0, filePath: 'Component.js', - messages: [ - { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', - severity: 2, - }, - ], + messages: [], warningCount: 0, }, ] @@ -33,17 +26,10 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, + errorCount: 0, + fatalErrorCount: 0, filePath: 'Component.js', - messages: [ - { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', - severity: 2, - }, - ], + messages: [], warningCount: 0, }, ] @@ -55,17 +41,10 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, + errorCount: 0, + fatalErrorCount: 0, filePath: 'Component.js', - messages: [ - { - fatal: true, - message: 'Unexpected token undefined in JSON at position 0', - ruleId: 'ui5-linter-parsing-error', - severity: 2, - }, - ], + messages: [], warningCount: 0, }, ] @@ -92,17 +71,10 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, + errorCount: 0, + fatalErrorCount: 0, filePath: 'Component.js', - messages: [ - { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', - severity: 2, - }, - ], + messages: [], warningCount: 0, }, ] @@ -114,17 +86,10 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, + errorCount: 0, + fatalErrorCount: 0, filePath: 'Component.js', - messages: [ - { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', - severity: 2, - }, - ], + messages: [], warningCount: 0, }, ] @@ -136,17 +101,10 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, + errorCount: 0, + fatalErrorCount: 0, filePath: 'Component.js', - messages: [ - { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', - severity: 2, - }, - ], + messages: [], warningCount: 0, }, ] @@ -158,17 +116,10 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, + errorCount: 0, + fatalErrorCount: 0, filePath: 'Component.js', - messages: [ - { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', - severity: 2, - }, - ], + messages: [], warningCount: 0, }, ] @@ -180,17 +131,10 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, + errorCount: 0, + fatalErrorCount: 0, filePath: 'Component.ts', - messages: [ - { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', - severity: 2, - }, - ], + messages: [], warningCount: 0, }, ] @@ -202,17 +146,10 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, + errorCount: 0, + fatalErrorCount: 0, filePath: 'Component.ts', - messages: [ - { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', - severity: 2, - }, - ], + messages: [], warningCount: 0, }, ] @@ -225,13 +162,16 @@ Generated by [AVA](https://avajs.dev). { coverageInfo: [], errorCount: 1, - fatalErrorCount: 1, + fatalErrorCount: 0, filePath: 'Component.js', messages: [ { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', + column: 9, + fatal: undefined, + line: 6, + message: 'Component Root View and Routing are not configured to load their modules asynchronously.', + messageDetails: 'Use Asynchronous Loading (https://ui5.sap.com/#/topic/676b636446c94eada183b1218a824717). Implement sap.ui.core.IAsyncContentCreation interface in Component.js or set the "async" flags for "sap.ui5/routing/config" and "sap.ui5/rootView" in the component manifest.', + ruleId: 'ui5-linter-async-component-flags', severity: 2, }, ], @@ -246,17 +186,37 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, - filePath: 'Component.js', + errorCount: 0, + fatalErrorCount: 0, + filePath: 'manifest.json', messages: [ { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', - severity: 2, + column: 12, + line: 18, + message: 'Component implements the sap.ui.core.IAsyncContentCreation interface. The redundant "async" flag for "sap.ui5/rootView" should be removed from the component manifest', + messageDetails: 'sap.ui.core.IAsyncContentCreation (https://ui5.sap.com/1.120/#/api/sap.ui.core.IAsyncContentCreation)', + pos: 325, + ruleId: 'ui5-linter-async-component-flags', + severity: 1, + }, + { + column: 16, + line: 29, + message: 'Component implements the sap.ui.core.IAsyncContentCreation interface. The redundant "async" flag for "sap.ui5/routing/config" should be removed from the component manifest', + messageDetails: 'sap.ui.core.IAsyncContentCreation (https://ui5.sap.com/1.120/#/api/sap.ui.core.IAsyncContentCreation)', + pos: 551, + ruleId: 'ui5-linter-async-component-flags', + severity: 1, }, ], + warningCount: 2, + }, + { + coverageInfo: [], + errorCount: 0, + fatalErrorCount: 0, + filePath: 'Component.js', + messages: [], warningCount: 0, }, ] @@ -293,18 +253,30 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, + errorCount: 0, + fatalErrorCount: 0, filePath: 'Component.js', messages: [ { - fatal: true, - message: 'Unexpected token undefined in JSON at position 0', - ruleId: 'ui5-linter-parsing-error', - severity: 2, + column: 9, + fatal: undefined, + line: 6, + message: 'Component implements the sap.ui.core.IAsyncContentCreation interface. The redundant "async" flag for "sap.ui5/rootView" should be removed from the component manifest', + messageDetails: 'sap.ui.core.IAsyncContentCreation (https://ui5.sap.com/1.120/#/api/sap.ui.core.IAsyncContentCreation)', + ruleId: 'ui5-linter-async-component-flags', + severity: 1, + }, + { + column: 9, + fatal: undefined, + line: 6, + message: 'Component implements the sap.ui.core.IAsyncContentCreation interface. The redundant "async" flag for "sap.ui5/routing/config" should be removed from the component manifest', + messageDetails: 'sap.ui.core.IAsyncContentCreation (https://ui5.sap.com/1.120/#/api/sap.ui.core.IAsyncContentCreation)', + ruleId: 'ui5-linter-async-component-flags', + severity: 1, }, ], - warningCount: 0, + warningCount: 2, }, ] @@ -315,18 +287,21 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, + errorCount: 0, + fatalErrorCount: 0, filePath: 'Component.js', messages: [ { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', - severity: 2, + column: 9, + fatal: undefined, + line: 6, + message: 'Component implements the sap.ui.core.IAsyncContentCreation interface. The redundant "async" flag for "sap.ui5/rootView" should be removed from the component manifest', + messageDetails: 'sap.ui.core.IAsyncContentCreation (https://ui5.sap.com/1.120/#/api/sap.ui.core.IAsyncContentCreation)', + ruleId: 'ui5-linter-async-component-flags', + severity: 1, }, ], - warningCount: 0, + warningCount: 1, }, ] @@ -337,18 +312,39 @@ Generated by [AVA](https://avajs.dev). [ { coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, + errorCount: 0, + fatalErrorCount: 0, + filePath: 'manifest.json', + messages: [ + { + column: 12, + line: 19, + message: 'Component implements the sap.ui.core.IAsyncContentCreation interface. The redundant "async" flag for "sap.ui5/rootView" should be removed from the component manifest', + messageDetails: 'sap.ui.core.IAsyncContentCreation (https://ui5.sap.com/1.120/#/api/sap.ui.core.IAsyncContentCreation)', + pos: 341, + ruleId: 'ui5-linter-async-component-flags', + severity: 1, + }, + ], + warningCount: 1, + }, + { + coverageInfo: [], + errorCount: 0, + fatalErrorCount: 0, filePath: 'Component.js', messages: [ { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', - severity: 2, + column: 9, + fatal: undefined, + line: 7, + message: 'Component does not specify that it uses the descriptor via the manifest.json file', + messageDetails: 'A manifest.json has been found in the same directory as the component. Although it will be used at runtime automatically, this should still be expressed in the metadata of the component class (https://ui5.sap.com/#/topic/0187ea5e2eff4166b0453b9dcc8fc64f).', + ruleId: 'ui5-linter-async-component-flags', + severity: 1, }, ], - warningCount: 0, + warningCount: 1, }, ] @@ -360,13 +356,16 @@ Generated by [AVA](https://avajs.dev). { coverageInfo: [], errorCount: 1, - fatalErrorCount: 1, + fatalErrorCount: 0, filePath: 'Component.js', messages: [ { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', + column: 9, + fatal: undefined, + line: 6, + message: 'Component Root View is not configured to load its views asynchronously.', + messageDetails: 'Use Asynchronous Loading (https://ui5.sap.com/#/topic/676b636446c94eada183b1218a824717). Implement sap.ui.core.IAsyncContentCreation interface in Component.js or set the "async" flag for "sap.ui5/rootView" in the component manifest.', + ruleId: 'ui5-linter-async-component-flags', severity: 2, }, ], @@ -382,13 +381,16 @@ Generated by [AVA](https://avajs.dev). { coverageInfo: [], errorCount: 1, - fatalErrorCount: 1, + fatalErrorCount: 0, filePath: 'Component.js', messages: [ { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', + column: 9, + fatal: undefined, + line: 6, + message: 'Component Routing is not configured to load its targets asynchronously.', + messageDetails: 'Use Asynchronous Loading (https://ui5.sap.com/#/topic/676b636446c94eada183b1218a824717). Implement sap.ui.core.IAsyncContentCreation interface in Component.js or set the "async" flag for "sap.ui5/routing/config" in the component manifest.', + ruleId: 'ui5-linter-async-component-flags', severity: 2, }, ], @@ -404,13 +406,16 @@ Generated by [AVA](https://avajs.dev). { coverageInfo: [], errorCount: 1, - fatalErrorCount: 1, + fatalErrorCount: 0, filePath: 'Component.js', messages: [ { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', + column: 9, + fatal: undefined, + line: 6, + message: 'Component Root View and Routing are not configured to load their modules asynchronously.', + messageDetails: 'Use Asynchronous Loading (https://ui5.sap.com/#/topic/676b636446c94eada183b1218a824717). Implement sap.ui.core.IAsyncContentCreation interface in Component.js or set the "async" flags for "sap.ui5/routing/config" and "sap.ui5/rootView" in the component manifest.', + ruleId: 'ui5-linter-async-component-flags', severity: 2, }, ], @@ -426,13 +431,16 @@ Generated by [AVA](https://avajs.dev). { coverageInfo: [], errorCount: 1, - fatalErrorCount: 1, + fatalErrorCount: 0, filePath: 'Component.js', messages: [ { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', + column: 9, + fatal: undefined, + line: 5, + message: 'Component Root View and Routing are not configured to load their modules asynchronously.', + messageDetails: 'Use Asynchronous Loading (https://ui5.sap.com/#/topic/676b636446c94eada183b1218a824717). Implement sap.ui.core.IAsyncContentCreation interface in Component.js or set the "async" flags for "sap.ui5/routing/config" and "sap.ui5/rootView" in the component manifest.', + ruleId: 'ui5-linter-async-component-flags', severity: 2, }, ], @@ -448,16 +456,28 @@ Generated by [AVA](https://avajs.dev). { coverageInfo: [], errorCount: 1, - fatalErrorCount: 1, + fatalErrorCount: 0, filePath: 'Component.ts', messages: [ { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', + column: 1, + fatal: undefined, + line: 5, + message: 'Component does not specify that it uses the descriptor via the manifest.json file', + messageDetails: 'A manifest.json has been found in the same directory as the component. Although it will be used at runtime automatically, this should still be expressed in the metadata of the component class (https://ui5.sap.com/#/topic/0187ea5e2eff4166b0453b9dcc8fc64f).', + ruleId: 'ui5-linter-async-component-flags', + severity: 1, + }, + { + column: 1, + fatal: undefined, + line: 5, + message: 'Component Root View and Routing are not configured to load their modules asynchronously.', + messageDetails: 'Use Asynchronous Loading (https://ui5.sap.com/#/topic/676b636446c94eada183b1218a824717). Implement sap.ui.core.IAsyncContentCreation interface in Component.ts or set the "async" flags for "sap.ui5/routing/config" and "sap.ui5/rootView" in the component manifest.', + ruleId: 'ui5-linter-async-component-flags', severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, ] diff --git a/test/lib/linter/rules/snapshots/AsyncComponentFlags.ts.snap b/test/lib/linter/rules/snapshots/AsyncComponentFlags.ts.snap index e5ec07ef4290cc794d985e29ebfdb9320669d5c8..ca20a835d1b9eb34b9bba1172fb9ba6d742af7e8 100644 GIT binary patch literal 1904 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 literal 1068 zcmV+{1k?LLRzVFW4u#&9{@fBfcpUO0|5L6 z080q)8jcE;uJ7!UZ_%54U0hrQJO@|;Jde1I059MIU~vi0`f86f@6nbF6<`%Epf_H3 zhO}0CQ^nGzKNXUx9ND58a?7K)W^GmpMMO8a?N3JCRD+?CByD5Yq;uMxnp0&!#_%4Q zOqsL$TuUK)Q$r;kInup_Bi*Z@_ay?{!=o)O9N*$^aMa@Bj|lJ+0{o5uT@OHdnbsB` zX>B1h*<#w7bjhn`)|E#GI9|S3`%tCD*kR3&YD^d=m1TQ85&?VXz3bbV5+xl+v=xjO zUyQ|CJrdHAt`E63LiXzE*~^{@Lwlr!Js6!S?+JQWoL;9lw|ZBP(R<(N&6nP*9>Aw3 zt9SX9q)&$ATMC#}cSy2W1{4ZO0TVLC%eZAjWrP(2YfnoV=8~M0eRy`9UZ*#=db>`q)0rSuJ zn_ImbPVY>;*6ICk>TNAMy-sh=^xjDSnR0QHdvnOQUKckxz4_I9Ox#p>^O@^?2mp%+ z@anvJ-#uZyPw^+cI4Qh$|1A8~e0aYe*-fP^dtcB#<1%13RcwXqF|H}SB77x7 z(TjDOZLvu4fZ09?%?2unBQlJe1L^m*k}5XQK_fHn`O&yn$#M~y(a&B9Zy91&rgml5 z6c3VtU+G&rG?$yrSgbV+A2xh7XkKhuH57ic)9vhZRy*x>$KPlZ4|r>Rb*Ht`TIcI4 z?QW}kslm1e!-xjSfh9Y~qTwq|jjeR7O(iW!yQzt%NnCmXhuo(mr<-QRlxBu(a;U79 z9$}4z5$_omD$Qz#mDig3uvyK+Ce_jgPOVfnX=^Pho)q#YEgx_xLNYent;}79P2FYE zNz^AL>gjC$#@*(aM9_uXd3#o#=5YHj$}TAVA5cEEuYE2kb$auw*9E0cZ+`Ww;3JH^+KiP&!+$i~0Xmy?+2uPB;NyIsgF9p#awa diff --git a/test/lib/linter/rules/snapshots/NoPseudoModules.ts.md b/test/lib/linter/rules/snapshots/NoPseudoModules.ts.md index f474c729f..b7fe17a34 100644 --- a/test/lib/linter/rules/snapshots/NoPseudoModules.ts.md +++ b/test/lib/linter/rules/snapshots/NoPseudoModules.ts.md @@ -37,7 +37,7 @@ Generated by [AVA](https://avajs.dev). column: 2, fatal: undefined, line: 4, - message: 'Deprecated access to enum pseudo module \'sap/ui/core/CSSSize\'', + message: 'Deprecated access to DataType pseudo module \'sap/ui/core/CSSSize\'', messageDetails: 'Migrating Access to Pseudo Modules (https://ui5.sap.com/#/topic/00737d6c1b864dc3ab72ef56611491c4)', ruleId: 'ui5-linter-no-pseudo-modules', severity: 2, diff --git a/test/lib/linter/rules/snapshots/NoPseudoModules.ts.snap b/test/lib/linter/rules/snapshots/NoPseudoModules.ts.snap index a263294a63a814234cd282a17e98026a101decd6..b749d56bb48eeb069972c22a680ef89a5fc3d317 100644 GIT binary patch literal 781 zcmV+o1M>VqRzV zxekrD?H`K>00000000B+mCI@rK@^7n)6+fEMB^mhHVM+G5CxM?%*_N5Vil1ni~)$myi*fn4N@)%kQ(lb|wok(JH0aiyf1lu2aL zA$#@LvZ7pLhJ~kd%aB{;)|C!@dNBFj!Q2Mdn$@|^CELElR3xH$>wa#F zgoPFfU9uk%@R)$71U#cwz3sf-g;ej?lh?iR2_<>a1KgHCf45jMHW#7@vKE(|aq0WZcjHoMS zL{#@CzV5MBZC1x*PPQ-9;C?dmEZzOxyF4nttv3xDNnlExC%>t3H*bvSXGwkAW%(r?yla)$E+~EHLpUjXC zZf3|=BVK1lEbkzVxfkoVVOxH0G`?6iW}d^miP3Q$zj& LiRYg>ZV3PYu6udl literal 771 zcmV+e1N{6!RzVf=r+cPJG?Vz+M5Iwc1(VL0x2UL5B;X4M7osRN z-8GYnJzYapbrJ;;1;4XdtzR-V)$6T@Kpm$cD*E|X385t%K*MqZK=$N(ij5PZ8qcCKKT`XNF zpoGPbT(b59H~?TX75m6JrWCtQlttxo8Po+LP&d(`tf({(;3j|v0A2$42w)olL)30m zJXf3Lfg$T#*xTC++6XFwdWfn7Y@q_k>7xySoa2f$_;g&CpfWa-m92GgrKFmYNo>+7 zd-2ziQLZz?qLaBaMCX0nM*%aKYCCVx1X+vHla2G_Y}8|ImcMcnAz&+UM) z&;g-K_Co?56Y!LPXVi(eoyWV7;{AqFyt|3WLPo;T#n4)8>E5z{yB6@o0$y3bI}4aB z0Iv(cmqLySr;`bn-0e27(*};(z-1d)uz|NWaK!=cJGt`WvhwE+@X7(+JHRIg*jfZs z5%^pLMoYQ!(lQ;Ca-bFi870lQ&9aqSbyAkoQE6jt&5lIOSEwtsDa^)4PVkoE0W&=G zSP*cnJtI9HCrz)F%E4=_5B=C$SK?VT~Er4RakB1Q)_YYhgn>F@H5Y>B`h8X6xS566N^ZDMRB42D^4 z`~a_yj*V3+Ba@Y2WM3XTl|+0x%!b<&F**>5*l;xv%Ymhf4J=(OuVq*BIj)4c{vE(| zBPaiK*G5j$KP|MW@)lFfNTvUivnF!v-;i^7RWE0%TCIv3{9oWEGvnPWneo+_H<%G~ z{HLx=_x`FYzX0$7zzzZ?{?wH(t=5(EcDqVb?*9d1=>g~0$DLO+ Snapshot 1 [ - { - coverageInfo: [], - errorCount: 1, - fatalErrorCount: 1, - filePath: 'webapp/Component.js', - messages: [ - { - fatal: true, - message: '"[object Object]" is not valid JSON', - ruleId: 'ui5-linter-parsing-error', - severity: 2, - }, - ], - warningCount: 0, - }, { coverageInfo: [], errorCount: 2, diff --git a/test/lib/linter/snapshots/linter.ts.snap b/test/lib/linter/snapshots/linter.ts.snap index 7f0ebfd4e70bf728ec1db835cd414cf901610062..65af0360b95287433d2fc250af2a1d0815021c54 100644 GIT binary patch literal 8326 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 Q+(q&K0dXb(VY|Hm033Wf4gdfE literal 8520 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 C{-e79