Skip to content

Commit 573445e

Browse files
committed
Fix: Support cells.pop()
1 parent 43175f1 commit 573445e

File tree

5 files changed

+42
-6
lines changed

5 files changed

+42
-6
lines changed

src/pytest_html/basereport.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,8 @@ def pytest_sessionstart(self, session):
246246

247247
header_cells = Header()
248248
session.config.hook.pytest_html_results_table_header(cells=header_cells)
249-
250249
self._report.set_data("resultsTableHeader", header_cells.html)
250+
self._report.set_data("headerPops", header_cells.get_pops())
251251

252252
self._report.set_data("runningState", "Started")
253253
self._generate_report()

src/pytest_html/scripts/main.js

+11
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,17 @@ const renderContent = (tests) => {
4444
table.querySelectorAll('.extra').forEach((item) => {
4545
item.colSpan = document.querySelectorAll('th').length
4646
})
47+
48+
const { headerPops } = manager.renderData
49+
// remove 'headerPops' number of header columns
50+
findAll('#results-table-head th').splice(-headerPops).forEach(column => column.remove())
51+
52+
// remove 'headerPops' number of row columns
53+
const resultRows = findAll('.results-table-row')
54+
resultRows.forEach((elem) => {
55+
findAll('td:not(.extra)', elem).splice(-headerPops).forEach(column => column.remove())
56+
})
57+
4758
findAll('.sortable').forEach((elem) => {
4859
elem.addEventListener('click', (evt) => {
4960
const { target: element } = evt

src/pytest_html/scripts/sort.js

-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ const doInitSort = () => {
2929
const ascending = storageModule.getSortDirection()
3030
const list = manager.testSubset
3131
const initialOrder = ['Error', 'Failed', 'Rerun', 'XFailed', 'XPassed', 'Skipped', 'Passed']
32-
console.log(list)
3332
if (type?.toLowerCase() === 'original') {
3433
manager.setRender(list)
3534
} else {

src/pytest_html/table.py

+9-4
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class Cell(Table):
3333
def __init__(self):
3434
super().__init__()
3535
self._append_counter = 0
36+
self._pop_counter = 0
3637
self._sortables = dict()
3738

3839
def __setitem__(self, key, value):
@@ -69,10 +70,10 @@ def insert(self, index, html):
6970
self._html[index] = html
7071

7172
def pop(self, *args):
72-
warnings.warn(
73-
"'pop' is deprecated and no longer supported.",
74-
DeprecationWarning,
75-
)
73+
self._pop_counter += 1
74+
75+
def get_pops(self):
76+
return self._pop_counter
7677

7778
def _extract_sortable(self, html):
7879
match = re.search(r'<td class="col-(\w+)">(.*?)</', html)
@@ -90,3 +91,7 @@ class Row(Cell):
9091
def __delitem__(self, key):
9192
# This means the item should be removed
9293
self._html = None
94+
95+
def pop(self, *args):
96+
# Calling pop on header is sufficient
97+
pass

testing/test_integration.py

+21
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,27 @@ def test_pass(): pass
690690
page = run(pytester)
691691
assert_results(page, passed=1)
692692

693+
def test_results_table_hook_pop(self, pytester):
694+
pytester.makeconftest(
695+
"""
696+
def pytest_html_results_table_header(cells):
697+
cells.pop()
698+
699+
def pytest_html_results_table_row(report, cells):
700+
cells.pop()
701+
"""
702+
)
703+
pytester.makepyfile("def test_pass(): pass")
704+
page = run(pytester)
705+
706+
header_columns = page.select(".summary #results-table-head th")
707+
assert_that(header_columns).is_length(3)
708+
709+
row_columns = page.select_one(".summary .results-table-row").select(
710+
"td:not(.extra)"
711+
)
712+
assert_that(row_columns).is_length(3)
713+
693714
@pytest.mark.parametrize("no_capture", ["", "-s"])
694715
def test_standard_streams(self, pytester, no_capture):
695716
pytester.makepyfile(

0 commit comments

Comments
 (0)