From 63e59e890624cce698d767cb9b93986ecec616f2 Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Mon, 16 Sep 2024 14:13:27 +0200 Subject: [PATCH] test: Add fixture for directives JIRA: CPOUI5FOUNDATION-911 --- .../linter/rules/Directives/Directives.js | 97 +++++++ .../linter/rules/Directives/Directives.ts | 1 + test/lib/linter/rules/Directives.ts | 5 + .../linter/rules/snapshots/Directives.ts.md | 266 ++++++++++++++++++ .../linter/rules/snapshots/Directives.ts.snap | Bin 0 -> 2007 bytes 5 files changed, 369 insertions(+) create mode 100644 test/fixtures/linter/rules/Directives/Directives.js create mode 100644 test/fixtures/linter/rules/Directives/Directives.ts create mode 100644 test/lib/linter/rules/Directives.ts create mode 100644 test/lib/linter/rules/snapshots/Directives.ts.md create mode 100644 test/lib/linter/rules/snapshots/Directives.ts.snap diff --git a/test/fixtures/linter/rules/Directives/Directives.js b/test/fixtures/linter/rules/Directives/Directives.js new file mode 100644 index 00000000..7e01c379 --- /dev/null +++ b/test/fixtures/linter/rules/Directives/Directives.js @@ -0,0 +1,97 @@ +sap.ui.define([ + "sap/m/Button", "sap/m/DateTimeInput", "sap/base/util/includes", "sap/ui/Device", "sap/ui/core/library", "sap/ui/generic/app/navigation/service/NavigationHandler", + "sap/ui/table/Table", "sap/ui/table/plugins/MultiSelectionPlugin", "sap/ui/core/Configuration", "sap/m/library" +], function(Button, DateTimeInput, includes, Device, coreLib, NavigationHandler, Table, MultiSelectionPlugin, Configuration, mobileLib) { + + // ui5lint-disable-next-line no-deprecated-api + var dateTimeInput = new DateTimeInput(); // IGNORE: Control is deprecated. A finding only appears for the module dependency, not for the usage. + + var btn = new Button({ + blocked: true, // ui5lint-disable-line no-deprecated-parameter -- IGNORE: Property "blocked" is deprecated + // ui5lint-disable-next-line no-deprecated-parameter + tap: () => console.log("Tapped") // IGNORE: Event "tap" is deprecated + }); + + /* ui5lint-disable */ + btn.attachTap(function() { // IGNORE: Method "attachTap" is deprecated + console.log("Tapped"); + }); + /* ui5lint-enable */ + + btn.attachTap(function() { // REPORT + console.log("Tapped"); + }); + + /* ui5lint-disable + no-deprecated-parameter, + no-deprecated-api + */ + var table = new Table({ + plugins: [ // IGNORE: Aggregation "plugins" is deprecated + new MultiSelectionPlugin() + ], + groupBy: "some-column" // IGNORE: Association "groupBy" is deprecated + }); + /* ui5lint-enable no-deprecated-parameter */ + + includes([1], 1); // IGNORE: Function "includes" is deprecated + + const getIncludesFunction = () => includes; + getIncludesFunction()([1], 1); // IGNORE: Function "includes" is deprecated + /* ui5lint-enable */ + + includes([1], 1); // REPORT: Function "includes" is deprecated + + /* ui5lint-disable-next-line */ + Configuration.getCompatibilityVersion("sapMDialogWithPadding"); // IGNORE: Method "getCompatibilityVersion" is deprecated + /* ui5lint-disable-next-line */ + Configuration["getCompatibilityVersion"]("sapMDialogWithPadding"); // IGNORE: Method "getCompatibilityVersion" is deprecated + + /* ui5lint-disable-next-line no-deprecated-property */ + Device.browser.webview; // IGNORE: "webview" is deprecated + // ui5lint-disable-next-line no-deprecated-property + Device.browser["webview"]; // IGNORE: "webview" is deprecated + + Device.browser["webview"]; // REPORT: "webview" is deprecated + + // ui5lint-disable-next-line no-deprecated-property + Configuration.AnimationMode; // IGNORE: Property "AnimationMode" (Enum) is deprecated + + // ui5lint-disable-next-line no-deprecated-property + coreLib.MessageType; // IGNORE: Enum "MessageType" is deprecated + + // ui5lint-disable-next-line no-deprecated-property -- Followed by an intentionally Empty line + coreLib.MessageType; // REPORT: Enum "MessageType" is deprecated + + // ui5lint-disable-next-line no-deprecated-property + let {BarColor, MessageType} = coreLib; // IGNORE: Enum "MessageType" is deprecated + // ui5lint-disable-next-line no-deprecated-property + ({MessageType} = coreLib); // IGNORE: Enum "MessageType" is deprecated + MessageType.Error; + + // ui5lint-disable-next-line no-deprecated-property + let {BarColor, MessageType: mt} = coreLib; // IGNORE: Enum "MessageType" is deprecated + // ui5lint-disable-next-line no-deprecated-property + ({BarColor, MessageType: mt} = coreLib); // IGNORE: Enum "MessageType" is deprecated + mt.Error; + + // ui5lint-disable-next-line no-deprecated-property + mobileLib.InputType.Date; // IGNORE: Enum value "InputType.Date" is deprecated + + const navigationHandler = new NavigationHandler({}); + // ui5lint-disable-next-line no-deprecated-property, no-deprecated-api + navigationHandler.storeInnerAppState({}); // IGNORE: Method "storeInnerAppState" is deprecated + + + // ui5lint-disable no-deprecated-property, no-global + new sap.m.Button({ // IGNORE: Global variable "sap" + blocked: true, // IGNORE: Property "blocked" is deprecated + tap: () => console.log("Tapped") // IGNORE: Event "tap" is deprecated + }); + // ui5lint-enable + + new sap.m.Button({ // REPORT: Global variable "sap" + blocked: true, // REPORT: Property "blocked" is deprecated + tap: () => console.log("Tapped") // REPORT: Event "tap" is deprecated + }); +}); diff --git a/test/fixtures/linter/rules/Directives/Directives.ts b/test/fixtures/linter/rules/Directives/Directives.ts new file mode 100644 index 00000000..ed1062d2 --- /dev/null +++ b/test/fixtures/linter/rules/Directives/Directives.ts @@ -0,0 +1 @@ +// TODO: TS version of Directives.js \ No newline at end of file diff --git a/test/lib/linter/rules/Directives.ts b/test/lib/linter/rules/Directives.ts new file mode 100644 index 00000000..103ec030 --- /dev/null +++ b/test/lib/linter/rules/Directives.ts @@ -0,0 +1,5 @@ +import {fileURLToPath} from "node:url"; +import {runLintRulesTests} from "../_linterHelper.js"; + +const filePath = fileURLToPath(import.meta.url); +runLintRulesTests(filePath); diff --git a/test/lib/linter/rules/snapshots/Directives.ts.md b/test/lib/linter/rules/snapshots/Directives.ts.md new file mode 100644 index 00000000..bc14e3be --- /dev/null +++ b/test/lib/linter/rules/snapshots/Directives.ts.md @@ -0,0 +1,266 @@ +# Snapshot report for `test/lib/linter/rules/Directives.ts` + +The actual snapshot is saved in `Directives.ts.snap`. + +Generated by [AVA](https://avajs.dev). + +## General: Directives.js + +> Snapshot 1 + + [ + { + coverageInfo: [], + errorCount: 29, + fatalErrorCount: 0, + filePath: 'Directives.js', + messages: [ + { + column: 18, + line: 2, + message: 'Import of deprecated module \'sap/m/DateTimeInput\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 41, + line: 2, + message: 'Import of deprecated module \'sap/base/util/includes\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 107, + line: 2, + message: 'Import of deprecated module \'sap/ui/generic/app/navigation/service/NavigationHandler\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 69, + line: 3, + message: 'Import of deprecated module \'sap/ui/core/Configuration\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 3, + line: 10, + message: 'Use of deprecated property \'blocked\' of class \'Button\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 3, + line: 12, + message: 'Use of deprecated property \'tap\' of class \'Button\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 6, + line: 16, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 6, + line: 21, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 3, + line: 30, + message: 'Use of deprecated property \'plugins\' of class \'Table\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 3, + line: 33, + message: 'Use of deprecated property \'groupBy\' of class \'Table\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 2, + line: 37, + message: 'Call to deprecated function \'includes\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 2, + line: 40, + message: 'Call to deprecated function \'getIncludesFunction()\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 2, + line: 43, + message: 'Call to deprecated function \'includes\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 16, + line: 46, + message: 'Call to deprecated function \'getCompatibilityVersion\' of class \'Configuration\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 16, + line: 48, + message: 'Call to deprecated function \'getCompatibilityVersion\' of class \'Configuration\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 2, + line: 51, + message: 'Use of deprecated property \'webview\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-property', + severity: 2, + }, + { + column: 2, + line: 53, + message: 'Use of deprecated property \'webview\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-property', + severity: 2, + }, + { + column: 2, + line: 55, + message: 'Use of deprecated property \'webview\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-property', + severity: 2, + }, + { + column: 2, + line: 58, + message: 'Use of deprecated property \'AnimationMode\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-property', + severity: 2, + }, + { + column: 2, + line: 61, + message: 'Use of deprecated property \'MessageType\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-property', + severity: 2, + }, + { + column: 2, + line: 64, + message: 'Use of deprecated property \'MessageType\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-property', + severity: 2, + }, + { + column: 17, + line: 67, + message: 'Use of deprecated API \'MessageType\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 4, + line: 69, + message: 'Use of deprecated API \'MessageType\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 30, + line: 73, + message: 'Use of deprecated API \'mt\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 14, + line: 75, + message: 'Use of deprecated API \'MessageType\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 2, + line: 79, + message: 'Use of deprecated property \'Date\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-property', + severity: 2, + }, + { + column: 20, + line: 83, + message: 'Call to deprecated function \'storeInnerAppState\' of class \'NavigationHandler\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 6, + line: 87, + message: 'Access of global variable \'sap\' (sap.m.Button)', + ruleId: 'no-globals', + severity: 2, + }, + { + column: 6, + line: 93, + message: 'Access of global variable \'sap\' (sap.m.Button)', + ruleId: 'no-globals', + severity: 2, + }, + ], + warningCount: 0, + }, + ] + +## General: Directives.ts + +> Snapshot 1 + + [ + { + coverageInfo: [], + errorCount: 0, + fatalErrorCount: 0, + filePath: 'Directives.ts', + messages: [], + warningCount: 0, + }, + ] diff --git a/test/lib/linter/rules/snapshots/Directives.ts.snap b/test/lib/linter/rules/snapshots/Directives.ts.snap new file mode 100644 index 0000000000000000000000000000000000000000..b56b50101891773133002cb860d0383481a523a0 GIT binary patch literal 2007 zcmV;|2PpVKRzV6qywX+$cB-xIcEc~>sMX4K z7Od%pKOc(-00000000B+nt5y-R{@8=nf3bEUGL#tdwqL-uAMaAB&CFg({XyNsyM0Q zltUmo-W_iy8P9BHW^GxJQa};qpK`QN0U~OlAXP{$(4x?aQvRqwDo`Pz2&ANK1QMcv zs-i{(RMgU$*p2-r-HmbpcCvr{cIJI==Y4PA%$u3_!0e1}77p5<`IhQvj;_w%q#CNF z=-V?pHA^ix+PrFyAFwssP|Egx)3HDOK(VMe%7@4P9iRdCBQ;9$HNaLNDb**W;Dlu< zi;}dQVzC%f2uVT;OVWFmp@s$EFz^lFN#Kt_LV}IbQbqN=DcbtB{gr%nn*E{lDxbxq*|6~O_~+M@ix^-Jwl1ttl}v84MH)5 zQjN2kuI^Es{mUDgS4r}Y>A;F(YMfJTTPdlwP)}q*u?)>9t^TRTRrUg_>@`ZgZ%7c7 zAtpno48t;Pmf_tp+$h7XGJI5qk_?s%hh?}+hI?cN#-tZtaAV4gosA&1dU2l{+r0QiH>SP#OEFnNh7(~3M+CIqhi;6(mI&;Qz`+Qdia>8OOf?H=gAX;D!D)ssH^alt5RAfP6zr&g zHu}(eqVTmS9E-wlqc9eOQVi~k322iKJr;u}V{jq{|A;|84xfv|vABSSeCY4u@LU{T zi$gjADC!nqc23p{KEpT589B+YOQa~dnuI5k@XsWS zrUbOvhu)lmsTAlbxGM$ErJ$=7ZfOdidT4#jr3w_QLJKJ>A6c%mJC-wvnS zVWtD_?||QQ2xyBBeYpc(?SND#Z0>}kop7=fB3%NS^r6>u!PYL=(*=4Le7_4`>Vm;; z0ZsYP$!^GZL#Z1++YP_yhF}kD?-9^eANr9VxV;DN=z*{I!1F!O-3zz&3TT@TJ=6;e zz3`P@_(3nc)(hA7fzc68! z(hp`oJlHRw9X|Bwet4!I{@f3B18~y-92tNg4G3tb4?R8rCkEhO1JF7M9~y+O4#Lj| z1+>eD{%H{YHVC017#V`whv4WCJUb+y-9GfCAviq*EyFNA42Oo{kzsgYSU`Jx=o`Zj z9D%_Rc>f68IRZZ&fmcQZwAY6wv(S-+ZCTixg`Z{N^(>5!3TU5*)=!PX^e9-PaQ7&j z9EISRfMtBx@EB|ygZvn%WANx0oD{MCb4|HcO=9W`re2vdmL^m!!rnSvGt{MhvaqjV zXY+6pnoXr%~vZWRjM=fUN%wk1XGg(_H=jL)d6-S-c=G44Vt~gnt!st?k zJ5@)~bbEPodgs~N9MyI*OU1;7SQTB(7ni>#40F@j!`P&hHE|YbtMjU*Ig4kTS5wc} zMd*1)O+7P;t>!9@rsp)HpjV2jz4i4nrY;0 z)tc7|YHsSSO*bn>QCF?Cr|^a<3IjD1ZaW`^1=CV1bM+(be^( zsQ+RVl`OMT-m$n26p3@Bm5PRIC>p6c*w*fxvYM088cwdQ>ZGJP`6VqkE^QngTVH}U zUZH;)@dCcm$#@MXQ?>pyljdAmakLpt*PO-MRLgef&?`7%RhdZwOn^q%ek~{yQ<|}TDI5FvZ0!m2}7InPAt33;^mzk z{%_>Gw}zb2YI1g+DLcJbUXN-%aAm7WR8ccoL(QOH&BUJkf6vNgxlq?t5h6Z8mHH7q6JFB{H1J~&3G*!jP-WpDJRlP;B z9n(_thM`&$#~RkY&nXidD|3SRK@