-
Notifications
You must be signed in to change notification settings - Fork 107
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a3a763d
commit be540b3
Showing
10 changed files
with
1,782 additions
and
1,404 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,292 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta charset="utf-8"/> | ||
<title>pyadi-iio Test Report</title> | ||
<link href="assets/style.css" rel="stylesheet" type="text/css"/></head> | ||
<body onLoad="init()"> | ||
<script>/* This Source Code Form is subject to the terms of the Mozilla Public | ||
* License, v. 2.0. If a copy of the MPL was not distributed with this file, | ||
* You can obtain one at http://mozilla.org/MPL/2.0/. */ | ||
|
||
|
||
function toArray(iter) { | ||
if (iter === null) { | ||
return null; | ||
} | ||
return Array.prototype.slice.call(iter); | ||
} | ||
|
||
function find(selector, elem) { // eslint-disable-line no-redeclare | ||
if (!elem) { | ||
elem = document; | ||
} | ||
return elem.querySelector(selector); | ||
} | ||
|
||
function findAll(selector, elem) { | ||
if (!elem) { | ||
elem = document; | ||
} | ||
return toArray(elem.querySelectorAll(selector)); | ||
} | ||
|
||
function sortColumn(elem) { | ||
toggleSortStates(elem); | ||
const colIndex = toArray(elem.parentNode.childNodes).indexOf(elem); | ||
let key; | ||
if (elem.classList.contains('result')) { | ||
key = keyResult; | ||
} else if (elem.classList.contains('links')) { | ||
key = keyLink; | ||
} else { | ||
key = keyAlpha; | ||
} | ||
sortTable(elem, key(colIndex)); | ||
} | ||
|
||
function showAllExtras() { // eslint-disable-line no-unused-vars | ||
findAll('.col-result').forEach(showExtras); | ||
} | ||
|
||
function hideAllExtras() { // eslint-disable-line no-unused-vars | ||
findAll('.col-result').forEach(hideExtras); | ||
} | ||
|
||
function showExtras(colresultElem) { | ||
const extras = colresultElem.parentNode.nextElementSibling; | ||
const expandcollapse = colresultElem.firstElementChild; | ||
extras.classList.remove('collapsed'); | ||
expandcollapse.classList.remove('expander'); | ||
expandcollapse.classList.add('collapser'); | ||
} | ||
|
||
function hideExtras(colresultElem) { | ||
const extras = colresultElem.parentNode.nextElementSibling; | ||
const expandcollapse = colresultElem.firstElementChild; | ||
extras.classList.add('collapsed'); | ||
expandcollapse.classList.remove('collapser'); | ||
expandcollapse.classList.add('expander'); | ||
} | ||
|
||
function showFilters() { | ||
let visibleString = getQueryParameter('visible') || 'all'; | ||
visibleString = visibleString.toLowerCase(); | ||
const checkedItems = visibleString.split(','); | ||
|
||
const filterItems = document.getElementsByClassName('filter'); | ||
for (let i = 0; i < filterItems.length; i++) { | ||
filterItems[i].hidden = false; | ||
|
||
if (visibleString != 'all') { | ||
filterItems[i].checked = checkedItems.includes(filterItems[i].getAttribute('data-test-result')); | ||
filterTable(filterItems[i]); | ||
} | ||
} | ||
} | ||
|
||
function addCollapse() { | ||
// Add links for show/hide all | ||
const resulttable = find('table#results-table'); | ||
const showhideall = document.createElement('p'); | ||
showhideall.innerHTML = '<a href="javascript:showAllExtras()">Show all details</a> / ' + | ||
'<a href="javascript:hideAllExtras()">Hide all details</a>'; | ||
resulttable.parentElement.insertBefore(showhideall, resulttable); | ||
|
||
// Add show/hide link to each result | ||
findAll('.col-result').forEach(function(elem) { | ||
const collapsed = getQueryParameter('collapsed') || 'Passed'; | ||
const extras = elem.parentNode.nextElementSibling; | ||
const expandcollapse = document.createElement('span'); | ||
if (extras.classList.contains('collapsed')) { | ||
expandcollapse.classList.add('expander'); | ||
} else if (collapsed.includes(elem.innerHTML)) { | ||
extras.classList.add('collapsed'); | ||
expandcollapse.classList.add('expander'); | ||
} else { | ||
expandcollapse.classList.add('collapser'); | ||
} | ||
elem.appendChild(expandcollapse); | ||
|
||
elem.addEventListener('click', function(event) { | ||
if (event.currentTarget.parentNode.nextElementSibling.classList.contains('collapsed')) { | ||
showExtras(event.currentTarget); | ||
} else { | ||
hideExtras(event.currentTarget); | ||
} | ||
}); | ||
}); | ||
} | ||
|
||
function getQueryParameter(name) { | ||
const match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search); | ||
return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); | ||
} | ||
|
||
function init () { // eslint-disable-line no-unused-vars | ||
resetSortHeaders(); | ||
|
||
addCollapse(); | ||
|
||
showFilters(); | ||
|
||
sortColumn(find('.initial-sort')); | ||
|
||
findAll('.sortable').forEach(function(elem) { | ||
elem.addEventListener('click', | ||
function() { | ||
sortColumn(elem); | ||
}, false); | ||
}); | ||
} | ||
|
||
function sortTable(clicked, keyFunc) { | ||
const rows = findAll('.results-table-row'); | ||
const reversed = !clicked.classList.contains('asc'); | ||
const sortedRows = sort(rows, keyFunc, reversed); | ||
/* Whole table is removed here because browsers acts much slower | ||
* when appending existing elements. | ||
*/ | ||
const thead = document.getElementById('results-table-head'); | ||
document.getElementById('results-table').remove(); | ||
const parent = document.createElement('table'); | ||
parent.id = 'results-table'; | ||
parent.appendChild(thead); | ||
sortedRows.forEach(function(elem) { | ||
parent.appendChild(elem); | ||
}); | ||
document.getElementsByTagName('BODY')[0].appendChild(parent); | ||
} | ||
|
||
function sort(items, keyFunc, reversed) { | ||
const sortArray = items.map(function(item, i) { | ||
return [keyFunc(item), i]; | ||
}); | ||
|
||
sortArray.sort(function(a, b) { | ||
const keyA = a[0]; | ||
const keyB = b[0]; | ||
|
||
if (keyA == keyB) return 0; | ||
|
||
if (reversed) { | ||
return keyA < keyB ? 1 : -1; | ||
} else { | ||
return keyA > keyB ? 1 : -1; | ||
} | ||
}); | ||
|
||
return sortArray.map(function(item) { | ||
const index = item[1]; | ||
return items[index]; | ||
}); | ||
} | ||
|
||
function keyAlpha(colIndex) { | ||
return function(elem) { | ||
return elem.childNodes[1].childNodes[colIndex].firstChild.data.toLowerCase(); | ||
}; | ||
} | ||
|
||
function keyLink(colIndex) { | ||
return function(elem) { | ||
const dataCell = elem.childNodes[1].childNodes[colIndex].firstChild; | ||
return dataCell == null ? '' : dataCell.innerText.toLowerCase(); | ||
}; | ||
} | ||
|
||
function keyResult(colIndex) { | ||
return function(elem) { | ||
const strings = ['Error', 'Failed', 'Rerun', 'XFailed', 'XPassed', | ||
'Skipped', 'Passed']; | ||
return strings.indexOf(elem.childNodes[1].childNodes[colIndex].firstChild.data); | ||
}; | ||
} | ||
|
||
function resetSortHeaders() { | ||
findAll('.sort-icon').forEach(function(elem) { | ||
elem.parentNode.removeChild(elem); | ||
}); | ||
findAll('.sortable').forEach(function(elem) { | ||
const icon = document.createElement('div'); | ||
icon.className = 'sort-icon'; | ||
icon.textContent = 'vvv'; | ||
elem.insertBefore(icon, elem.firstChild); | ||
elem.classList.remove('desc', 'active'); | ||
elem.classList.add('asc', 'inactive'); | ||
}); | ||
} | ||
|
||
function toggleSortStates(elem) { | ||
//if active, toggle between asc and desc | ||
if (elem.classList.contains('active')) { | ||
elem.classList.toggle('asc'); | ||
elem.classList.toggle('desc'); | ||
} | ||
|
||
//if inactive, reset all other functions and add ascending active | ||
if (elem.classList.contains('inactive')) { | ||
resetSortHeaders(); | ||
elem.classList.remove('inactive'); | ||
elem.classList.add('active'); | ||
} | ||
} | ||
|
||
function isAllRowsHidden(value) { | ||
return value.hidden == false; | ||
} | ||
|
||
function filterTable(elem) { // eslint-disable-line no-unused-vars | ||
const outcomeAtt = 'data-test-result'; | ||
const outcome = elem.getAttribute(outcomeAtt); | ||
const classOutcome = outcome + ' results-table-row'; | ||
const outcomeRows = document.getElementsByClassName(classOutcome); | ||
|
||
for(let i = 0; i < outcomeRows.length; i++){ | ||
outcomeRows[i].hidden = !elem.checked; | ||
} | ||
|
||
const rows = findAll('.results-table-row').filter(isAllRowsHidden); | ||
const allRowsHidden = rows.length == 0 ? true : false; | ||
const notFoundMessage = document.getElementById('not-found-message'); | ||
notFoundMessage.hidden = !allRowsHidden; | ||
} | ||
</script> | ||
<h1>pyadi-iio Test Report</h1> | ||
<p>Report generated on 10-May-2024 at 11:56:32 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.2.0</p> | ||
<h2>Summary</h2> | ||
<p>This is a custom report summary</p><br/><img src="adjacent.png" style="width: 300px;"/><img src="combined.png" style="width: 300px;"/> | ||
<p>2 tests ran in 0.05 seconds. </p> | ||
<p class="filter" hidden="true">(Un)check the boxes to filter the results.</p><input checked="true" class="filter" data-test-result="passed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="passed">2 passed</span>, <input checked="true" class="filter" data-test-result="skipped" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="skipped">0 skipped</span>, <input checked="true" class="filter" data-test-result="failed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="failed">0 failed</span>, <input checked="true" class="filter" data-test-result="error" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="error">0 errors</span>, <input checked="true" class="filter" data-test-result="xfailed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xfailed">0 expected failures</span>, <input checked="true" class="filter" data-test-result="xpassed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xpassed">0 unexpected passes</span><div>random_test</div> | ||
<html><img src='C:/ADI/Triton/pyadi-iio/adjacent.png'></html> | ||
<html><img src='C:/ADI/Triton/pyadi-iio/combined.png'></html> | ||
<h2>Results</h2> | ||
<table id="results-table"> | ||
<thead id="results-table-head"> | ||
<tr> | ||
<th class="sortable result initial-sort" col="result">Result</th> | ||
<th class="sortable" col="name">Test</th> | ||
<th class="sortable" col="duration">Duration</th> | ||
<th class="sortable links" col="links">Links</th></tr> | ||
<tr hidden="true" id="not-found-message"> | ||
<th colspan="4">No results found. Try to check the filters</th></tr></thead> | ||
<tbody class="passed results-table-row"> | ||
<tr> | ||
<td class="col-result">Passed</td> | ||
<td class="col-name">test/test_dummy.py::test_history</td> | ||
<td class="col-duration">0.00</td> | ||
<td class="col-links"></td></tr> | ||
<tr> | ||
<td class="extra" colspan="4"> | ||
<div><div>1234</div></div> | ||
<div class="empty log">No log output captured.</div></td></tr></tbody> | ||
<tbody class="passed results-table-row"> | ||
<tr> | ||
<td class="col-result">Passed</td> | ||
<td class="col-name">test/test_dummy.py::test_history2</td> | ||
<td class="col-duration">0.00</td> | ||
<td class="col-links"></td></tr> | ||
<tr> | ||
<td class="extra" colspan="4"> | ||
<div><div>[5678, 1234]</div></div> | ||
<div class="empty log">No log output captured.</div></td></tr></tbody></table></body></html> |
Oops, something went wrong.