Skip to content

Commit

Permalink
feat(package): enable ecmascript 2020
Browse files Browse the repository at this point in the history
Update the supported ecmascript version to 2020, and set source type
to script. Additionally includes some default ignore patterns for
node_modules, coverage and .nyc_output. Additionally moves
`eslintrc.json` to `.eslintrc.json` so the lint rules can be used to
lint this package

Semver: minor
  • Loading branch information
esatterwhite committed Mar 23, 2021
1 parent 74b5f37 commit a0339e7
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 55 deletions.
8 changes: 7 additions & 1 deletion eslintrc.json → .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,17 @@
"SharedArrayBuffer": "readonly"
},
"parserOptions": {
"ecmaVersion": 2019,
"ecmaVersion": 2020,
"sourceType": "script",
"ecmaFeatures": {
"globalReturn": true
}
},
"ignorePatterns": [
"node_modules/",
"coverage/",
".nyc_output"
],
"plugins": [
"node",
"sensible",
Expand Down
2 changes: 2 additions & 0 deletions .taprc
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ output-file: coverage/.tap-output
coverage-report:
- text
- text-summary
- json
- json-summary
- html
files:
- test/*.js
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict'

module.exports = require('./eslintrc.json')
module.exports = require('./.eslintrc.json')
15 changes: 4 additions & 11 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,12 @@
"version": "4.1.0",
"description": "LogDNA's preferred eslint config to be used across all projects",
"main": "index.js",
"private": false,
"scripts": {
"lint": "eslint ./",
"pretest": "npm run lint",
"test": "tools/test.sh"
},
"eslintConfig": {
"root": true,
"ignorePatterns": [
"node_modules/",
"coverage/"
],
"parserOptions": {
"ecmaVersion": 2019
}
},
"private": false,
"publishConfig": {
"access": "public"
},
Expand All @@ -31,6 +21,9 @@
"email": "help@logdna.com"
},
"license": "MIT",
"eslintConfig": {
"root": true
},
"bugs": {
"url": "https://github.com/logdna/eslint-config-logdna/issues"
},
Expand Down
2 changes: 1 addition & 1 deletion test/basic.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict'

const config = require('../index.js')
const {test, threw} = require('tap')
const config = require('../index.js')

function isObject(obj) {
return typeof obj === 'object' && obj !== null
Expand Down
4 changes: 2 additions & 2 deletions test/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ test('valid config', async (t) => {
const code = await readFile(VALID_CODE, 'utf8')
const cli = new CLIEngine({
useEslintrc: false
, configFile: 'eslintrc.json'
, configFile: '.eslintrc.json'
})

const result = cli.executeOnText(code)
t.equal(result.errorCount, 0, 'error count')
t.strictEqual(result.errorCount, 0, 'error count')
}).catch(threw)
102 changes: 63 additions & 39 deletions test/failures.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,68 +8,88 @@ test('Invalid linting for larger code blocks read from fixtures', async (t) => {
const cli = new CLIEngine({
useEslintrc: false
, cwd: path.join(__dirname, 'fixtures')
, configFile: '../../eslintrc.json'
, configFile: '../../.eslintrc.json'
})

t.test('no-eol', async (t) => {
const result = cli.executeOnFiles(['no-eol-fixture'])
t.equal(result.errorCount, 1, 'error count')
t.equal(result.results[0].messages[0].ruleId, 'eol-last', 'missing newline')
t.strictEqual(result.errorCount, 1, 'error count')
t.strictEqual(result.results[0].messages[0].ruleId, 'eol-last', 'missing newline')
})

t.test('max-len', async (t) => {
const result = cli.executeOnFiles(['max-len-fixture'])
t.equal(result.errorCount, 1, 'error count')
t.strictEqual(result.errorCount, 1, 'error count')
const messages = result.results[0].messages

t.equal(messages[0].ruleId, 'max-len', 'max length exceeded')
t.match(messages[0].message, /maximum allowed is 90/ig, 'message expected line length')
t.strictEqual(messages[0].ruleId, 'max-len', 'max length exceeded')
t.match(
messages[0].message
, /maximum allowed is 90/ig
, 'message expected line length'
)
})

t.test('no-debugger', async (t) => {
const result = cli.executeOnFiles(['no-debugger-fixture'])
t.equal(result.errorCount, 1, 'error count')
t.equal(result.results[0].messages[0].ruleId, 'no-debugger', 'missing newline')
t.strictEqual(result.errorCount, 1, 'error count')
t.strictEqual(result.results[0].messages[0].ruleId, 'no-debugger', 'missing newline')
})

t.test('plugin-logdna', async (t) => {
const result = cli.executeOnFiles(['logdna-plugin-fixture'])
const messages = result.results[0].messages
t.equal(result.errorCount, 5, 'error count')
t.strictEqual(result.errorCount, 5, 'error count')

t.equal(messages[0].ruleId, 'logdna/require-file-extension', 'file extension required')
t.equal(
t.strictEqual(
messages[0].ruleId
, 'logdna/require-file-extension'
, 'file extension required'
)
t.strictEqual(
messages[0].message
, 'Missing file extension for local module.'
, 'message expected file extension'
, 'Missing file extension for local module.'
, 'message expected file extension'
)

t.equal(messages[1].ruleId, 'sensible/check-require', 'required module is missing')
t.equal(
t.strictEqual(
messages[1].ruleId
, 'sensible/check-require'
, 'required module is missing'
)
t.strictEqual(
messages[1].message
, 'Missing require: ./test/basic. Path does not exist'
, 'message expected for missing module'
, 'Missing require: ./test/basic. Path does not exist'
, 'message expected for missing module'
)

t.equal(messages[2].ruleId, 'logdna/grouped-require', 'require grouping')
t.equal(
t.strictEqual(messages[2].ruleId, 'logdna/grouped-require', 'require grouping')
t.strictEqual(
messages[2].message
, 'Expected \'builtin\' require before \'local\' require.'
, 'message expected for grouped require'
, 'Expected \'builtin\' require before \'local\' require.'
, 'message expected for grouped require'
)

t.equal(messages[3].ruleId, 'logdna/tap-consistent-assertions', 'consistent assertions')
t.equal(
t.strictEqual(
messages[3].ruleId
, 'logdna/tap-consistent-assertions'
, 'consistent assertions'
)
t.strictEqual(
messages[3].message
, 'The "strictEqual" alias is preferred over "isEqual"'
, 'message expected preferred alias'
, 'The "strictEqual" alias is preferred over "isEqual"'
, 'message expected preferred alias'
)

t.equal(messages[4].ruleId, 'logdna/tap-consistent-assertions', 'consistent assertions')
t.equal(
t.strictEqual(
messages[4].ruleId
, 'logdna/tap-consistent-assertions'
, 'consistent assertions'
)
t.strictEqual(
messages[4].message
, 'The "deepEqual" alias is preferred over "same"'
, 'message expected preferred alias'
, 'The "deepEqual" alias is preferred over "same"'
, 'message expected preferred alias'
)
})
}).catch(threw)
Expand All @@ -78,7 +98,7 @@ test('Invlalid linting with quick-and-dirty inline code', async (t) => {
const cli = new CLIEngine({
useEslintrc: false
, cwd: __dirname
, configFile: '../eslintrc.json'
, configFile: '../.eslintrc.json'
, rules: {
'strict': 'off'
, 'sensible/indent': 'off'
Expand All @@ -91,11 +111,11 @@ test('Invlalid linting with quick-and-dirty inline code', async (t) => {
const code = '[].map(thing => { return thing + 1 })'

const result = cli.executeOnText(code)
t.equal(result.errorCount, 1, 'error count')
t.strictEqual(result.errorCount, 1, 'error count')
const messages = result.results[0].messages

t.equal(messages[0].ruleId, 'arrow-parens', 'arrow-parens is the rule id')
t.equal(
t.strictEqual(messages[0].ruleId, 'arrow-parens', 'arrow-parens is the rule id')
t.strictEqual(
messages[0].message
, 'Expected parentheses around arrow function argument.'
, 'Error message is correct'
Expand All @@ -106,11 +126,15 @@ test('Invlalid linting with quick-and-dirty inline code', async (t) => {
const code = '[].map((thing) => thing + 1)'

const result = cli.executeOnText(code)
t.equal(result.errorCount, 1, 'error count')
t.strictEqual(result.errorCount, 1, 'error count')
const messages = result.results[0].messages

t.equal(messages[0].ruleId, 'arrow-body-style', 'arrow-body-style is the rule id')
t.equal(
t.strictEqual(
messages[0].ruleId
, 'arrow-body-style'
, 'arrow-body-style is the rule id'
)
t.strictEqual(
messages[0].message
, 'Expected block statement surrounding arrow body.'
, 'Error message is correct'
Expand All @@ -121,11 +145,11 @@ test('Invlalid linting with quick-and-dirty inline code', async (t) => {
const code = 'const NOOP = () => {}'

const result = cli.executeOnText(code)
t.equal(result.errorCount, 1, 'error count')
t.strictEqual(result.errorCount, 1, 'error count')
const messages = result.results[0].messages

t.equal(messages[0].ruleId, 'func-style', 'func-style is the rule id')
t.equal(
t.strictEqual(messages[0].ruleId, 'func-style', 'func-style is the rule id')
t.strictEqual(
messages[0].message
, 'Expected a function declaration.'
, 'Error message is correct'
Expand Down

0 comments on commit a0339e7

Please sign in to comment.