Skip to content

Commit 0e2c045

Browse files
gnikonorovssbarnea
andauthored
Add ESLint to project (#367)
* Add ESLint to project * Change name of JavaScript GitHub action and also break ESLint to test CI * Unbreak ESLint * Move eslint to precommit, add more rules * alphabetize eslintrc rules Co-authored-by: Sorin Sbarnea <[email protected]>
1 parent 03040fe commit 0e2c045

File tree

3 files changed

+139
-70
lines changed

3 files changed

+139
-70
lines changed

.eslintrc.json

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
{
2+
"env": {
3+
"browser": true,
4+
"es2021": true
5+
},
6+
"extends": "eslint:recommended",
7+
"parserOptions": {
8+
"ecmaVersion": 12
9+
},
10+
"rules": {
11+
"array-bracket-spacing": "error",
12+
"block-scoped-var": "error",
13+
"block-spacing": "error",
14+
"brace-style": "error",
15+
"class-methods-use-this": "error",
16+
"consistent-return": "error",
17+
"default-case": "error",
18+
"default-case-last": "error",
19+
"default-param-last": "error",
20+
"grouped-accessor-pairs": "error",
21+
"indent": [
22+
"error",
23+
4
24+
],
25+
"linebreak-style": [
26+
"error",
27+
"unix"
28+
],
29+
"no-caller": "error",
30+
"no-console": "error",
31+
"no-empty-function": "error",
32+
"no-eval": "error",
33+
"no-extra-parens": "error",
34+
"no-labels": "error",
35+
"no-new": "error",
36+
"no-new-func": "error",
37+
"no-new-wrappers": "error",
38+
"no-return-await": "error",
39+
"no-script-url": "error",
40+
"no-self-compare": "error",
41+
"no-shadow": "error",
42+
"no-throw-literal": "error",
43+
"no-undefined": "error",
44+
"no-unreachable-loop": "error",
45+
"no-unused-expressions": "error",
46+
"no-useless-backreference": "error",
47+
"no-useless-concat": "error",
48+
"no-var": "error",
49+
"prefer-const": "error",
50+
"prefer-promise-reject-errors": "error",
51+
"require-atomic-updates": "error",
52+
"require-await": "error",
53+
"semi": [
54+
"error",
55+
"always"
56+
],
57+
"quotes": [
58+
"error",
59+
"single"
60+
],
61+
"yoda": "error"
62+
}
63+
}

.pre-commit-config.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ repos:
3737
hooks:
3838
- id: pyupgrade
3939
args: [--py3-plus]
40+
- repo: https://github.com/pre-commit/mirrors-eslint
41+
rev: v7.13.0
42+
hooks:
43+
- id: eslint
44+
additional_dependencies:
45+
46+
args: [pytest_html]
4047
- repo: local
4148
hooks:
4249
- id: rst

pytest_html/resources/main.js

Lines changed: 69 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function toArray(iter) {
1010
return Array.prototype.slice.call(iter);
1111
}
1212

13-
function find(selector, elem) {
13+
function find(selector, elem) { // eslint-disable-line no-redeclare
1414
if (!elem) {
1515
elem = document;
1616
}
@@ -26,8 +26,8 @@ function find_all(selector, elem) {
2626

2727
function sort_column(elem) {
2828
toggle_sort_states(elem);
29-
var colIndex = toArray(elem.parentNode.childNodes).indexOf(elem);
30-
var key;
29+
const colIndex = toArray(elem.parentNode.childNodes).indexOf(elem);
30+
let key;
3131
if (elem.classList.contains('numeric')) {
3232
key = key_num;
3333
} else if (elem.classList.contains('result')) {
@@ -40,75 +40,75 @@ function sort_column(elem) {
4040
sort_table(elem, key(colIndex));
4141
}
4242

43-
function show_all_extras() {
43+
function show_all_extras() { // eslint-disable-line no-unused-vars
4444
find_all('.col-result').forEach(show_extras);
4545
}
4646

47-
function hide_all_extras() {
47+
function hide_all_extras() { // eslint-disable-line no-unused-vars
4848
find_all('.col-result').forEach(hide_extras);
4949
}
5050

5151
function show_extras(colresult_elem) {
52-
var extras = colresult_elem.parentNode.nextElementSibling;
53-
var expandcollapse = colresult_elem.firstElementChild;
54-
extras.classList.remove("collapsed");
55-
expandcollapse.classList.remove("expander");
56-
expandcollapse.classList.add("collapser");
52+
const extras = colresult_elem.parentNode.nextElementSibling;
53+
const expandcollapse = colresult_elem.firstElementChild;
54+
extras.classList.remove('collapsed');
55+
expandcollapse.classList.remove('expander');
56+
expandcollapse.classList.add('collapser');
5757
}
5858

5959
function hide_extras(colresult_elem) {
60-
var extras = colresult_elem.parentNode.nextElementSibling;
61-
var expandcollapse = colresult_elem.firstElementChild;
62-
extras.classList.add("collapsed");
63-
expandcollapse.classList.remove("collapser");
64-
expandcollapse.classList.add("expander");
60+
const extras = colresult_elem.parentNode.nextElementSibling;
61+
const expandcollapse = colresult_elem.firstElementChild;
62+
extras.classList.add('collapsed');
63+
expandcollapse.classList.remove('collapser');
64+
expandcollapse.classList.add('expander');
6565
}
6666

6767
function show_filters() {
68-
var filter_items = document.getElementsByClassName('filter');
69-
for (var i = 0; i < filter_items.length; i++)
68+
const filter_items = document.getElementsByClassName('filter');
69+
for (let i = 0; i < filter_items.length; i++)
7070
filter_items[i].hidden = false;
7171
}
7272

7373
function add_collapse() {
7474
// Add links for show/hide all
75-
var resulttable = find('table#results-table');
76-
var showhideall = document.createElement("p");
75+
const resulttable = find('table#results-table');
76+
const showhideall = document.createElement('p');
7777
showhideall.innerHTML = '<a href="javascript:show_all_extras()">Show all details</a> / ' +
7878
'<a href="javascript:hide_all_extras()">Hide all details</a>';
7979
resulttable.parentElement.insertBefore(showhideall, resulttable);
8080

8181
// Add show/hide link to each result
8282
find_all('.col-result').forEach(function(elem) {
83-
var collapsed = get_query_parameter('collapsed') || 'Passed';
84-
var extras = elem.parentNode.nextElementSibling;
85-
var expandcollapse = document.createElement("span");
86-
if (extras.classList.contains("collapsed")) {
87-
expandcollapse.classList.add("expander")
83+
const collapsed = get_query_parameter('collapsed') || 'Passed';
84+
const extras = elem.parentNode.nextElementSibling;
85+
const expandcollapse = document.createElement('span');
86+
if (extras.classList.contains('collapsed')) {
87+
expandcollapse.classList.add('expander');
8888
} else if (collapsed.includes(elem.innerHTML)) {
89-
extras.classList.add("collapsed");
90-
expandcollapse.classList.add("expander");
89+
extras.classList.add('collapsed');
90+
expandcollapse.classList.add('expander');
9191
} else {
92-
expandcollapse.classList.add("collapser");
92+
expandcollapse.classList.add('collapser');
9393
}
9494
elem.appendChild(expandcollapse);
9595

96-
elem.addEventListener("click", function(event) {
97-
if (event.currentTarget.parentNode.nextElementSibling.classList.contains("collapsed")) {
96+
elem.addEventListener('click', function(event) {
97+
if (event.currentTarget.parentNode.nextElementSibling.classList.contains('collapsed')) {
9898
show_extras(event.currentTarget);
9999
} else {
100100
hide_extras(event.currentTarget);
101101
}
102102
});
103-
})
103+
});
104104
}
105105

106106
function get_query_parameter(name) {
107-
var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
107+
const match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
108108
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
109109
}
110110

111-
function init () {
111+
function init () { // eslint-disable-line no-unused-vars
112112
reset_sort_headers();
113113

114114
add_collapse();
@@ -118,52 +118,51 @@ function init () {
118118
sort_column(find('.initial-sort'));
119119

120120
find_all('.sortable').forEach(function(elem) {
121-
elem.addEventListener("click",
122-
function(event) {
123-
sort_column(elem);
124-
}, false)
121+
elem.addEventListener('click',
122+
function() {
123+
sort_column(elem);
124+
}, false);
125125
});
126-
127-
};
126+
}
128127

129128
function sort_table(clicked, key_func) {
130-
var rows = find_all('.results-table-row');
131-
var reversed = !clicked.classList.contains('asc');
132-
var sorted_rows = sort(rows, key_func, reversed);
129+
const rows = find_all('.results-table-row');
130+
const reversed = !clicked.classList.contains('asc');
131+
const sorted_rows = sort(rows, key_func, reversed);
133132
/* Whole table is removed here because browsers acts much slower
134133
* when appending existing elements.
135134
*/
136-
var thead = document.getElementById("results-table-head");
135+
const thead = document.getElementById('results-table-head');
137136
document.getElementById('results-table').remove();
138-
var parent = document.createElement("table");
139-
parent.id = "results-table";
137+
const parent = document.createElement('table');
138+
parent.id = 'results-table';
140139
parent.appendChild(thead);
141140
sorted_rows.forEach(function(elem) {
142141
parent.appendChild(elem);
143142
});
144-
document.getElementsByTagName("BODY")[0].appendChild(parent);
143+
document.getElementsByTagName('BODY')[0].appendChild(parent);
145144
}
146145

147146
function sort(items, key_func, reversed) {
148-
var sort_array = items.map(function(item, i) {
147+
const sort_array = items.map(function(item, i) {
149148
return [key_func(item), i];
150149
});
151150

152151
sort_array.sort(function(a, b) {
153-
var key_a = a[0];
154-
var key_b = b[0];
152+
const key_a = a[0];
153+
const key_b = b[0];
155154

156155
if (key_a == key_b) return 0;
157156

158157
if (reversed) {
159-
return (key_a < key_b ? 1 : -1);
158+
return key_a < key_b ? 1 : -1;
160159
} else {
161-
return (key_a > key_b ? 1 : -1);
160+
return key_a > key_b ? 1 : -1;
162161
}
163162
});
164163

165164
return sort_array.map(function(item) {
166-
var index = item[1];
165+
const index = item[1];
167166
return items[index];
168167
});
169168
}
@@ -182,15 +181,15 @@ function key_num(col_index) {
182181

183182
function key_link(col_index) {
184183
return function(elem) {
185-
dataCell = elem.childNodes[1].childNodes[col_index].firstChild
186-
return dataCell == null ? "" : dataCell.innerText.toLowerCase();
184+
const dataCell = elem.childNodes[1].childNodes[col_index].firstChild;
185+
return dataCell == null ? '' : dataCell.innerText.toLowerCase();
187186
};
188187
}
189188

190189
function key_result(col_index) {
191190
return function(elem) {
192-
var strings = ['Error', 'Failed', 'Rerun', 'XFailed', 'XPassed',
193-
'Skipped', 'Passed'];
191+
const strings = ['Error', 'Failed', 'Rerun', 'XFailed', 'XPassed',
192+
'Skipped', 'Passed'];
194193
return strings.indexOf(elem.childNodes[1].childNodes[col_index].firstChild.data);
195194
};
196195
}
@@ -200,12 +199,12 @@ function reset_sort_headers() {
200199
elem.parentNode.removeChild(elem);
201200
});
202201
find_all('.sortable').forEach(function(elem) {
203-
var icon = document.createElement("div");
204-
icon.className = "sort-icon";
205-
icon.textContent = "vvv";
202+
const icon = document.createElement('div');
203+
icon.className = 'sort-icon';
204+
icon.textContent = 'vvv';
206205
elem.insertBefore(icon, elem.firstChild);
207-
elem.classList.remove("desc", "active");
208-
elem.classList.add("asc", "inactive");
206+
elem.classList.remove('desc', 'active');
207+
elem.classList.add('asc', 'inactive');
209208
});
210209
}
211210

@@ -225,21 +224,21 @@ function toggle_sort_states(elem) {
225224
}
226225

227226
function is_all_rows_hidden(value) {
228-
return value.hidden == false;
227+
return value.hidden == false;
229228
}
230229

231-
function filter_table(elem) {
232-
var outcome_att = "data-test-result";
233-
var outcome = elem.getAttribute(outcome_att);
234-
class_outcome = outcome + " results-table-row";
235-
var outcome_rows = document.getElementsByClassName(class_outcome);
230+
function filter_table(elem) { // eslint-disable-line no-unused-vars
231+
const outcome_att = 'data-test-result';
232+
const outcome = elem.getAttribute(outcome_att);
233+
const class_outcome = outcome + ' results-table-row';
234+
const outcome_rows = document.getElementsByClassName(class_outcome);
236235

237-
for(var i = 0; i < outcome_rows.length; i++){
236+
for(let i = 0; i < outcome_rows.length; i++){
238237
outcome_rows[i].hidden = !elem.checked;
239238
}
240239

241-
var rows = find_all('.results-table-row').filter(is_all_rows_hidden);
242-
var all_rows_hidden = rows.length == 0 ? true : false;
243-
var not_found_message = document.getElementById("not-found-message");
240+
const rows = find_all('.results-table-row').filter(is_all_rows_hidden);
241+
const all_rows_hidden = rows.length == 0 ? true : false;
242+
const not_found_message = document.getElementById('not-found-message');
244243
not_found_message.hidden = !all_rows_hidden;
245244
}

0 commit comments

Comments
 (0)