From b22f6bff4591df9cfb3f03633c700c2d3d53c5e9 Mon Sep 17 00:00:00 2001 From: Victorien Elvinger Date: Wed, 22 Mar 2023 18:14:23 +0100 Subject: [PATCH] test(rome_js_analyze): every rule has its folder --- crates/rome_analyze/CONTRIBUTING.md | 11 +- crates/rome_js_analyze/tests/spec_tests.rs | 36 +- .../tests/specs/a11y/noAccessKey/invalid.jsx | 2 + .../invalid.jsx.snap} | 35 +- .../tests/specs/a11y/noAccessKey/valid.jsx | 7 + .../valid.jsx.snap} | 15 +- .../{noAutoFocusInvalid.jsx => invalid.jsx} | 0 ...FocusInvalid.jsx.snap => invalid.jsx.snap} | 20 +- .../{noAutoFocusValid.jsx => valid.jsx} | 0 ...AutoFocusValid.jsx.snap => valid.jsx.snap} | 0 .../specs/a11y/noBlankTarget/invalid.jsx | 8 + .../invalid.jsx.snap} | 94 +- .../valid.jsx} | 8 - .../specs/a11y/noBlankTarget/valid.jsx.snap | 19 + .../invalid.jsx} | 0 .../invalid.jsx.snap} | 6 +- .../{invalidJsx.jsx => invalid.jsx} | 0 .../{invalidJsx.jsx.snap => invalid.jsx.snap} | 22 +- .../tests/specs/a11y/useAnchorContent.jsx | 24 - .../specs/a11y/useAnchorContent/invalid.jsx | 13 + .../invalid.jsx.snap} | 144 +-- .../specs/a11y/useAnchorContent/valid.jsx | 11 + .../a11y/useAnchorContent/valid.jsx.snap | 21 + .../invalid.jsx} | 8 - .../invalid.jsx.snap} | 128 +- .../tests/specs/a11y/useHtmlLang/valid.jsx | 8 + .../specs/a11y/useHtmlLang/valid.jsx.snap | 17 + ...WithClickEventsInvalid.jsx => invalid.jsx} | 0 ...ventsInvalid.jsx.snap => invalid.jsx.snap} | 4 +- ...eKeyWithClickEventsValid.jsx => valid.jsx} | 0 ...ickEventsValid.jsx.snap => valid.jsx.snap} | 0 .../specs/a11y/useKeyWithMouseEvents.jsx.snap | 216 ---- .../a11y/useKeyWithMouseEvents/invalid.jsx | 10 + .../useKeyWithMouseEvents/invalid.jsx.snap | 184 +++ .../a11y/useKeyWithMouseEvents/valid.jsx | 23 + .../valid.jsx.snap} | 23 +- .../invalid.jsx} | 11 - .../invalid.jsx.snap} | 143 +-- .../tests/specs/a11y/useValidAnchor/valid.jsx | 11 + .../specs/a11y/useValidAnchor/valid.jsx.snap | 20 + .../invalid.js} | 15 +- .../invalid.js.snap} | 139 +-- .../complexity/noExtraBooleanCast/valid.js | 7 + .../noExtraBooleanCast/valid.js.snap | 17 + ...ltipleSpacesInRegularExpressionLiterals.js | 12 - ...eSpacesInRegularExpressionLiterals.js.snap | 165 --- .../invalid.jsonc | 8 + .../invalid.jsonc.snap | 137 +++ .../valid.jsonc | 6 + .../valid.jsonc.snap | 25 + .../tests/specs/complexity/useFlatMap.js | 12 - .../tests/specs/complexity/useFlatMap.js.snap | 140 --- .../specs/complexity/useFlatMap/invalid.jsonc | 7 + .../complexity/useFlatMap/invalid.jsonc.snap | 115 ++ .../specs/complexity/useFlatMap/valid.jsonc | 7 + .../complexity/useFlatMap/valid.jsonc.snap | 30 + .../useSimplifiedLogicExpression.js | 18 - .../useSimplifiedLogicExpression.js.snap | 108 -- .../invalid.jsonc | 11 + .../invalid.jsonc.snap | 115 ++ .../useSimplifiedLogicExpression/valid.jsonc | 9 + .../valid.jsonc.snap | 40 + .../tests/specs/correctness/flipBinExp.js | 30 - .../specs/correctness/flipBinExp.js.snap | 200 --- .../correctness/flipBinExp/flipBinExp.jsonc | 24 + .../flipBinExp/flipBinExp.jsonc.snap | 235 ++++ .../invalid.js} | 3 +- .../invalid.js.snap} | 240 ++-- .../correctness/noDuplicateObjectKeys.js.snap | 500 -------- .../tests/specs/correctness/noEmptyPattern.js | 17 - .../specs/correctness/noEmptyPattern.js.snap | 159 --- .../correctness/noEmptyPattern/invalid.jsonc | 11 + .../noEmptyPattern/invalid.jsonc.snap | 158 +++ .../correctness/noEmptyPattern/valid.jsonc | 8 + .../noEmptyPattern/valid.jsonc.snap | 35 + .../tests/specs/correctness/noNewSymbol.js | 11 - .../specs/correctness/noNewSymbol.js.snap | 97 -- .../correctness/noNewSymbol/invalid.jsonc | 6 + .../noNewSymbol/invalid.jsonc.snap | 90 ++ .../specs/correctness/noNewSymbol/valid.js | 6 + .../correctness/noNewSymbol/valid.js.snap | 15 + .../specs/correctness/noStringCaseMismatch.js | 35 - .../correctness/noStringCaseMismatch.js.snap | 709 ----------- .../noStringCaseMismatch/invalid.jsonc | 18 + .../noStringCaseMismatch/invalid.jsonc.snap | 499 ++++++++ .../noStringCaseMismatch/valid.jsonc | 8 + .../noStringCaseMismatch/valid.jsonc.snap | 35 + .../correctness/noUnnecessaryContinue.js.snap | 278 ----- .../noUnnecessaryContinue/invalid.js | 32 + .../noUnnecessaryContinue/invalid.js.snap | 193 +++ .../valid.js} | 35 +- .../noUnnecessaryContinue/valid.js.snap | 94 ++ .../correctness/useValidForDirection.js.snap | 228 ---- .../useValidForDirection/invalid.jsonc | 14 + .../useValidForDirection/invalid.jsonc.snap | 209 ++++ .../useValidForDirection/valid.jsonc | 25 + .../valid.jsonc.snap} | 112 +- .../tests/specs/nursery/noClassAssign.js.snap | 307 ----- .../specs/nursery/noClassAssign/invalid.js | 41 + .../nursery/noClassAssign/invalid.js.snap | 236 ++++ .../specs/nursery/noClassAssign/valid.js | 66 + .../valid.js.snap} | 50 +- .../nursery/noDistractingElements.jsx.snap | 56 - .../invalid.js} | 51 +- .../invalid.js.snap} | 97 +- .../specs/nursery/noExtraSemicolons/valid.js | 46 + .../nursery/noExtraSemicolons/valid.js.snap | 55 + .../nursery/noInvalidConstructorSuper.js.snap | 367 ------ .../invalid.js} | 45 +- .../noInvalidConstructorSuper/invalid.js.snap | 354 ++++++ .../noInvalidConstructorSuper/valid.js | 37 + .../noInvalidConstructorSuper/valid.js.snap | 47 + .../specs/nursery/noRestrictedGlobals.js.snap | 52 - .../nursery/noRestrictedGlobals/invalid.jsonc | 1 + .../noRestrictedGlobals/invalid.jsonc.snap | 43 + .../valid.js} | 5 - .../nursery/noRestrictedGlobals/valid.js.snap | 13 + .../tests/specs/nursery/noSelfCompare.js | 27 - .../tests/specs/nursery/noSelfCompare.js.snap | 277 ----- .../specs/nursery/noSelfCompare/invalid.jsonc | 18 + .../nursery/noSelfCompare/invalid.jsonc.snap | 277 +++++ .../specs/nursery/noSelfCompare/valid.jsonc | 10 + .../nursery/noSelfCompare/valid.jsonc.snap | 45 + .../invalid.js} | 0 .../invalid.js.snap} | 4 +- .../tests/specs/nursery/useValidAriaProps.jsx | 15 - .../specs/nursery/useValidAriaProps.jsx.snap | 153 --- .../nursery/useValidAriaProps/invalid.jsx | 5 + .../useValidAriaProps/invalid.jsx.snap | 136 ++ .../specs/nursery/useValidAriaProps/valid.jsx | 7 + .../nursery/useValidAriaProps/valid.jsx.snap | 17 + .../tests/specs/nursery/useValidLang.jsx.snap | 101 -- .../specs/nursery/useValidLang/invalid.jsx | 3 + .../nursery/useValidLang/invalid.jsx.snap | 91 ++ .../specs/nursery/useValidLang/valid.jsx | 4 + .../valid.jsx.snap} | 16 +- .../tests/specs/nursery/useYield.js.snap | 267 ---- .../{useYield.js => useYield/invalid.js} | 36 - .../specs/nursery/useYield/invalid.js.snap | 229 ++++ .../tests/specs/nursery/useYield/valid.js | 34 + .../specs/nursery/useYield/valid.js.snap | 43 + .../invalid.cjs} | 0 .../invalid.cjs.snap} | 8 +- .../specs/style/noImplicitBoolean.jsx.snap | 79 -- .../specs/style/noImplicitBoolean/invalid.jsx | 3 + .../style/noImplicitBoolean/invalid.jsx.snap | 67 + .../specs/style/noImplicitBoolean/valid.jsx | 7 + .../valid.jsx.snap} | 14 +- .../invalid.js} | 17 +- .../invalid.js.snap} | 29 +- .../specs/style/noShoutyConstants/valid.js | 14 + .../style/noShoutyConstants/valid.js.snap | 24 + .../style/noUnusedTemplateLiteral.js.snap | 316 ----- .../invalid.js} | 12 - .../noUnusedTemplateLiteral/invalid.js.snap | 298 +++++ .../style/noUnusedTemplateLiteral/valid.js | 10 + .../noUnusedTemplateLiteral/valid.js.snap | 19 + .../specs/style/useBlockStatements.js.snap | 596 --------- .../invalid.js} | 1 - .../style/useBlockStatements/invalid.js.snap | 594 +++++++++ .../invalid.jsx} | 11 - .../invalid.jsx.snap} | 25 +- .../specs/style/useFragmentSyntax/valid.jsx | 13 + .../style/useFragmentSyntax/valid.jsx.snap | 22 + .../style/useSelfClosingElements.tsx.snap | 173 --- .../invalid.tsx} | 9 - .../useSelfClosingElements/invalid.tsx.snap | 161 +++ .../style/useSelfClosingElements/valid.tsx | 7 + .../useSelfClosingElements/valid.tsx.snap | 16 + .../specs/style/useShorthandArrayType.ts.snap | 337 ----- .../style/useShorthandArrayType/invalid.ts | 10 + .../useShorthandArrayType/invalid.ts.snap | 250 ++++ .../style/useShorthandArrayType/valid.ts | 26 + .../valid.ts.snap} | 36 +- .../style/useSingleCaseStatement.js.snap | 350 ------ .../invalid.js} | 41 - .../useSingleCaseStatement/invalid.js.snap | 260 ++++ .../style/useSingleCaseStatement/valid.js | 31 + .../useSingleCaseStatement/valid.js.snap | 41 + .../invalid.js} | 0 .../invalid.js.snap} | 8 +- .../tests/specs/style/useTemplate.js | 27 - .../tests/specs/style/useTemplate.js.snap | 514 -------- .../specs/style/useTemplate/invalid.jsonc | 25 + .../style/useTemplate/invalid.jsonc.snap | 444 +++++++ .../tests/specs/style/useTemplate/valid.jsonc | 1 + .../specs/style/useTemplate/valid.jsonc.snap | 16 + .../{useWhile.js => useWhile/invalid.js} | 0 .../invalid.js.snap} | 4 +- .../specs/suspicious/noArrayIndexKey.jsx | 185 --- .../specs/suspicious/noArrayIndexKey.jsx.snap | 903 -------------- .../suspicious/noArrayIndexKey/invalid.jsx | 110 ++ .../noArrayIndexKey/invalid.jsx.snap | 831 +++++++++++++ .../suspicious/noArrayIndexKey/valid.jsx | 68 + .../suspicious/noArrayIndexKey/valid.jsx.snap | 78 ++ .../suspicious/noAsyncPromiseExecutor.js.snap | 61 - .../noAsyncPromiseExecutor/invalid.jsonc | 5 + .../noAsyncPromiseExecutor/invalid.jsonc.snap | 56 + .../noAsyncPromiseExecutor/valid.jsonc | 6 + .../valid.jsonc.snap} | 26 +- .../invalid.js} | 1 - .../invalid.js.snap} | 64 +- .../specs/suspicious/noCommentText.tsx.snap | 83 -- .../suspicious/noCommentText/invalid.tsx | 3 + .../suspicious/noCommentText/invalid.tsx.snap | 70 ++ .../valid.tsx} | 5 - .../suspicious/noCommentText/valid.tsx.snap | 12 + .../specs/suspicious/noCompareNegZero.js | 52 - .../specs/suspicious/noCompareNegZero.js.snap | 407 ------ .../suspicious/noCompareNegZero/invalid.jsonc | 17 + .../noCompareNegZero/invalid.jsonc.snap | 320 +++++ .../noCompareNegZero/invalidComments.js | 6 + .../noCompareNegZero/invalidComments.js.snap | 73 ++ .../suspicious/noCompareNegZero/valid.jsonc | 31 + .../noCompareNegZero/valid.jsonc.snap | 150 +++ .../invalid.ts} | 0 .../invalid.ts.snap} | 6 +- .../{noDebugger.js => noDebugger/invalid.js} | 0 .../invalid.js.snap} | 8 +- .../tests/specs/suspicious/noDoubleEquals.js | 5 - .../suspicious/noDoubleEquals/invalid.js | 21 + .../suspicious/noDoubleEquals/invalid.js.snap | 175 +++ .../suspicious/noDoubleEquals/invalid.jsonc | 1 + .../invalid.jsonc.snap} | 33 +- .../suspicious/noDoubleEquals/invalid.jsx | 7 + .../noDoubleEquals/invalid.jsx.snap | 47 + .../suspicious/noDoubleEquals/valid.jsonc | 1 + .../noDoubleEquals/valid.jsonc.snap | 15 + .../noDuplicateObjectKeys/invalid.jsonc | 15 + .../noDuplicateObjectKeys/invalid.jsonc.snap | 413 +++++++ .../noDuplicateObjectKeys/valid.jsonc | 30 + .../noDuplicateObjectKeys/valid.jsonc.snap | 90 ++ .../specs/suspicious/noDuplicateParameters.js | 34 - .../suspicious/noDuplicateParameters.js.snap | 229 ---- .../noDuplicateParameters/invalid.jsonc | 13 + .../noDuplicateParameters/invalid.jsonc.snap | 214 ++++ .../noDuplicateParameters/valid.jsonc | 8 + .../noDuplicateParameters/valid.jsonc.snap | 35 + .../specs/suspicious/noFunctionAssign.js | 25 - .../specs/suspicious/noFunctionAssign.js.snap | 219 ---- .../suspicious/noFunctionAssign/invalid.jsonc | 9 + .../noFunctionAssign/invalid.jsonc.snap | 181 +++ .../suspicious/noFunctionAssign/valid.jsonc | 8 + .../noFunctionAssign/valid.jsonc.snap | 35 + .../specs/suspicious/noImportAssign.js.snap | 376 ------ .../invalid.js} | 7 +- .../suspicious/noImportAssign/invalid.js.snap | 366 ++++++ .../specs/suspicious/noImportAssign/valid.js | 2 + .../suspicious/noImportAssign/valid.js.snap | 11 + .../{noLabelVar.js => noLabelVar/invalid.js} | 8 +- .../invalid.js.snap} | 37 +- .../specs/suspicious/noLabelVar/valid.js | 2 + .../specs/suspicious/noLabelVar/valid.js.snap | 12 + .../suspicious/noShadowRestrictedNames.js | 13 - .../noShadowRestrictedNames.js.snap | 139 --- .../noShadowRestrictedNames/invalid.jsonc | 11 + .../invalid.jsonc.snap | 138 +++ .../tests/specs/suspicious/noSparseArray.js | 10 - .../specs/suspicious/noSparseArray.js.snap | 113 -- .../suspicious/noSparseArray/invalid.jsonc | 7 + .../noSparseArray/invalid.jsonc.snap | 110 ++ .../specs/suspicious/noSparseArray/valid.js | 1 + .../suspicious/noSparseArray/valid.js.snap | 11 + .../specs/suspicious/noUnsafeNegation.js | 10 - .../specs/suspicious/noUnsafeNegation.js.snap | 58 - .../suspicious/noUnsafeNegation/invalid.jsonc | 4 + .../noUnsafeNegation/invalid.jsonc.snap | 47 + .../suspicious/noUnsafeNegation/valid.jsonc | 8 + .../noUnsafeNegation/valid.jsonc.snap | 35 + .../tests/specs/suspicious/useValidTypeof.js | 17 - .../specs/suspicious/useValidTypeof.js.snap | 191 --- .../suspicious/useValidTypeof/invalid.jsonc | 14 + .../useValidTypeof/invalid.jsonc.snap | 185 +++ .../suspicious/useValidTypeof/valid.jsonc | 5 + .../useValidTypeof/valid.jsonc.snap | 20 + .../a11y/useKeyWithClickEvents.jsx | 9 - .../a11y/useKeyWithClickEvents.jsx.snap | 47 - .../a11y/useKeyWithClickEvents/invalid.jsx | 5 + .../useKeyWithClickEvents/invalid.jsx.snap | 40 + .../noUndeclaredVariables.ts | 0 .../noUndeclaredVariables.ts.snap | 0 .../noUnusedVariables/ts-module-export.ts | 2 +- .../ts-module-export.ts.snap | 3 +- .../suppression/noDuplicateObjectKeys.js | 43 - .../suppression/noDuplicateObjectKeys.js.snap | 53 - .../suspicious/noArrayIndexKey.jsx | 34 - .../suspicious/noArrayIndexKey.jsx.snap | 269 ---- .../noArrayIndexKey/noArrayIndexKey.jsx | 110 ++ .../noArrayIndexKey/noArrayIndexKey.jsx.snap | 1089 +++++++++++++++++ 289 files changed, 13002 insertions(+), 11734 deletions(-) create mode 100644 crates/rome_js_analyze/tests/specs/a11y/noAccessKey/invalid.jsx rename crates/rome_js_analyze/tests/specs/a11y/{noAccessKey.jsx.snap => noAccessKey/invalid.jsx.snap} (58%) create mode 100644 crates/rome_js_analyze/tests/specs/a11y/noAccessKey/valid.jsx rename crates/rome_js_analyze/tests/specs/a11y/{noAccessKey.jsx => noAccessKey/valid.jsx.snap} (65%) rename crates/rome_js_analyze/tests/specs/a11y/noAutofocus/{noAutoFocusInvalid.jsx => invalid.jsx} (100%) rename crates/rome_js_analyze/tests/specs/a11y/noAutofocus/{noAutoFocusInvalid.jsx.snap => invalid.jsx.snap} (81%) rename crates/rome_js_analyze/tests/specs/a11y/noAutofocus/{noAutoFocusValid.jsx => valid.jsx} (100%) rename crates/rome_js_analyze/tests/specs/a11y/noAutofocus/{noAutoFocusValid.jsx.snap => valid.jsx.snap} (100%) create mode 100644 crates/rome_js_analyze/tests/specs/a11y/noBlankTarget/invalid.jsx rename crates/rome_js_analyze/tests/specs/a11y/{noBlankTarget.jsx.snap => noBlankTarget/invalid.jsx.snap} (51%) rename crates/rome_js_analyze/tests/specs/a11y/{noBlankTarget.jsx => noBlankTarget/valid.jsx} (55%) create mode 100644 crates/rome_js_analyze/tests/specs/a11y/noBlankTarget/valid.jsx.snap rename crates/rome_js_analyze/tests/specs/a11y/{noDistractingElements.jsx => noDistractingElements/invalid.jsx} (100%) rename crates/rome_js_analyze/tests/specs/a11y/{noDistractingElements.jsx.snap => noDistractingElements/invalid.jsx.snap} (68%) rename crates/rome_js_analyze/tests/specs/a11y/noPositiveTabindex/{invalidJsx.jsx => invalid.jsx} (100%) rename crates/rome_js_analyze/tests/specs/a11y/noPositiveTabindex/{invalidJsx.jsx.snap => invalid.jsx.snap} (88%) delete mode 100644 crates/rome_js_analyze/tests/specs/a11y/useAnchorContent.jsx create mode 100644 crates/rome_js_analyze/tests/specs/a11y/useAnchorContent/invalid.jsx rename crates/rome_js_analyze/tests/specs/a11y/{useAnchorContent.jsx.snap => useAnchorContent/invalid.jsx.snap} (53%) create mode 100644 crates/rome_js_analyze/tests/specs/a11y/useAnchorContent/valid.jsx create mode 100644 crates/rome_js_analyze/tests/specs/a11y/useAnchorContent/valid.jsx.snap rename crates/rome_js_analyze/tests/specs/a11y/{useHtmlLang.jsx => useHtmlLang/invalid.jsx} (55%) rename crates/rome_js_analyze/tests/specs/a11y/{useHtmlLang.jsx.snap => useHtmlLang/invalid.jsx.snap} (50%) create mode 100644 crates/rome_js_analyze/tests/specs/a11y/useHtmlLang/valid.jsx create mode 100644 crates/rome_js_analyze/tests/specs/a11y/useHtmlLang/valid.jsx.snap rename crates/rome_js_analyze/tests/specs/a11y/useKeyWithClickEvents/{useKeyWithClickEventsInvalid.jsx => invalid.jsx} (100%) rename crates/rome_js_analyze/tests/specs/a11y/useKeyWithClickEvents/{useKeyWithClickEventsInvalid.jsx.snap => invalid.jsx.snap} (75%) rename crates/rome_js_analyze/tests/specs/a11y/useKeyWithClickEvents/{useKeyWithClickEventsValid.jsx => valid.jsx} (100%) rename crates/rome_js_analyze/tests/specs/a11y/useKeyWithClickEvents/{useKeyWithClickEventsValid.jsx.snap => valid.jsx.snap} (100%) delete mode 100644 crates/rome_js_analyze/tests/specs/a11y/useKeyWithMouseEvents.jsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/a11y/useKeyWithMouseEvents/invalid.jsx create mode 100644 crates/rome_js_analyze/tests/specs/a11y/useKeyWithMouseEvents/invalid.jsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/a11y/useKeyWithMouseEvents/valid.jsx rename crates/rome_js_analyze/tests/specs/a11y/{useKeyWithMouseEvents.jsx => useKeyWithMouseEvents/valid.jsx.snap} (69%) rename crates/rome_js_analyze/tests/specs/a11y/{useValidAnchor.jsx => useValidAnchor/invalid.jsx} (52%) rename crates/rome_js_analyze/tests/specs/a11y/{useValidAnchor.jsx.snap => useValidAnchor/invalid.jsx.snap} (53%) create mode 100644 crates/rome_js_analyze/tests/specs/a11y/useValidAnchor/valid.jsx create mode 100644 crates/rome_js_analyze/tests/specs/a11y/useValidAnchor/valid.jsx.snap rename crates/rome_js_analyze/tests/specs/complexity/{noExtraBooleanCast.js => noExtraBooleanCast/invalid.js} (71%) rename crates/rome_js_analyze/tests/specs/complexity/{noExtraBooleanCast.js.snap => noExtraBooleanCast/invalid.js.snap} (51%) create mode 100644 crates/rome_js_analyze/tests/specs/complexity/noExtraBooleanCast/valid.js create mode 100644 crates/rome_js_analyze/tests/specs/complexity/noExtraBooleanCast/valid.js.snap delete mode 100644 crates/rome_js_analyze/tests/specs/complexity/noMultipleSpacesInRegularExpressionLiterals.js delete mode 100644 crates/rome_js_analyze/tests/specs/complexity/noMultipleSpacesInRegularExpressionLiterals.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/complexity/noMultipleSpacesInRegularExpressionLiterals/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/complexity/noMultipleSpacesInRegularExpressionLiterals/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/complexity/noMultipleSpacesInRegularExpressionLiterals/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/complexity/noMultipleSpacesInRegularExpressionLiterals/valid.jsonc.snap delete mode 100644 crates/rome_js_analyze/tests/specs/complexity/useFlatMap.js delete mode 100644 crates/rome_js_analyze/tests/specs/complexity/useFlatMap.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/complexity/useFlatMap/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/complexity/useFlatMap/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/complexity/useFlatMap/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/complexity/useFlatMap/valid.jsonc.snap delete mode 100644 crates/rome_js_analyze/tests/specs/complexity/useSimplifiedLogicExpression.js delete mode 100644 crates/rome_js_analyze/tests/specs/complexity/useSimplifiedLogicExpression.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/complexity/useSimplifiedLogicExpression/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/complexity/useSimplifiedLogicExpression/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/complexity/useSimplifiedLogicExpression/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/complexity/useSimplifiedLogicExpression/valid.jsonc.snap delete mode 100644 crates/rome_js_analyze/tests/specs/correctness/flipBinExp.js delete mode 100644 crates/rome_js_analyze/tests/specs/correctness/flipBinExp.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/correctness/flipBinExp/flipBinExp.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/correctness/flipBinExp/flipBinExp.jsonc.snap rename crates/rome_js_analyze/tests/specs/correctness/{noConstAssign.js => noConstAssign/invalid.js} (95%) rename crates/rome_js_analyze/tests/specs/correctness/{noConstAssign.js.snap => noConstAssign/invalid.js.snap} (57%) delete mode 100644 crates/rome_js_analyze/tests/specs/correctness/noDuplicateObjectKeys.js.snap delete mode 100644 crates/rome_js_analyze/tests/specs/correctness/noEmptyPattern.js delete mode 100644 crates/rome_js_analyze/tests/specs/correctness/noEmptyPattern.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noEmptyPattern/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noEmptyPattern/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noEmptyPattern/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noEmptyPattern/valid.jsonc.snap delete mode 100644 crates/rome_js_analyze/tests/specs/correctness/noNewSymbol.js delete mode 100644 crates/rome_js_analyze/tests/specs/correctness/noNewSymbol.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noNewSymbol/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noNewSymbol/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noNewSymbol/valid.js create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noNewSymbol/valid.js.snap delete mode 100644 crates/rome_js_analyze/tests/specs/correctness/noStringCaseMismatch.js delete mode 100644 crates/rome_js_analyze/tests/specs/correctness/noStringCaseMismatch.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noStringCaseMismatch/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noStringCaseMismatch/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noStringCaseMismatch/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noStringCaseMismatch/valid.jsonc.snap delete mode 100644 crates/rome_js_analyze/tests/specs/correctness/noUnnecessaryContinue.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noUnnecessaryContinue/invalid.js create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noUnnecessaryContinue/invalid.js.snap rename crates/rome_js_analyze/tests/specs/correctness/{noUnnecessaryContinue.js => noUnnecessaryContinue/valid.js} (61%) create mode 100644 crates/rome_js_analyze/tests/specs/correctness/noUnnecessaryContinue/valid.js.snap delete mode 100644 crates/rome_js_analyze/tests/specs/correctness/useValidForDirection.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/correctness/useValidForDirection/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/correctness/useValidForDirection/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/correctness/useValidForDirection/valid.jsonc rename crates/rome_js_analyze/tests/specs/correctness/{useValidForDirection.js => useValidForDirection/valid.jsonc.snap} (60%) delete mode 100644 crates/rome_js_analyze/tests/specs/nursery/noClassAssign.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noClassAssign/invalid.js create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noClassAssign/invalid.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noClassAssign/valid.js rename crates/rome_js_analyze/tests/specs/nursery/{noClassAssign.js => noClassAssign/valid.js.snap} (56%) delete mode 100644 crates/rome_js_analyze/tests/specs/nursery/noDistractingElements.jsx.snap rename crates/rome_js_analyze/tests/specs/nursery/{noExtraSemicolons.js => noExtraSemicolons/invalid.js} (63%) rename crates/rome_js_analyze/tests/specs/nursery/{noExtraSemicolons.js.snap => noExtraSemicolons/invalid.js.snap} (60%) create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noExtraSemicolons/valid.js create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noExtraSemicolons/valid.js.snap delete mode 100644 crates/rome_js_analyze/tests/specs/nursery/noInvalidConstructorSuper.js.snap rename crates/rome_js_analyze/tests/specs/nursery/{noInvalidConstructorSuper.js => noInvalidConstructorSuper/invalid.js} (59%) create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noInvalidConstructorSuper/invalid.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noInvalidConstructorSuper/valid.js create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noInvalidConstructorSuper/valid.js.snap delete mode 100644 crates/rome_js_analyze/tests/specs/nursery/noRestrictedGlobals.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noRestrictedGlobals/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noRestrictedGlobals/invalid.jsonc.snap rename crates/rome_js_analyze/tests/specs/nursery/{noRestrictedGlobals.js => noRestrictedGlobals/valid.js} (55%) create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noRestrictedGlobals/valid.js.snap delete mode 100644 crates/rome_js_analyze/tests/specs/nursery/noSelfCompare.js delete mode 100644 crates/rome_js_analyze/tests/specs/nursery/noSelfCompare.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noSelfCompare/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noSelfCompare/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noSelfCompare/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/nursery/noSelfCompare/valid.jsonc.snap rename crates/rome_js_analyze/tests/specs/nursery/{noSuperWithoutExtends.js => noSuperWithoutExtends/invalid.js} (100%) rename crates/rome_js_analyze/tests/specs/nursery/{noSuperWithoutExtends.js.snap => noSuperWithoutExtends/invalid.js.snap} (70%) delete mode 100644 crates/rome_js_analyze/tests/specs/nursery/useValidAriaProps.jsx delete mode 100644 crates/rome_js_analyze/tests/specs/nursery/useValidAriaProps.jsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/nursery/useValidAriaProps/invalid.jsx create mode 100644 crates/rome_js_analyze/tests/specs/nursery/useValidAriaProps/invalid.jsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/nursery/useValidAriaProps/valid.jsx create mode 100644 crates/rome_js_analyze/tests/specs/nursery/useValidAriaProps/valid.jsx.snap delete mode 100644 crates/rome_js_analyze/tests/specs/nursery/useValidLang.jsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/nursery/useValidLang/invalid.jsx create mode 100644 crates/rome_js_analyze/tests/specs/nursery/useValidLang/invalid.jsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/nursery/useValidLang/valid.jsx rename crates/rome_js_analyze/tests/specs/nursery/{useValidLang.jsx => useValidLang/valid.jsx.snap} (52%) delete mode 100644 crates/rome_js_analyze/tests/specs/nursery/useYield.js.snap rename crates/rome_js_analyze/tests/specs/nursery/{useYield.js => useYield/invalid.js} (61%) create mode 100644 crates/rome_js_analyze/tests/specs/nursery/useYield/invalid.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/nursery/useYield/valid.js create mode 100644 crates/rome_js_analyze/tests/specs/nursery/useYield/valid.js.snap rename crates/rome_js_analyze/tests/specs/style/{noArguments.cjs => noArguments/invalid.cjs} (100%) rename crates/rome_js_analyze/tests/specs/style/{noArguments.cjs.snap => noArguments/invalid.cjs.snap} (75%) delete mode 100644 crates/rome_js_analyze/tests/specs/style/noImplicitBoolean.jsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/style/noImplicitBoolean/invalid.jsx create mode 100644 crates/rome_js_analyze/tests/specs/style/noImplicitBoolean/invalid.jsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/style/noImplicitBoolean/valid.jsx rename crates/rome_js_analyze/tests/specs/style/{noImplicitBoolean.jsx => noImplicitBoolean/valid.jsx.snap} (65%) rename crates/rome_js_analyze/tests/specs/style/{noShoutyConstants.js => noShoutyConstants/invalid.js} (54%) rename crates/rome_js_analyze/tests/specs/style/{noShoutyConstants.js.snap => noShoutyConstants/invalid.js.snap} (80%) create mode 100644 crates/rome_js_analyze/tests/specs/style/noShoutyConstants/valid.js create mode 100644 crates/rome_js_analyze/tests/specs/style/noShoutyConstants/valid.js.snap delete mode 100644 crates/rome_js_analyze/tests/specs/style/noUnusedTemplateLiteral.js.snap rename crates/rome_js_analyze/tests/specs/style/{noUnusedTemplateLiteral.js => noUnusedTemplateLiteral/invalid.js} (60%) create mode 100644 crates/rome_js_analyze/tests/specs/style/noUnusedTemplateLiteral/invalid.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/style/noUnusedTemplateLiteral/valid.js create mode 100644 crates/rome_js_analyze/tests/specs/style/noUnusedTemplateLiteral/valid.js.snap delete mode 100644 crates/rome_js_analyze/tests/specs/style/useBlockStatements.js.snap rename crates/rome_js_analyze/tests/specs/style/{useBlockStatements.js => useBlockStatements/invalid.js} (97%) create mode 100644 crates/rome_js_analyze/tests/specs/style/useBlockStatements/invalid.js.snap rename crates/rome_js_analyze/tests/specs/style/{useFragmentSyntax.jsx => useFragmentSyntax/invalid.jsx} (62%) rename crates/rome_js_analyze/tests/specs/style/{useFragmentSyntax.jsx.snap => useFragmentSyntax/invalid.jsx.snap} (78%) create mode 100644 crates/rome_js_analyze/tests/specs/style/useFragmentSyntax/valid.jsx create mode 100644 crates/rome_js_analyze/tests/specs/style/useFragmentSyntax/valid.jsx.snap delete mode 100644 crates/rome_js_analyze/tests/specs/style/useSelfClosingElements.tsx.snap rename crates/rome_js_analyze/tests/specs/style/{useSelfClosingElements.tsx => useSelfClosingElements/invalid.tsx} (56%) create mode 100644 crates/rome_js_analyze/tests/specs/style/useSelfClosingElements/invalid.tsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/style/useSelfClosingElements/valid.tsx create mode 100644 crates/rome_js_analyze/tests/specs/style/useSelfClosingElements/valid.tsx.snap delete mode 100644 crates/rome_js_analyze/tests/specs/style/useShorthandArrayType.ts.snap create mode 100644 crates/rome_js_analyze/tests/specs/style/useShorthandArrayType/invalid.ts create mode 100644 crates/rome_js_analyze/tests/specs/style/useShorthandArrayType/invalid.ts.snap create mode 100644 crates/rome_js_analyze/tests/specs/style/useShorthandArrayType/valid.ts rename crates/rome_js_analyze/tests/specs/style/{useShorthandArrayType.ts => useShorthandArrayType/valid.ts.snap} (55%) delete mode 100644 crates/rome_js_analyze/tests/specs/style/useSingleCaseStatement.js.snap rename crates/rome_js_analyze/tests/specs/style/{useSingleCaseStatement.js => useSingleCaseStatement/invalid.js} (56%) create mode 100644 crates/rome_js_analyze/tests/specs/style/useSingleCaseStatement/invalid.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/style/useSingleCaseStatement/valid.js create mode 100644 crates/rome_js_analyze/tests/specs/style/useSingleCaseStatement/valid.js.snap rename crates/rome_js_analyze/tests/specs/style/{useSingleVarDeclarator.js => useSingleVarDeclarator/invalid.js} (100%) rename crates/rome_js_analyze/tests/specs/style/{useSingleVarDeclarator.js.snap => useSingleVarDeclarator/invalid.js.snap} (71%) delete mode 100644 crates/rome_js_analyze/tests/specs/style/useTemplate.js delete mode 100644 crates/rome_js_analyze/tests/specs/style/useTemplate.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/style/useTemplate/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/style/useTemplate/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/style/useTemplate/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/style/useTemplate/valid.jsonc.snap rename crates/rome_js_analyze/tests/specs/style/{useWhile.js => useWhile/invalid.js} (100%) rename crates/rome_js_analyze/tests/specs/style/{useWhile.js.snap => useWhile/invalid.js.snap} (77%) delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noArrayIndexKey.jsx delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noArrayIndexKey.jsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noArrayIndexKey/invalid.jsx create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noArrayIndexKey/invalid.jsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noArrayIndexKey/valid.jsx create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noArrayIndexKey/valid.jsx.snap delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noAsyncPromiseExecutor.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noAsyncPromiseExecutor/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noAsyncPromiseExecutor/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noAsyncPromiseExecutor/valid.jsonc rename crates/rome_js_analyze/tests/specs/suspicious/{noAsyncPromiseExecutor.js => noAsyncPromiseExecutor/valid.jsonc.snap} (53%) rename crates/rome_js_analyze/tests/specs/suspicious/{noCatchAssign.js => noCatchAssign/invalid.js} (89%) rename crates/rome_js_analyze/tests/specs/suspicious/{noCatchAssign.js.snap => noCatchAssign/invalid.js.snap} (57%) delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noCommentText.tsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noCommentText/invalid.tsx create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noCommentText/invalid.tsx.snap rename crates/rome_js_analyze/tests/specs/suspicious/{noCommentText.tsx => noCommentText/valid.tsx} (50%) create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noCommentText/valid.tsx.snap delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noCompareNegZero.js delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noCompareNegZero.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noCompareNegZero/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noCompareNegZero/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noCompareNegZero/invalidComments.js create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noCompareNegZero/invalidComments.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noCompareNegZero/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noCompareNegZero/valid.jsonc.snap rename crates/rome_js_analyze/tests/specs/suspicious/{noConstEnum.ts => noConstEnum/invalid.ts} (100%) rename crates/rome_js_analyze/tests/specs/suspicious/{noConstEnum.ts.snap => noConstEnum/invalid.ts.snap} (85%) rename crates/rome_js_analyze/tests/specs/suspicious/{noDebugger.js => noDebugger/invalid.js} (100%) rename crates/rome_js_analyze/tests/specs/suspicious/{noDebugger.js.snap => noDebugger/invalid.js.snap} (79%) delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDoubleEquals.js create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDoubleEquals/invalid.js create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDoubleEquals/invalid.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDoubleEquals/invalid.jsonc rename crates/rome_js_analyze/tests/specs/suspicious/{noDoubleEquals.js.snap => noDoubleEquals/invalid.jsonc.snap} (51%) create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDoubleEquals/invalid.jsx create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDoubleEquals/invalid.jsx.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDoubleEquals/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDoubleEquals/valid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDuplicateObjectKeys/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDuplicateObjectKeys/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDuplicateObjectKeys/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDuplicateObjectKeys/valid.jsonc.snap delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDuplicateParameters.js delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDuplicateParameters.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDuplicateParameters/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDuplicateParameters/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDuplicateParameters/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noDuplicateParameters/valid.jsonc.snap delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noFunctionAssign.js delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noFunctionAssign.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noFunctionAssign/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noFunctionAssign/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noFunctionAssign/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noFunctionAssign/valid.jsonc.snap delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noImportAssign.js.snap rename crates/rome_js_analyze/tests/specs/suspicious/{noImportAssign.js => noImportAssign/invalid.js} (85%) create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noImportAssign/invalid.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noImportAssign/valid.js create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noImportAssign/valid.js.snap rename crates/rome_js_analyze/tests/specs/suspicious/{noLabelVar.js => noLabelVar/invalid.js} (61%) rename crates/rome_js_analyze/tests/specs/suspicious/{noLabelVar.js.snap => noLabelVar/invalid.js.snap} (63%) create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noLabelVar/valid.js create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noLabelVar/valid.js.snap delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noShadowRestrictedNames.js delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noShadowRestrictedNames.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noShadowRestrictedNames/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noShadowRestrictedNames/invalid.jsonc.snap delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noSparseArray.js delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noSparseArray.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noSparseArray/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noSparseArray/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noSparseArray/valid.js create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noSparseArray/valid.js.snap delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noUnsafeNegation.js delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noUnsafeNegation.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noUnsafeNegation/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noUnsafeNegation/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noUnsafeNegation/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/noUnsafeNegation/valid.jsonc.snap delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/useValidTypeof.js delete mode 100644 crates/rome_js_analyze/tests/specs/suspicious/useValidTypeof.js.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/useValidTypeof/invalid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/useValidTypeof/invalid.jsonc.snap create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/useValidTypeof/valid.jsonc create mode 100644 crates/rome_js_analyze/tests/specs/suspicious/useValidTypeof/valid.jsonc.snap delete mode 100644 crates/rome_js_analyze/tests/suppression/a11y/useKeyWithClickEvents.jsx delete mode 100644 crates/rome_js_analyze/tests/suppression/a11y/useKeyWithClickEvents.jsx.snap create mode 100644 crates/rome_js_analyze/tests/suppression/a11y/useKeyWithClickEvents/invalid.jsx create mode 100644 crates/rome_js_analyze/tests/suppression/a11y/useKeyWithClickEvents/invalid.jsx.snap rename crates/rome_js_analyze/tests/suppression/correctness/{ => noUndeclaredVariables}/noUndeclaredVariables.ts (100%) rename crates/rome_js_analyze/tests/suppression/correctness/{ => noUndeclaredVariables}/noUndeclaredVariables.ts.snap (100%) delete mode 100644 crates/rome_js_analyze/tests/suppression/noDuplicateObjectKeys.js delete mode 100644 crates/rome_js_analyze/tests/suppression/noDuplicateObjectKeys.js.snap delete mode 100644 crates/rome_js_analyze/tests/suppression/suspicious/noArrayIndexKey.jsx delete mode 100644 crates/rome_js_analyze/tests/suppression/suspicious/noArrayIndexKey.jsx.snap create mode 100644 crates/rome_js_analyze/tests/suppression/suspicious/noArrayIndexKey/noArrayIndexKey.jsx create mode 100644 crates/rome_js_analyze/tests/suppression/suspicious/noArrayIndexKey/noArrayIndexKey.jsx.snap diff --git a/crates/rome_analyze/CONTRIBUTING.md b/crates/rome_analyze/CONTRIBUTING.md index cd8fcdf7085..f95720c2095 100644 --- a/crates/rome_analyze/CONTRIBUTING.md +++ b/crates/rome_analyze/CONTRIBUTING.md @@ -146,16 +146,9 @@ _**your test cases are placed inside the wrong group, you won't see any diagnost Since each new rule will start from `nursery`, that's where we start. If you used `just new-lintrule`, a folder that use the name of the rule should exist. +Otherwise, create a folder called `myRuleName/`, and then create one or more files where you want to create different cases. -Otherwise, you have two options: - -- Create a single file called like the rule name, e.g. `myRuleName.js`, `myRuleName.tsx`, etc. - The extension of the file matters based on which kind of file you need to test; - -- Create a folder called `myRuleName/`, and then create various files where you want to create different cases. - These options are useful if your rules target different super languages, or you want to split your cases among different files. - -If you chose to create a folder, a common pattern is to create files prefixed by `invalid` or `valid`. +A common pattern is to create files prefixed by `invalid` or `valid`. The files prefixed by `invalid` contain code that are reported by the rule. The files prefixed by `valid` contain code that are not reported by the rule. diff --git a/crates/rome_js_analyze/tests/spec_tests.rs b/crates/rome_js_analyze/tests/spec_tests.rs index 999c6624d5a..d6572ec5731 100644 --- a/crates/rome_js_analyze/tests/spec_tests.rs +++ b/crates/rome_js_analyze/tests/spec_tests.rs @@ -37,11 +37,14 @@ fn run_test(input: &'static str, _: &str, _: &str, _: &str) { let input_file = Path::new(input); let file_name = input_file.file_name().and_then(OsStr::to_str).unwrap(); - let input_code = read_to_string(input_file) - .unwrap_or_else(|err| panic!("failed to read {:?}: {:?}", input_file, err)); let (group, rule) = parse_test_path(input_file); - + if rule == "specs" || rule == "suppression" { + panic!("the test file must be placed in the {rule}/// directory"); + } + if group == "specs" || group == "suppression" { + panic!("the test file must be placed in the {group}/{rule}// directory"); + } if rome_js_analyze::metadata().find_rule(group, rule).is_none() { panic!("could not find rule {group}/{rule}"); } @@ -55,6 +58,8 @@ fn run_test(input: &'static str, _: &str, _: &str, _: &str) { let mut snapshot = String::new(); let extension = input_file.extension().unwrap_or_default(); + let input_code = read_to_string(input_file) + .unwrap_or_else(|err| panic!("failed to read {:?}: {:?}", input_file, err)); let quantity_diagnostics = if let Some(scripts) = scripts_from_json(extension, &input_code) { for script in scripts { write_analysis_to_snapshot( @@ -211,25 +216,18 @@ pub(crate) fn write_analysis_to_snapshot( } /// The test runner for the analyzer is currently designed to have a -/// one-to-one mapping between test case and analyzer rules, so each testing -/// file will be run through the analyzer with only the rule corresponding -/// to the file name (or the name of the parent directory if it's not "specs") -/// enabled, eg. `style/useWhile.js` and `style/useWhile/test.js` will be analyzed with -/// just the `style/useWhile` rule +/// one-to-one mapping between test case and analyzer rules. +/// So each testing file will be run through the analyzer with only the rule +/// corresponding to the directory name. E.g., `style/useWhile/test.js` +/// will be analyzed with just the `style/useWhile` rule. fn parse_test_path(file: &Path) -> (&str, &str) { - let file_stem = file.file_stem().unwrap(); - - let ancestor_0 = file.parent().unwrap(); - let name_0 = ancestor_0.file_name().unwrap(); + let rule_folder = file.parent().unwrap(); + let rule_name = rule_folder.file_name().unwrap(); - let ancestor_1 = ancestor_0.parent().unwrap(); - let name_1 = ancestor_1.file_name().unwrap(); + let group_folder = rule_folder.parent().unwrap(); + let group_name = group_folder.file_name().unwrap(); - if matches!(name_1.to_str().unwrap(), "specs" | "suppression") { - (name_0.to_str().unwrap(), file_stem.to_str().unwrap()) - } else { - (name_1.to_str().unwrap(), name_0.to_str().unwrap()) - } + (group_name.to_str().unwrap(), rule_name.to_str().unwrap()) } fn markup_to_string(markup: Markup) -> String { diff --git a/crates/rome_js_analyze/tests/specs/a11y/noAccessKey/invalid.jsx b/crates/rome_js_analyze/tests/specs/a11y/noAccessKey/invalid.jsx new file mode 100644 index 00000000000..4ca89f2aa8c --- /dev/null +++ b/crates/rome_js_analyze/tests/specs/a11y/noAccessKey/invalid.jsx @@ -0,0 +1,2 @@ +; +; diff --git a/crates/rome_js_analyze/tests/specs/a11y/noAccessKey.jsx.snap b/crates/rome_js_analyze/tests/specs/a11y/noAccessKey/invalid.jsx.snap similarity index 58% rename from crates/rome_js_analyze/tests/specs/a11y/noAccessKey.jsx.snap rename to crates/rome_js_analyze/tests/specs/a11y/noAccessKey/invalid.jsx.snap index 8ffff43af92..0bf6489dc6d 100644 --- a/crates/rome_js_analyze/tests/specs/a11y/noAccessKey.jsx.snap +++ b/crates/rome_js_analyze/tests/specs/a11y/noAccessKey/invalid.jsx.snap @@ -1,62 +1,49 @@ --- source: crates/rome_js_analyze/tests/spec_tests.rs -expression: noAccessKey.jsx +expression: invalid.jsx --- # Input ```js -// invalid ; ; -// valid -; -; -; -; -; - 4 │ + 2 │ ; + 3 │ i Assigning keyboard shortcuts using the accessKey attribute leads to inconsistent keyboard actions across applications. i Suggested fix: Remove the accessKey attribute. - 2 │ ; + 1 │ ; │ -------------- ``` ``` -noAccessKey.jsx:3:9 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +invalid.jsx:2:9 lint/a11y/noAccessKey FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ! Avoid the accessKey attribute to reduce inconsistencies between keyboard shortcuts and screen reader keyboard comments. - 1 │ // invalid - 2 │ ; - > 3 │ ; + 1 │ ; + > 2 │ ; │ ^^^^^^^^^^^^^ - 4 │ - 5 │ // valid + 3 │ i Assigning keyboard shortcuts using the accessKey attribute leads to inconsistent keyboard actions across applications. i Suggested fix: Remove the accessKey attribute. - 3 │ Next; + 2 │ Next; │ ------------- ``` diff --git a/crates/rome_js_analyze/tests/specs/a11y/noAccessKey/valid.jsx b/crates/rome_js_analyze/tests/specs/a11y/noAccessKey/valid.jsx new file mode 100644 index 00000000000..d1abeb97aae --- /dev/null +++ b/crates/rome_js_analyze/tests/specs/a11y/noAccessKey/valid.jsx @@ -0,0 +1,7 @@ +; +; +; +; +; - -// valid +--- +source: crates/rome_js_analyze/tests/spec_tests.rs +expression: valid.jsx +--- +# Input +```js ; ; ; @@ -10,3 +11,7 @@