Skip to content

Commit 5f0a3b3

Browse files
committed
Chore: Add eslint
1 parent bab8e54 commit 5f0a3b3

File tree

9 files changed

+59
-54
lines changed

9 files changed

+59
-54
lines changed

.github/workflows/tests.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ jobs:
6666
node-version: '16.x'
6767
- name: Install dependencies
6868
run: npm ci
69+
- name: Run linting
70+
run: npm run lint
6971
- name: Run tests
7072
run: npm run unit
7173
- name: Upload coverage to codecov

.pre-commit-config.yaml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,14 @@ repos:
4343
- id: pyupgrade
4444
args: [--py3-plus]
4545

46-
# - repo: https://github.com/pre-commit/mirrors-eslint
47-
# rev: v7.13.0
48-
# hooks:
49-
# - id: eslint
50-
# additional_dependencies:
51-
52-
# args: [src]
46+
- repo: https://github.com/pre-commit/mirrors-eslint
47+
rev: v8.38.0
48+
hooks:
49+
- id: eslint
50+
additional_dependencies:
51+
52+
53+
args: ["--fix"]
5354

5455
- repo: local
5556
hooks:

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"build:ci": "npm run build:css && npm run build:jsapp",
55
"build:css": "sass --no-source-map --no-error-css src/layout/css/style.scss src/pytest_html/resources/style.css",
66
"build:jsapp": "browserify ./src/pytest_html/scripts/index.js > ./src/pytest_html/resources/app.js",
7-
"build": "npm run unit && npm run build:css && npm run build:jsapp"
7+
"build": "npm run lint && npm run unit && npm run build:css && npm run build:jsapp",
8+
"lint": "eslint src/pytest_html/scripts/ testing/"
89
},
910
"devDependencies": {
1011
"browserify": "^17.0.0",

src/pytest_html/scripts/dom.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ const dom = {
5555

5656
const regex = /data-column-type="(\w+)/
5757
const cols = Object.values(resultsTableHeader).reduce((result, value) => {
58-
if (value.includes("sortable")) {
58+
if (value.includes('sortable')) {
5959
const matches = regex.exec(value)
6060
if (matches) {
6161
result.push(matches[1])
@@ -82,8 +82,6 @@ const dom = {
8282
getColGroup: () => templateCollGroup.content.cloneNode(true),
8383
getResultTBody: ({ testId, id, log, duration, extras, resultsTableRow, tableHtml, result, collapsed }) => {
8484
const resultLower = result.toLowerCase()
85-
let formattedDuration = formatDuration(duration)
86-
formattedDuration = formatDuration < 1 ? formattedDuration.ms : formattedDuration.formatted
8785
const resultBody = templateResult.content.cloneNode(true)
8886
resultBody.querySelector('tbody').classList.add(resultLower)
8987
resultBody.querySelector('tbody').id = testId
@@ -92,7 +90,8 @@ const dom = {
9290
resultBody.querySelector('.col-result').dataset.id = id
9391
resultBody.querySelector('.col-name').innerText = testId
9492

95-
resultBody.querySelector('.col-duration').innerText = duration < 1 ? formatDuration(duration).ms : formatDuration(duration).formatted
93+
const formattedDuration = duration < 1 ? formatDuration(duration).ms : formatDuration(duration).formatted
94+
resultBody.querySelector('.col-duration').innerText = formattedDuration
9695

9796
if (log) {
9897
// Wrap lines starting with "E" with span.error to color those lines red

src/pytest_html/scripts/main.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ const renderContent = (tests) => {
4848
const { headerPops } = manager.renderData
4949
if (headerPops > 0) {
5050
// remove 'headerPops' number of header columns
51-
findAll('#results-table-head th').splice(-headerPops).forEach(column => column.remove())
51+
findAll('#results-table-head th').splice(-headerPops).forEach((column) => column.remove())
5252

5353
// remove 'headerPops' number of row columns
5454
const resultRows = findAll('.results-table-row')
5555
resultRows.forEach((elem) => {
56-
findAll('td:not(.extra)', elem).splice(-headerPops).forEach(column => column.remove())
56+
findAll('td:not(.extra)', elem).splice(-headerPops).forEach((column) => column.remove())
5757
})
5858
}
5959

src/pytest_html/scripts/sort.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ const genericSort = (list, key, ascending, customOrder) => {
88
const aValue = a.result.toLowerCase()
99
const bValue = b.result.toLowerCase()
1010

11-
const aIndex = customOrder.findIndex(item => item.toLowerCase() === aValue)
12-
const bIndex = customOrder.findIndex(item => item.toLowerCase() === bValue)
11+
const aIndex = customOrder.findIndex((item) => item.toLowerCase() === aValue)
12+
const bIndex = customOrder.findIndex((item) => item.toLowerCase() === bValue)
1313

1414
// Compare the indices to determine the sort order
1515
return aIndex - bIndex

src/pytest_html/scripts/storage.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -64,18 +64,18 @@ const getCollapsedCategory = (config) => {
6464
const url = new URL(window.location.href)
6565
const collapsedItems = new URLSearchParams(url.search).get('collapsed')
6666
switch (true) {
67-
case !config && collapsedItems === null:
68-
categories = ['passed']
69-
break
70-
case collapsedItems?.length === 0 || /^["']{2}$/.test(collapsedItems):
71-
categories = []
72-
break
73-
case /^all$/.test(collapsedItems) || (collapsedItems === null && /^all$/.test(config)):
74-
categories = [...possibleFilters]
75-
break
76-
default:
77-
categories = collapsedItems?.split(',').map(item => item.toLowerCase()) || config
78-
break
67+
case !config && collapsedItems === null:
68+
categories = ['passed']
69+
break
70+
case collapsedItems?.length === 0 || /^["']{2}$/.test(collapsedItems):
71+
categories = []
72+
break
73+
case /^all$/.test(collapsedItems) || collapsedItems === null && /^all$/.test(config):
74+
categories = [...possibleFilters]
75+
break
76+
default:
77+
categories = collapsedItems?.split(',').map((item) => item.toLowerCase()) || config
78+
break
7979
}
8080
} else {
8181
categories = []

src/pytest_html/scripts/utils.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const formattedNumber = (number) =>
66

77
const formatDuration = ( totalSeconds ) => {
88
if (totalSeconds < 1) {
9-
return {ms: `${Math.round(totalSeconds * 1000)} ms`}
9+
return { ms: `${Math.round(totalSeconds * 1000)} ms` }
1010
}
1111

1212
const hours = Math.floor(totalSeconds / 3600)
@@ -16,16 +16,18 @@ const formatDuration = ( totalSeconds ) => {
1616
const seconds = Math.round(remainingSeconds)
1717

1818
return {
19-
seconds: `${Math.round(totalSeconds)} seconds`,
20-
formatted: `${formattedNumber(hours)}:${formattedNumber(minutes)}:${formattedNumber(seconds)}`,
19+
seconds: `${Math.round(totalSeconds)} seconds`,
20+
formatted: `${formattedNumber(hours)}:${formattedNumber(minutes)}:${formattedNumber(seconds)}`,
2121
}
2222
}
2323

2424
const transformTableObj = (obj) => {
2525
const appends = {}
2626
const inserts = {}
2727
for (const key in obj) {
28-
key.startsWith("Z") ? appends[key] = obj[key] : inserts[key] = obj[key]
28+
if (Object.hasOwn(obj, key)) {
29+
key.startsWith('Z') ? appends[key] = obj[key] : inserts[key] = obj[key]
30+
}
2931
}
3032
return {
3133
appends,

testing/unittest.js

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -168,19 +168,19 @@ describe('utils tests', () => {
168168
})
169169
describe('transformTableObj', () => {
170170
it('handles empty object', () => {
171-
expect(transformTableObj({})).to.eql({appends: {}, inserts: {}})
171+
expect(transformTableObj({})).to.eql({ appends: {}, inserts: {} })
172172
})
173173
it('handles no appends', () => {
174-
const expected = {1: "hello", 2: "goodbye"}
175-
expect(transformTableObj(expected)).to.eql({appends: {}, inserts: expected})
174+
const expected = { 1: 'hello', 2: 'goodbye' }
175+
expect(transformTableObj(expected)).to.eql({ appends: {}, inserts: expected })
176176
})
177177
it('handles no inserts', () => {
178-
const expected = {"Z1": "hello", "Z2": "goodbye"}
179-
expect(transformTableObj(expected)).to.eql({appends: expected, inserts: {}})
178+
const expected = { 'Z1': 'hello', 'Z2': 'goodbye' }
179+
expect(transformTableObj(expected)).to.eql({ appends: expected, inserts: {} })
180180
})
181181
it('handles both', () => {
182-
const expected = {appends: {"Z1": "hello", "Z2": "goodbye"}, inserts: {1: "mee", 2: "moo"}}
183-
expect(transformTableObj({...expected.appends, ...expected.inserts})).to.eql(expected)
182+
const expected = { appends: { 'Z1': 'hello', 'Z2': 'goodbye' }, inserts: { 1: 'mee', 2: 'moo' } }
183+
expect(transformTableObj({ ...expected.appends, ...expected.inserts })).to.eql(expected)
184184
})
185185
})
186186
})
@@ -191,8 +191,8 @@ describe('Storage tests', () => {
191191
const mockWindow = (queryParam) => {
192192
const mock = {
193193
location: {
194-
href: `https://example.com/page?${queryParam}`
195-
}
194+
href: `https://example.com/page?${queryParam}`,
195+
},
196196
}
197197
originalWindow = global.window
198198
global.window = mock
@@ -224,10 +224,10 @@ describe('Storage tests', () => {
224224
})
225225

226226
const config = [
227-
{ value: ['failed', 'error'], expected: ['failed', 'error'] },
228-
{ value: ['all'], expected: storageModule.possibleFilters }
227+
{ value: ['failed', 'error'], expected: ['failed', 'error'] },
228+
{ value: ['all'], expected: storageModule.possibleFilters },
229229
]
230-
config.forEach(({value, expected}) => {
230+
config.forEach(({ value, expected }) => {
231231
it(`handles python config: ${value}`, () => {
232232
mockWindow()
233233
const collapsedItems = storageModule.getCollapsedCategory(value)
@@ -236,25 +236,25 @@ describe('Storage tests', () => {
236236
})
237237

238238
const precedence = [
239-
{query: 'collapsed=xpassed,xfailed', config: ['failed', 'error'], expected: ['xpassed', 'xfailed']},
240-
{query: 'collapsed=all', config: ['failed', 'error'], expected: storageModule.possibleFilters},
241-
{query: 'collapsed=xpassed,xfailed', config: ['all'], expected: ['xpassed', 'xfailed']},
239+
{ query: 'collapsed=xpassed,xfailed', value: ['failed', 'error'], expected: ['xpassed', 'xfailed'] },
240+
{ query: 'collapsed=all', value: ['failed', 'error'], expected: storageModule.possibleFilters },
241+
{ query: 'collapsed=xpassed,xfailed', value: ['all'], expected: ['xpassed', 'xfailed'] },
242242
]
243-
precedence.forEach(({query, config, expected}, index) => {
243+
precedence.forEach(({ query, value, expected }, index) => {
244244
it(`handles python config precedence ${index + 1}`, () => {
245245
mockWindow(query)
246-
const collapsedItems = storageModule.getCollapsedCategory(config)
246+
const collapsedItems = storageModule.getCollapsedCategory(value)
247247
expect(collapsedItems).to.eql(expected)
248248
})
249249
})
250250

251251
const falsy = [
252-
{ param: 'collapsed' },
253-
{ param: 'collapsed=' },
254-
{ param: 'collapsed=""' },
255-
{ param: 'collapsed=\'\'' }
252+
{ param: 'collapsed' },
253+
{ param: 'collapsed=' },
254+
{ param: 'collapsed=""' },
255+
{ param: 'collapsed=\'\'' },
256256
]
257-
falsy.forEach(({param}) => {
257+
falsy.forEach(({ param }) => {
258258
it(`collapses none with ${param}`, () => {
259259
mockWindow(param)
260260
const collapsedItems = storageModule.getCollapsedCategory()

0 commit comments

Comments
 (0)