Skip to content

Commit 8694b78

Browse files
committed
Compare Final Config for testing
1 parent 174327c commit 8694b78

File tree

6 files changed

+34
-7
lines changed

6 files changed

+34
-7
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@
1111
/reports/**
1212
analysis.json
1313
npm-debug.log
14-
/demo/test/snapshots/*results.txt
14+
/demo/test/snapshots/new-lint-results.txt
15+
/demo/test/snapshots/new-lint-final-config.json

demo/test/lint-output.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11
import test from 'ava';
22
const fileManager = require('file-manager-js');
33

4-
test('Should have consistent rule output', async t => {
4+
function processFile (t, filename) {
55
// Run previously via npm test, save off results, and read output
6-
return fileManager.readFile('./demo/test/snapshots/new-lint-results.txt')
6+
return fileManager.readFile(`./demo/test/snapshots/${filename}`)
77
.then((content) => {
8-
const eslintOutput = content.toString(); // content is instance of Buffer, so it needs to be parsed
9-
return t.snapshot(eslintOutput);
8+
const output = content.toString(); // content is instance of Buffer, so it needs to be parsed
9+
return t.snapshot(output);
1010
})
1111
.catch((err) => {
1212
console.log(err);
1313
return t.fail();
1414
});
15+
}
16+
17+
test('Should have consistent rule output', async t => {
18+
return processFile(t, 'new-lint-results.txt');
19+
});
20+
21+
test('Should have consistent eslint final config', async t => {
22+
return processFile(t, 'new-lint-final-config.json');
1523
});

demo/test/snapshots/lint-output.js.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ The actual snapshot is saved in `lint-output.js.snap`.
44

55
Generated by [AVA](https://ava.li).
66

7+
## Should have consistent eslint final config
8+
9+
> Snapshot 1
10+
11+
'{"env":{"browser":true,"mocha":true,"es2021":true,"node":true,"es6":true},"globals":{"__services__":true,"assert":true,"axe":true,"customElements":true,"CustomEvent":true,"d3":true,"Event":true,"expect":true,"fixture":true,"google":true,"FS":true,"FsBehaviors":true,"FSResearchHelpService":true,"FSTreeCommonRoutingService":true,"Headers":true,"HF":true,"HTMLElement":true,"indexedDB":true,"location":true,"Polymer":true,"ResettablePropertiesBehavior":true,"sessionStorage":true,"sinon":true,"WCI18n":true,"WCT":true,"document":"readonly","navigator":"readonly","window":"readonly"},"parser":"/home/vetaz/fs-webdev/eslint-config-tree/node_modules/babel-eslint/lib/index.js","parserOptions":{"ecmaVersion":2021,"ecmaFeatures":{"jsx":true},"sourceType":"module"},"plugins":["node","import","json","jsdoc","html","test-selectors","sonarjs","promise","deprecate","bestpractices"],"rules":{"accessor-pairs":["error",{"setWithoutGet":true,"enforceForClassMembers":true,"getWithoutSet":false}],"array-bracket-spacing":["warn","never"],"array-callback-return":["error",{"allowImplicit":false,"checkForEach":false}],"arrow-spacing":["error",{"before":true,"after":true}],"bestpractices/no-eslint-disable":["warn"],"block-spacing":["error","always"],"brace-style":["error","1tbs",{"allowSingleLine":true}],"camelcase":["error",{"allow":["^UNSAFE_"],"properties":"never","ignoreGlobals":true,"ignoreDestructuring":false,"ignoreImports":false}],"comma-dangle":["error",{"arrays":"never","objects":"never","imports":"never","exports":"never","functions":"never"}],"comma-spacing":["error",{"before":false,"after":true}],"comma-style":["error","last"],"complexity":["warn",{"max":8}],"computed-property-spacing":["error","never",{"enforceForClassMembers":true}],"constructor-super":["error"],"curly":["error","multi-line"],"default-case":["warn"],"default-case-last":["error"],"deprecate/function":["error",{"name":"deprecatedFunction","use":"function x from package y"}],"deprecate/import":["error",{"name":"path/to/legacyModule","use":"module x"}],"deprecate/member-expression":["error",{"name":"$.each","use":"native forEach"}],"dot-location":["error","property"],"dot-notation":["error",{"allowKeywords":true,"allowPattern":""}],"eol-last":["error"],"eqeqeq":["error","always",{"null":"ignore"}],"func-call-spacing":["error","never"],"generator-star-spacing":["error",{"before":true,"after":true}],"guard-for-in":["warn"],"import/export":["error"],"import/first":["error"],"import/no-absolute-path":["warn",{"esmodule":true,"commonjs":true,"amd":false}],"import/no-duplicates":["error"],"import/no-named-default":["error"],"import/no-webpack-loader-syntax":["error"],"indent":["error",2,{"SwitchCase":1,"VariableDeclarator":1,"outerIIFEBody":1,"MemberExpression":1,"FunctionDeclaration":{"parameters":1,"body":1},"FunctionExpression":{"parameters":1,"body":1},"CallExpression":{"arguments":1},"ArrayExpression":1,"ObjectExpression":1,"ImportDeclaration":1,"flatTernaryExpressions":false,"ignoreComments":false,"ignoredNodes":["TemplateLiteral *","JSXElement","JSXElement > *","JSXAttribute","JSXIdentifier","JSXNamespacedName","JSXMemberExpression","JSXSpreadAttribute","JSXExpressionContainer","JSXOpeningElement","JSXClosingElement","JSXFragment","JSXOpeningFragment","JSXClosingFragment","JSXText","JSXEmptyExpression","JSXSpreadChild"],"offsetTernaryExpressions":true}],"jsdoc/check-access":["off"],"jsdoc/check-alignment":["warn"],"jsdoc/check-examples":["warn"],"jsdoc/check-indentation":["off"],"jsdoc/check-param-names":["warn"],"jsdoc/check-syntax":["warn"],"jsdoc/check-tag-names":["warn"],"jsdoc/check-types":["warn"],"jsdoc/implements-on-classes":["warn"],"jsdoc/match-description":["warn"],"jsdoc/newline-after-description":["off"],"jsdoc/no-types":["off"],"jsdoc/no-undefined-types":["off"],"jsdoc/require-description":["warn"],"jsdoc/require-description-complete-sentence":["off"],"jsdoc/require-example":["off"],"jsdoc/require-file-overview":["off"],"jsdoc/require-hyphen-before-param-description":["warn"],"jsdoc/require-jsdoc":["off"],"jsdoc/require-param":["warn"],"jsdoc/require-param-description":["warn"],"jsdoc/require-param-name":["warn"],"jsdoc/require-param-type":["warn"],"jsdoc/require-returns":["warn"],"jsdoc/require-returns-check":["warn"],"jsdoc/require-returns-description":["warn"],"jsdoc/require-returns-type":["warn"],"jsdoc/require-throws":["off"],"jsdoc/valid-types":["warn"],"json/colon-expected":["error"],"json/comma-expected":["error"],"json/comma-or-close-backet-expected":["error"],"json/comma-or-close-brace-expected":["error"],"json/comment-not-permitted":["error"],"json/duplicate-key":["error"],"json/enum-value-mismatch":["error"],"json/invalid-character":["error"],"json/invalid-escape-character":["error"],"json/invalid-unicode":["error"],"json/property-expected":["error"],"json/schema-resolve-error":["error"],"json/trailing-comma":["error"],"json/undefined":["error"],"json/unexpected-end-of-comment":["error"],"json/unexpected-end-of-number":["error"],"json/unexpected-end-of-string":["error"],"json/unknown":["error"],"json/value-expected":["error"],"jsx-quotes":["off"],"key-spacing":["error",{"beforeColon":false,"afterColon":true}],"keyword-spacing":["error",{"before":true,"after":true}],"lines-between-class-members":["warn","always",{"exceptAfterSingleLine":true}],"multiline-ternary":["error","always-multiline"],"new-cap":["error",{"newIsCap":true,"capIsNew":false,"properties":true}],"new-parens":["error"],"no-alert":["error"],"no-array-constructor":["error"],"no-async-promise-executor":["error"],"no-caller":["error"],"no-case-declarations":["off"],"no-catch-shadow":["error"],"no-class-assign":["error"],"no-compare-neg-zero":["error"],"no-cond-assign":["error"],"no-console":["warn"],"no-const-assign":["error"],"no-constant-condition":["error",{"checkLoops":false}],"no-control-regex":["error"],"no-debugger":["error"],"no-delete-var":["error"],"no-div-regex":["error"],"no-dupe-args":["error"],"no-dupe-class-members":["error"],"no-dupe-keys":["error"],"no-duplicate-case":["error"],"no-else-return":["off"],"no-empty":["error",{"allowEmptyCatch":true}],"no-empty-character-class":["error"],"no-empty-pattern":["error"],"no-eq-null":["error"],"no-eval":["error"],"no-ex-assign":["error"],"no-extend-native":["error"],"no-extra-bind":["error"],"no-extra-boolean-cast":["error"],"no-extra-label":["warn"],"no-extra-parens":["error","functions"],"no-extra-semi":["error"],"no-fallthrough":["error"],"no-floating-decimal":["error"],"no-func-assign":["error"],"no-global-assign":["error"],"no-implicit-globals":["warn"],"no-implied-eval":["error"],"no-import-assign":["error"],"no-inner-declarations":["error"],"no-invalid-regexp":["error"],"no-invalid-this":["off"],"no-irregular-whitespace":["error"],"no-iterator":["error"],"no-label-var":["error"],"no-labels":["error",{"allowLoop":false,"allowSwitch":false}],"no-lone-blocks":["error"],"no-loop-func":["error"],"no-loss-of-precision":["error"],"no-magic-numbers":["off"],"no-misleading-character-class":["error"],"no-mixed-operators":["error",{"groups":[["==","!=","===","!==",">",">=","<","<="],["&&","||"],["in","instanceof"]],"allowSamePrecedence":true}],"no-mixed-spaces-and-tabs":["error"],"no-multi-spaces":["error"],"no-multi-str":["error"],"no-multiple-empty-lines":["error",{"max":1,"maxEOF":0}],"no-native-reassign":["error"],"no-new":["error"],"no-new-func":["error"],"no-new-object":["error"],"no-new-symbol":["error"],"no-new-wrappers":["error"],"no-obj-calls":["error"],"no-octal":["error"],"no-octal-escape":["error"],"no-param-reassign":["warn"],"no-process-env":["off"],"no-proto":["error"],"no-prototype-builtins":["warn"],"no-redeclare":["error",{"builtinGlobals":false}],"no-regex-spaces":["error"],"no-return-assign":["error","except-parens"],"no-script-url":["error"],"no-self-assign":["error",{"props":true}],"no-self-compare":["error"],"no-sequences":["error"],"no-shadow":["warn"],"no-shadow-restricted-names":["error"],"no-sparse-arrays":["error"],"no-tabs":["error"],"no-template-curly-in-string":["error"],"no-this-before-super":["error"],"no-throw-literal":["error"],"no-trailing-spaces":["error"],"no-undef":["error"],"no-undef-init":["error"],"no-undefined":["warn"],"no-unexpected-multiline":["error"],"no-unmodified-loop-condition":["error"],"no-unneeded-ternary":["error",{"defaultAssignment":false}],"no-unreachable":["error"],"no-unreachable-loop":["error"],"no-unsafe-finally":["error"],"no-unsafe-negation":["error"],"no-unused-expressions":["error",{"allowShortCircuit":true,"allowTernary":true,"allowTaggedTemplates":true,"enforceForJSX":false}],"no-unused-labels":["error"],"no-unused-vars":["error",{"args":"none","caughtErrors":"none","ignoreRestSiblings":true,"vars":"all"}],"no-use-before-define":["error",{"functions":false,"classes":false,"variables":false}],"no-useless-backreference":["error"],"no-useless-call":["error"],"no-useless-catch":["error"],"no-useless-computed-key":["error"],"no-useless-concat":["error"],"no-useless-constructor":["error"],"no-useless-escape":["error"],"no-useless-rename":["error"],"no-useless-return":["error"],"no-var":["warn"],"no-void":["error"],"no-warning-comments":["warn",{"terms":["FIXME","TODO","TO-DO","HACK","HERE BE DRAGONS"],"location":"anywhere"}],"no-whitespace-before-property":["error"],"no-with":["error"],"node/handle-callback-err":["error","^(err|error)$"],"node/no-callback-literal":["error"],"node/no-deprecated-api":["error"],"node/no-exports-assign":["error"],"node/no-new-require":["error"],"node/no-path-concat":["error"],"node/process-exit-as-throw":["error"],"object-curly-newline":["warn",{"multiline":true,"consistent":true}],"object-curly-spacing":["off","always"],"object-property-newline":["error",{"allowMultiplePropertiesPerLine":true,"allowAllPropertiesOnSameLine":false}],"one-var":["error",{"initialized":"never"}],"operator-linebreak":["error","after",{"overrides":{"?":"before",":":"before","|>":"before"}}],"padded-blocks":["error",{"blocks":"never","switches":"never","classes":"never"}],"prefer-const":["warn",{"destructuring":"all","ignoreReadBeforeAssign":false}],"prefer-promise-reject-errors":["error"],"prefer-regex-literals":["error",{"disallowRedundantWrapping":true}],"promise/always-return":["warn"],"promise/avoid-new":["warn"],"promise/catch-or-return":["warn",{"allowFinally":true}],"promise/no-callback-in-promise":["warn"],"promise/no-native":["off"],"promise/no-nesting":["warn"],"promise/no-new-statics":["warn"],"promise/no-promise-in-callback":["warn"],"promise/no-return-in-finally":["warn"],"promise/no-return-wrap":["warn"],"promise/param-names":["warn"],"promise/valid-params":["warn"],"quote-props":["off","as-needed"],"quotes":["off","single",{"avoidEscape":true,"allowTemplateLiterals":false}],"radix":["error"],"rest-spread-spacing":["error","never"],"semi":["error","always"],"semi-spacing":["error",{"before":false,"after":true}],"sonarjs/cognitive-complexity":["warn",25],"sonarjs/max-switch-cases":["warn",10],"sonarjs/no-all-duplicated-branches":["warn"],"sonarjs/no-collapsible-if":["warn"],"sonarjs/no-duplicate-string":["warn"],"sonarjs/no-duplicated-branches":["warn"],"sonarjs/no-element-overwrite":["warn"],"sonarjs/no-empty-collection":["warn"],"sonarjs/no-extra-arguments":["warn"],"sonarjs/no-gratuitous-expressions":["warn"],"sonarjs/no-identical-conditions":["warn"],"sonarjs/no-identical-expressions":["warn"],"sonarjs/no-identical-functions":["warn"],"sonarjs/no-inverted-boolean-check":["off"],"sonarjs/no-nested-switch":["warn"],"sonarjs/no-nested-template-literals":["warn"],"sonarjs/no-one-iteration-loop":["warn"],"sonarjs/no-redundant-boolean":["warn"],"sonarjs/no-redundant-jump":["warn"],"sonarjs/no-same-line-conditional":["warn"],"sonarjs/no-small-switch":["warn"],"sonarjs/no-unused-collection":["warn"],"sonarjs/no-use-of-empty-return-value":["warn"],"sonarjs/no-useless-catch":["warn"],"sonarjs/non-existent-operator":["warn"],"sonarjs/prefer-immediate-return":["warn"],"sonarjs/prefer-object-literal":["warn"],"sonarjs/prefer-single-boolean-return":["warn"],"sonarjs/prefer-while":["warn"],"space-before-blocks":["error","always"],"space-before-function-paren":["error","always"],"space-in-parens":["error","never"],"space-infix-ops":["error"],"space-unary-ops":["error",{"words":true,"nonwords":false}],"spaced-comment":["error","always",{"line":{"markers":["*package","!","/",",","="]},"block":{"balanced":true,"markers":["*package","!",",",":","::","flow-include"],"exceptions":["*"]}}],"strict":["off"],"symbol-description":["error"],"template-curly-spacing":["error","never"],"template-tag-spacing":["error","never"],"test-selectors/anchor":["warn","always",{"ignoreDisabled":false,"ignoreReadonly":false,"testAttribute":"data-testid"}],"test-selectors/button":["warn","always",{"ignoreDisabled":false,"ignoreReadonly":false,"testAttribute":"data-testid"}],"test-selectors/input":["warn","always",{"ignoreDisabled":false,"ignoreReadonly":false,"testAttribute":"data-testid"}],"test-selectors/onChange":["warn","always",{"ignoreDisabled":false,"ignoreReadonly":false,"testAttribute":"data-testid"}],"test-selectors/onClick":["warn","always",{"ignoreDisabled":false,"ignoreReadonly":false,"testAttribute":"data-testid"}],"test-selectors/onKeyDown":["warn","always",{"ignoreDisabled":false,"ignoreReadonly":false,"testAttribute":"data-testid"}],"test-selectors/onKeyUp":["warn","always",{"ignoreDisabled":false,"ignoreReadonly":false,"testAttribute":"data-testid"}],"unicode-bom":["error","never"],"use-isnan":["error",{"enforceForSwitchCase":true,"enforceForIndexOf":true}],"valid-jsdoc":["warn"],"valid-typeof":["error",{"requireStringLiterals":true}],"wrap-iife":["error","any",{"functionPrototypeMethods":true}],"yield-star-spacing":["error","both"],"yoda":["error","never"]},"settings":{},"ignorePatterns":[]}'
12+
713
## Should have consistent rule output
814

915
> Snapshot 1
3.64 KB
Binary file not shown.

format-config.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// This sorts the eslint final config rules in an alphabetical order to compare easier
2+
const finalConfig = require('./demo/test/snapshots/new-lint-final-config.json');
3+
const FS = require('fs');
4+
5+
const formattedRules = Object.fromEntries(Object.entries(finalConfig?.rules ?? {}).sort(([ruleNameA], [ruleNameB]) => {
6+
if (ruleNameA > ruleNameB) return 1;
7+
if (ruleNameB > ruleNameA) return -1;
8+
return 0;
9+
}));
10+
11+
// eslint-disable-next-line no-console -- We want to have the console.log here.
12+
FS.writeFile('./demo/test/snapshots/new-lint-final-config.json', JSON.stringify({ ...finalConfig, rules: formattedRules }), (err) => { if (err) console.log('There was an error writing to new-lint-final-config.json file:', err); });

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@
5656
"lint:fix": "eslint --ignore-pattern '.*' '**/*.html' '**/*.js' '**/*.json' --fix",
5757
"lint:quiet": "eslint --ignore-pattern '.*' '**/*.html' '**/*.js' '**/*.json' --quiet",
5858
"lint:report": "eslint --ignore-pattern '.*' '**/*.html' '**/*.js' '**/*.json' '**/*.html' --format html --output-file ./reports/linter/lintresults.html & eslint --ignore-pattern '.*' '**/*.js' '**/*.json' --format json --output-file ./reports/linter/lintresults.json",
59-
"lint:snapshot": "eslint --ignore-pattern '.*' '**/*.html' '**/*.js' '**/*.json' --no-color --output-file ./demo/test/snapshots/new-lint-results.txt; npm run test:format",
59+
"lint:snapshot": "eslint --ignore-pattern '.*' '**/*.html' '**/*.js' '**/*.json' --no-color --output-file ./demo/test/snapshots/new-lint-results.txt; eslint --print-config file.js > ./demo/test/snapshots/new-lint-final-config.json; npm run test:format",
6060
"preinstall": "git config --global url.https://github.com/.insteadOf git://github.com/",
6161
"postinstall": "npm rebuild husky",
6262
"test": "npm run lint:snapshot; ava",
63-
"test:format": "sed -i 's|^.*/demo/||g' demo/test/snapshots/new-lint-results.txt",
63+
"test:format": "sed -i 's|^.*/demo/||g' demo/test/snapshots/new-lint-results.txt; node format-config.js",
6464
"test:update": "npm run lint:snapshot; ava --update-snapshots"
6565
}
6666
}

0 commit comments

Comments
 (0)