diff --git a/doc/sample_html/class_index.html b/doc/sample_html/class_index.html new file mode 100644 index 000000000..a2ce83656 --- /dev/null +++ b/doc/sample_html/class_index.html @@ -0,0 +1,553 @@ + + + + + Cog coverage + + + + + +
+
+

Cog coverage: + 37.34% +

+ +
+ +
+ + +
+
+

+ Files + Functions + Classes +

+

+ coverage.py v7.5.0, + created at 2024-04-23 13:00 -0400 +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Fileclassstatementsmissingexcludedbranchespartialcoverage
cogapp/__init__.py(no class)10000100.00%
cogapp/__main__.py(no class)330000.00%
cogapp/cogapp.pyCogError30020100.00%
cogapp/cogapp.pyCogUsageError00000100.00%
cogapp/cogapp.pyCogInternalError00000100.00%
cogapp/cogapp.pyCogGeneratedError00000100.00%
cogapp/cogapp.pyCogUserException00000100.00%
cogapp/cogapp.pyCogCheckFailed00000100.00%
cogapp/cogapp.pyCogGenerator586030488.64%
cogapp/cogapp.pyCogOptions8058144017.74%
cogapp/cogapp.pyCog25615501242236.05%
cogapp/cogapp.py(no class)710000100.00%
cogapp/makefiles.py(no class)40000100.00%
cogapp/test_cogapp.pyCogTestsInMemory730020100.00%
cogapp/test_cogapp.pyCogOptionsTests31310000.00%
cogapp/test_cogapp.pyFileStructureTests29290000.00%
cogapp/test_cogapp.pyCogErrorTests11110000.00%
cogapp/test_cogapp.pyCogGeneratorGetCodeTests37370000.00%
cogapp/test_cogapp.pyTestCaseWithTempDir19190000.00%
cogapp/test_cogapp.pyArgumentHandlingTests43430000.00%
cogapp/test_cogapp.pyTestMain27270000.00%
cogapp/test_cogapp.pyTestFileHandling73730200.00%
cogapp/test_cogapp.pyCogTestLineEndings12120000.00%
cogapp/test_cogapp.pyCogTestCharacterEncoding12120000.00%
cogapp/test_cogapp.pyTestCaseWithImports660400.00%
cogapp/test_cogapp.pyCogIncludeTests46460000.00%
cogapp/test_cogapp.pyCogTestsInFiles1221222800.00%
cogapp/test_cogapp.pyCheckTests40400600.00%
cogapp/test_cogapp.pyWritabilityTests19190000.00%
cogapp/test_cogapp.pyChecksumTests30300000.00%
cogapp/test_cogapp.pyCustomMarkerTests12120000.00%
cogapp/test_cogapp.pyBlakeTests15150000.00%
cogapp/test_cogapp.pyErrorCallTests12120000.00%
cogapp/test_cogapp.py(no class)185202198.40%
cogapp/test_makefiles.pySimpleTests51510600.00%
cogapp/test_makefiles.py(no class)170000100.00%
cogapp/test_whiteutils.pyWhitePrefixTests17170000.00%
cogapp/test_whiteutils.pyReindentBlockTests21210000.00%
cogapp/test_whiteutils.pyCommonPrefixTests12120000.00%
cogapp/test_whiteutils.py(no class)180000100.00%
cogapp/utils.pyRedirectable8304258.33%
cogapp/utils.pyNumberedFileReader70020100.00%
cogapp/utils.py(no class)170000100.00%
cogapp/whiteutils.py(no class)40000100.00%
Total 150292432362937.34%
+

+ No items found using the specified filter. +

+
+ + + diff --git a/doc/sample_html/coverage_html.js b/doc/sample_html/coverage_html.js index 593488286..a28c1bef8 100644 --- a/doc/sample_html/coverage_html.js +++ b/doc/sample_html/coverage_html.js @@ -36,11 +36,12 @@ function on_click(sel, fn) { function getCellValue(row, column = 0) { const cell = row.cells[column] // nosemgrep: eslint.detect-object-injection if (cell.childElementCount == 1) { - const child = cell.firstElementChild - if (child instanceof HTMLTimeElement && child.dateTime) { - return child.dateTime - } else if (child instanceof HTMLDataElement && child.value) { - return child.value + var child = cell.firstElementChild; + if (child.tagName === "A") { + child = child.firstElementChild; + } + if (child instanceof HTMLDataElement && child.value) { + return child.value; } } return cell.innerText || cell.textContent; @@ -50,28 +51,37 @@ function rowComparator(rowA, rowB, column = 0) { let valueA = getCellValue(rowA, column); let valueB = getCellValue(rowB, column); if (!isNaN(valueA) && !isNaN(valueB)) { - return valueA - valueB + return valueA - valueB; } return valueA.localeCompare(valueB, undefined, {numeric: true}); } function sortColumn(th) { // Get the current sorting direction of the selected header, - // clear state on other headers and then set the new sorting direction + // clear state on other headers and then set the new sorting direction. const currentSortOrder = th.getAttribute("aria-sort"); [...th.parentElement.cells].forEach(header => header.setAttribute("aria-sort", "none")); + var direction; if (currentSortOrder === "none") { - th.setAttribute("aria-sort", th.dataset.defaultSortOrder || "ascending"); - } else { - th.setAttribute("aria-sort", currentSortOrder === "ascending" ? "descending" : "ascending"); + direction = th.dataset.defaultSortOrder || "ascending"; + } + else if (currentSortOrder === "ascending") { + direction = "descending"; + } + else { + direction = "ascending"; } + th.setAttribute("aria-sort", direction); const column = [...th.parentElement.cells].indexOf(th) - // Sort all rows and afterwards append them in order to move them in the DOM + // Sort all rows and afterwards append them in order to move them in the DOM. Array.from(th.closest("table").querySelectorAll("tbody tr")) - .sort((rowA, rowB) => rowComparator(rowA, rowB, column) * (th.getAttribute("aria-sort") === "ascending" ? 1 : -1)) - .forEach(tr => tr.parentElement.appendChild(tr) ); + .sort((rowA, rowB) => rowComparator(rowA, rowB, column) * (direction === "ascending" ? 1 : -1)) + .forEach(tr => tr.parentElement.appendChild(tr)); + + // Save the sort order for next time. + localStorage.setItem(coverage.INDEX_SORT_STORAGE, JSON.stringify({column, direction})); } // Find all the elements with data-shortcut attribute, and use them to assign a shortcut key. @@ -96,15 +106,40 @@ coverage.wire_up_filter = function () { const no_rows = document.getElementById("no_rows"); // Observe filter keyevents. - document.getElementById("filter").addEventListener("input", debounce(event => { + const filter_handler = (event => { // Keep running total of each metric, first index contains number of shown rows const totals = new Array(table.rows[0].cells.length).fill(0); // Accumulate the percentage as fraction totals[totals.length - 1] = { "numer": 0, "denom": 0 }; // nosemgrep: eslint.detect-object-injection + var text = document.getElementById("filter").value; + const casefold = (text === text.toLowerCase()); + const hide100 = document.getElementById("hide100").checked; + // Hide / show elements. table_body_rows.forEach(row => { - if (!row.cells[0].textContent.includes(event.target.value)) { + var show = false; + // Check the text filter. + for (let column = 0; column < totals.length; column++) { + cell = row.cells[column]; + if (cell.classList.contains("name")) { + var celltext = cell.textContent; + if (casefold) { + celltext = celltext.toLowerCase(); + } + if (celltext.includes(text)) { + show = true; + } + } + } + + // Check the "hide covered" filter. + if (show && hide100) { + const [numer, denom] = row.cells[row.cells.length - 1].dataset.ratio.split(" "); + show = (numer !== denom); + } + + if (!show) { // hide row.classList.add("hidden"); return; @@ -114,15 +149,19 @@ coverage.wire_up_filter = function () { row.classList.remove("hidden"); totals[0]++; - for (let column = 1; column < totals.length; column++) { + for (let column = 0; column < totals.length; column++) { // Accumulate dynamic totals cell = row.cells[column] // nosemgrep: eslint.detect-object-injection + if (cell.classList.contains("name")) { + continue; + } if (column === totals.length - 1) { // Last column contains percentage const [numer, denom] = cell.dataset.ratio.split(" "); totals[column]["numer"] += parseInt(numer, 10); // nosemgrep: eslint.detect-object-injection totals[column]["denom"] += parseInt(denom, 10); // nosemgrep: eslint.detect-object-injection - } else { + } + else { totals[column] += parseInt(cell.textContent, 10); // nosemgrep: eslint.detect-object-injection } } @@ -142,9 +181,12 @@ coverage.wire_up_filter = function () { const footer = table.tFoot.rows[0]; // Calculate new dynamic sum values based on visible rows. - for (let column = 1; column < totals.length; column++) { + for (let column = 0; column < totals.length; column++) { // Get footer cell element. const cell = footer.cells[column]; // nosemgrep: eslint.detect-object-injection + if (cell.classList.contains("name")) { + continue; + } // Set value into dynamic footer cell element. if (column === totals.length - 1) { @@ -158,48 +200,47 @@ coverage.wire_up_filter = function () { cell.textContent = denom ? `${(numer * 100 / denom).toFixed(places)}%` : `${(100).toFixed(places)}%`; - } else { + } + else { cell.textContent = totals[column]; // nosemgrep: eslint.detect-object-injection } } - })); + }); + + document.getElementById("filter").addEventListener("input", debounce(filter_handler)); + document.getElementById("hide100").addEventListener("input", debounce(filter_handler)); // Trigger change event on setup, to force filter on page refresh // (filter value may still be present). document.getElementById("filter").dispatchEvent(new Event("input")); + document.getElementById("hide100").dispatchEvent(new Event("input")); }; -coverage.INDEX_SORT_STORAGE = "COVERAGE_INDEX_SORT_2"; - -// Loaded on index.html -coverage.index_ready = function () { - coverage.assign_shortkeys(); - coverage.wire_up_filter(); +// Set up the click-to-sort columns. +coverage.wire_up_sorting = function () { document.querySelectorAll("[data-sortable] th[aria-sort]").forEach( th => th.addEventListener("click", e => sortColumn(e.target)) ); // Look for a localStorage item containing previous sort settings: + var column = 0, direction = "ascending"; const stored_list = localStorage.getItem(coverage.INDEX_SORT_STORAGE); - if (stored_list) { - const {column, direction} = JSON.parse(stored_list); - const th = document.querySelector("[data-sortable]").tHead.rows[0].cells[column]; // nosemgrep: eslint.detect-object-injection - th.setAttribute("aria-sort", direction === "ascending" ? "descending" : "ascending"); - th.click() + ({column, direction} = JSON.parse(stored_list)); } - // Watch for page unload events so we can save the final sort settings: - window.addEventListener("unload", function () { - const th = document.querySelector('[data-sortable] th[aria-sort="ascending"], [data-sortable] [aria-sort="descending"]'); - if (!th) { - return; - } - localStorage.setItem(coverage.INDEX_SORT_STORAGE, JSON.stringify({ - column: [...th.parentElement.cells].indexOf(th), - direction: th.getAttribute("aria-sort"), - })); - }); + const th = document.querySelector("[data-sortable]").tHead.rows[0].cells[column]; // nosemgrep: eslint.detect-object-injection + th.setAttribute("aria-sort", direction === "ascending" ? "descending" : "ascending"); + th.click() +}; + +coverage.INDEX_SORT_STORAGE = "COVERAGE_INDEX_SORT_2"; + +// Loaded on index.html +coverage.index_ready = function () { + coverage.assign_shortkeys(); + coverage.wire_up_filter(); + coverage.wire_up_sorting(); on_click(".button_prev_file", coverage.to_prev_file); on_click(".button_next_file", coverage.to_next_file); @@ -217,7 +258,8 @@ coverage.pyfile_ready = function () { if (frag.length > 2 && frag[1] === "t") { document.querySelector(frag).closest(".n").classList.add("highlight"); coverage.set_sel(parseInt(frag.substr(2), 10)); - } else { + } + else { coverage.set_sel(0); } @@ -441,7 +483,8 @@ coverage.to_next_chunk_nicely = function () { if (line.parentElement !== document.getElementById("source")) { // The element is not a source line but the header or similar coverage.select_line_or_chunk(1); - } else { + } + else { // We extract the line number from the id coverage.select_line_or_chunk(parseInt(line.id.substring(1), 10)); } @@ -460,7 +503,8 @@ coverage.to_prev_chunk_nicely = function () { if (line.parentElement !== document.getElementById("source")) { // The element is not a source line but the header or similar coverage.select_line_or_chunk(coverage.lines_len); - } else { + } + else { // We extract the line number from the id coverage.select_line_or_chunk(parseInt(line.id.substring(1), 10)); } @@ -562,7 +606,8 @@ coverage.build_scroll_markers = function () { if (line_number === previous_line + 1) { // If this solid missed block just make previous mark higher. last_mark.style.height = `${line_top + line_height - last_top}px`; - } else { + } + else { // Add colored line in scroll_marker block. last_mark = document.createElement("div"); last_mark.id = `m${line_number}`; @@ -590,7 +635,8 @@ coverage.wire_up_sticky_header = function () { function updateHeader() { if (window.scrollY > header_bottom) { header.classList.add("sticky"); - } else { + } + else { header.classList.remove("sticky"); } } @@ -618,7 +664,8 @@ coverage.expand_contexts = function (e) { document.addEventListener("DOMContentLoaded", () => { if (document.body.classList.contains("indexfile")) { coverage.index_ready(); - } else { + } + else { coverage.pyfile_ready(); } }); diff --git a/doc/sample_html/function_index.html b/doc/sample_html/function_index.html new file mode 100644 index 000000000..c24314733 --- /dev/null +++ b/doc/sample_html/function_index.html @@ -0,0 +1,2393 @@ + + + + + Cog coverage + + + + + +
+
+

Cog coverage: + 38.64% +

+ +
+ +
+ + +
+
+

+ Files + Functions + Classes +

+

+ coverage.py v7.5.0, + created at 2024-04-23 13:00 -0400 +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Filefunctionstatementsmissingexcludedbranchespartialcoverage
cogapp/__init__.py(no function)10000100.00%
cogapp/__main__.py(no function)330000.00%
cogapp/cogapp.pyCogError.__init__30020100.00%
cogapp/cogapp.pyCogGenerator.__init__40000100.00%
cogapp/cogapp.pyCogGenerator.parseMarker10000100.00%
cogapp/cogapp.pyCogGenerator.parseLine10000100.00%
cogapp/cogapp.pyCogGenerator.getCode50060100.00%
cogapp/cogapp.pyCogGenerator.evaluate334016483.67%
cogapp/cogapp.pyCogGenerator.msg110000.00%
cogapp/cogapp.pyCogGenerator.out100080100.00%
cogapp/cogapp.pyCogGenerator.outl20000100.00%
cogapp/cogapp.pyCogGenerator.error110000.00%
cogapp/cogapp.pyCogOptions.__init__220000100.00%
cogapp/cogapp.pyCogOptions.__eq__110000.00%
cogapp/cogapp.pyCogOptions.clone110000.00%
cogapp/cogapp.pyCogOptions.addToIncludePath220000.00%
cogapp/cogapp.pyCogOptions.parseArgs464614000.00%
cogapp/cogapp.pyCogOptions._parse_markers440000.00%
cogapp/cogapp.pyCogOptions.validate440400.00%
cogapp/cogapp.pyCog.__init__60000100.00%
cogapp/cogapp.pyCog._fixEndOutputPatterns30000100.00%
cogapp/cogapp.pyCog.showWarning110000.00%
cogapp/cogapp.pyCog.isBeginSpecLine10000100.00%
cogapp/cogapp.pyCog.isEndSpecLine10000100.00%
cogapp/cogapp.pyCog.isEndOutputLine10000100.00%
cogapp/cogapp.pyCog.createCogModule20000100.00%
cogapp/cogapp.pyCog.openOutputFile990400.00%
cogapp/cogapp.pyCog.openInputFile330200.00%
cogapp/cogapp.pyCog.processFile104230602170.73%
cogapp/cogapp.pyCog.suffixLines4202150.00%
cogapp/cogapp.pyCog.processString40000100.00%
cogapp/cogapp.pyCog.replaceFile11110600.00%
cogapp/cogapp.pyCog.saveIncludePath220000.00%
cogapp/cogapp.pyCog.restoreIncludePath330000.00%
cogapp/cogapp.pyCog.addToIncludePath220000.00%
cogapp/cogapp.pyCog.processOneFile313101600.00%
cogapp/cogapp.pyCog.processWildcards550400.00%
cogapp/cogapp.pyCog.processFileList11110400.00%
cogapp/cogapp.pyCog.processArguments16160800.00%
cogapp/cogapp.pyCog.callableMain161601000.00%
cogapp/cogapp.pyCog.main20200800.00%
cogapp/cogapp.pyfind_cog_source14808245.45%
cogapp/cogapp.pymain110000.00%
cogapp/cogapp.py(no function)710000100.00%
cogapp/makefiles.pymakeFiles11110800.00%
cogapp/makefiles.pyremoveFiles770600.00%
cogapp/makefiles.py(no function)40000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testNoCog30020100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testSimple30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testEmptyCog30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testMultipleCogs30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testTrimBlankLines30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testTrimEmptyBlankLines30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testTrimBlankLinesWithLastPartial30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testCogOutDedent30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.test22EndOfLine30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testIndentedCode30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testPrefixedCode30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testPrefixedIndentedCode30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testBogusPrefixMatch30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testNoFinalNewline30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testNoOutputAtAll30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testPurelyBlankLine30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testEmptyOutl30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testFirstLineNum30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testCompactOneLineCode40000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testInsideOutCompact30000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testSharingGlobals40000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testAssertInCogCode40000100.00%
cogapp/test_cogapp.pyCogTestsInMemory.testCogPrevious40000100.00%
cogapp/test_cogapp.pyCogOptionsTests.testEquality770000.00%
cogapp/test_cogapp.pyCogOptionsTests.testCloning990000.00%
cogapp/test_cogapp.pyCogOptionsTests.testCombiningFlags550000.00%
cogapp/test_cogapp.pyCogOptionsTests.testMarkers550000.00%
cogapp/test_cogapp.pyCogOptionsTests.testMarkersSwitch550000.00%
cogapp/test_cogapp.pyFileStructureTests.isBad330000.00%
cogapp/test_cogapp.pyFileStructureTests.testBeginNoEnd220000.00%
cogapp/test_cogapp.pyFileStructureTests.testNoEoo440000.00%
cogapp/test_cogapp.pyFileStructureTests.testStartWithEnd440000.00%
cogapp/test_cogapp.pyFileStructureTests.testStartWithEoo440000.00%
cogapp/test_cogapp.pyFileStructureTests.testNoEnd440000.00%
cogapp/test_cogapp.pyFileStructureTests.testTwoBegins440000.00%
cogapp/test_cogapp.pyFileStructureTests.testTwoEnds440000.00%
cogapp/test_cogapp.pyCogErrorTests.testErrorMsg440000.00%
cogapp/test_cogapp.pyCogErrorTests.testErrorNoMsg440000.00%
cogapp/test_cogapp.pyCogErrorTests.testNoErrorIfErrorNotCalled330000.00%
cogapp/test_cogapp.pyCogGeneratorGetCodeTests.setUp330000.00%
cogapp/test_cogapp.pyCogGeneratorGetCodeTests.testEmpty330000.00%
cogapp/test_cogapp.pyCogGeneratorGetCodeTests.testSimple550000.00%
cogapp/test_cogapp.pyCogGeneratorGetCodeTests.testCompressed1550000.00%
cogapp/test_cogapp.pyCogGeneratorGetCodeTests.testCompressed2550000.00%
cogapp/test_cogapp.pyCogGeneratorGetCodeTests.testCompressed3550000.00%
cogapp/test_cogapp.pyCogGeneratorGetCodeTests.testCompressed4550000.00%
cogapp/test_cogapp.pyCogGeneratorGetCodeTests.testNoCommonPrefixForMarkers660000.00%
cogapp/test_cogapp.pyTestCaseWithTempDir.newCog330000.00%
cogapp/test_cogapp.pyTestCaseWithTempDir.setUp550000.00%
cogapp/test_cogapp.pyTestCaseWithTempDir.tearDown220000.00%
cogapp/test_cogapp.pyTestCaseWithTempDir.assertFilesSame550000.00%
cogapp/test_cogapp.pyTestCaseWithTempDir.assertFileContent440000.00%
cogapp/test_cogapp.pyArgumentHandlingTests.testArgumentFailure770000.00%
cogapp/test_cogapp.pyArgumentHandlingTests.testNoDashOAndAtFile330000.00%
cogapp/test_cogapp.pyArgumentHandlingTests.testNoDashOAndAmpFile330000.00%
cogapp/test_cogapp.pyArgumentHandlingTests.testDashV330000.00%
cogapp/test_cogapp.pyArgumentHandlingTests.producesHelp440000.00%
cogapp/test_cogapp.pyArgumentHandlingTests.testDashH440000.00%
cogapp/test_cogapp.pyArgumentHandlingTests.testDashOAndDashR440000.00%
cogapp/test_cogapp.pyArgumentHandlingTests.testDashZ770000.00%
cogapp/test_cogapp.pyArgumentHandlingTests.testBadDashD440000.00%
cogapp/test_cogapp.pyArgumentHandlingTests.testBadMarkers440000.00%
cogapp/test_cogapp.pyTestMain.setUp440000.00%
cogapp/test_cogapp.pyTestMain.tearDown440000.00%
cogapp/test_cogapp.pyTestMain.test_main_function550000.00%
cogapp/test_cogapp.pyTestMain.test_error_report110000.00%
cogapp/test_cogapp.pyTestMain.test_error_report_with_prologue110000.00%
cogapp/test_cogapp.pyTestMain.check_error_report660000.00%
cogapp/test_cogapp.pyTestMain.test_error_in_prologue660000.00%
cogapp/test_cogapp.pyTestFileHandling.testSimple660000.00%
cogapp/test_cogapp.pyTestFileHandling.testPrintOutput660000.00%
cogapp/test_cogapp.pyTestFileHandling.testWildcards880000.00%
cogapp/test_cogapp.pyTestFileHandling.testOutputFile440000.00%
cogapp/test_cogapp.pyTestFileHandling.testAtFile770000.00%
cogapp/test_cogapp.pyTestFileHandling.testNestedAtFile770000.00%
cogapp/test_cogapp.pyTestFileHandling.testAtFileWithArgs550000.00%
cogapp/test_cogapp.pyTestFileHandling.testAtFileWithBadArgCombo440000.00%
cogapp/test_cogapp.pyTestFileHandling.testAtFileWithTrickyFilenames770000.00%
cogapp/test_cogapp.pyTestFileHandling.testAtFileWithTrickyFilenames.fix_backslashes330200.00%
cogapp/test_cogapp.pyTestFileHandling.testAmpFile550000.00%
cogapp/test_cogapp.pyTestFileHandling.run_with_verbosity550000.00%
cogapp/test_cogapp.pyTestFileHandling.test_verbosity0220000.00%
cogapp/test_cogapp.pyTestFileHandling.test_verbosity1220000.00%
cogapp/test_cogapp.pyTestFileHandling.test_verbosity2220000.00%
cogapp/test_cogapp.pyCogTestLineEndings.testOutputNativeEol330000.00%
cogapp/test_cogapp.pyCogTestLineEndings.testOutputLfEol330000.00%
cogapp/test_cogapp.pyCogTestLineEndings.testReplaceNativeEol330000.00%
cogapp/test_cogapp.pyCogTestLineEndings.testReplaceLfEol330000.00%
cogapp/test_cogapp.pyCogTestCharacterEncoding.testSimple660000.00%
cogapp/test_cogapp.pyCogTestCharacterEncoding.testFileEncodingOption660000.00%
cogapp/test_cogapp.pyTestCaseWithImports.setUp220000.00%
cogapp/test_cogapp.pyTestCaseWithImports.tearDown440400.00%
cogapp/test_cogapp.pyCogIncludeTests.testNeedIncludePath440000.00%
cogapp/test_cogapp.pyCogIncludeTests.testIncludePath330000.00%
cogapp/test_cogapp.pyCogIncludeTests.testTwoIncludePaths330000.00%
cogapp/test_cogapp.pyCogIncludeTests.testTwoIncludePaths2330000.00%
cogapp/test_cogapp.pyCogIncludeTests.testUselessIncludePath330000.00%
cogapp/test_cogapp.pyCogIncludeTests.testSysPathIsUnchanged26260000.00%
cogapp/test_cogapp.pyCogIncludeTests.testSubDirectories440000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testWarnIfNoCogCode13130000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testFileNameProps770000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testGlobalsDontCrossFiles770000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testRemoveGeneratedOutput10100000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testMsgCall550000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testErrorMessageHasNoTraceback770000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testDashD19190000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testOutputToStdout990000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testReadFromStdin11110000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testReadFromStdin.restore_stdin110000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testSuffixOutputLines440000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testEmptySuffix440000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testHellishSuffix440000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testPrologue440000.00%
cogapp/test_cogapp.pyCogTestsInFiles.testThreads13130800.00%
cogapp/test_cogapp.pyCogTestsInFiles.testThreads.thread_main442000.00%
cogapp/test_cogapp.pyCheckTests.run_check330000.00%
cogapp/test_cogapp.pyCheckTests.assert_made_files_unchanged550400.00%
cogapp/test_cogapp.pyCheckTests.test_check_no_cog550000.00%
cogapp/test_cogapp.pyCheckTests.test_check_good550000.00%
cogapp/test_cogapp.pyCheckTests.test_check_bad550000.00%
cogapp/test_cogapp.pyCheckTests.test_check_mixed770200.00%
cogapp/test_cogapp.pyCheckTests.test_check_with_good_checksum550000.00%
cogapp/test_cogapp.pyCheckTests.test_check_with_bad_checksum550000.00%
cogapp/test_cogapp.pyWritabilityTests.setUp550000.00%
cogapp/test_cogapp.pyWritabilityTests.tearDown220000.00%
cogapp/test_cogapp.pyWritabilityTests.testReadonlyNoCommand330000.00%
cogapp/test_cogapp.pyWritabilityTests.testReadonlyWithCommand330000.00%
cogapp/test_cogapp.pyWritabilityTests.testReadonlyWithCommandWithNoSlot330000.00%
cogapp/test_cogapp.pyWritabilityTests.testReadonlyWithIneffectualCommand330000.00%
cogapp/test_cogapp.pyChecksumTests.testCreateChecksumOutput440000.00%
cogapp/test_cogapp.pyChecksumTests.testCheckChecksumOutput440000.00%
cogapp/test_cogapp.pyChecksumTests.testRemoveChecksumOutput440000.00%
cogapp/test_cogapp.pyChecksumTests.testTamperedChecksumOutput14140000.00%
cogapp/test_cogapp.pyChecksumTests.testArgvIsntModified440000.00%
cogapp/test_cogapp.pyCustomMarkerTests.testCustomerMarkers440000.00%
cogapp/test_cogapp.pyCustomMarkerTests.testTrulyWackyMarkers440000.00%
cogapp/test_cogapp.pyCustomMarkerTests.testChangeJustOneMarker440000.00%
cogapp/test_cogapp.pyBlakeTests.testDeleteCode440000.00%
cogapp/test_cogapp.pyBlakeTests.testDeleteCodeWithDashRFails440000.00%
cogapp/test_cogapp.pyBlakeTests.testSettingGlobals770000.00%
cogapp/test_cogapp.pyErrorCallTests.testErrorCallHasNoTraceback550000.00%
cogapp/test_cogapp.pyErrorCallTests.testRealErrorHasTraceback770000.00%
cogapp/test_cogapp.py(no function)185202198.40%
cogapp/test_makefiles.pySimpleTests.setUp330000.00%
cogapp/test_makefiles.pySimpleTests.tearDown110000.00%
cogapp/test_makefiles.pySimpleTests.exists110000.00%
cogapp/test_makefiles.pySimpleTests.checkFilesExist440400.00%
cogapp/test_makefiles.pySimpleTests.checkFilesDontExist220200.00%
cogapp/test_makefiles.pySimpleTests.testOneFile11110000.00%
cogapp/test_makefiles.pySimpleTests.testManyFiles660000.00%
cogapp/test_makefiles.pySimpleTests.testOverlapping12120000.00%
cogapp/test_makefiles.pySimpleTests.testContents660000.00%
cogapp/test_makefiles.pySimpleTests.testDedent550000.00%
cogapp/test_makefiles.py(no function)170000100.00%
cogapp/test_whiteutils.pyWhitePrefixTests.testSingleLine770000.00%
cogapp/test_whiteutils.pyWhitePrefixTests.testMultiLine330000.00%
cogapp/test_whiteutils.pyWhitePrefixTests.testBlankLinesAreIgnored440000.00%
cogapp/test_whiteutils.pyWhitePrefixTests.testTabCharacters110000.00%
cogapp/test_whiteutils.pyWhitePrefixTests.testDecreasingLengths220000.00%
cogapp/test_whiteutils.pyReindentBlockTests.testNonTermLine10100000.00%
cogapp/test_whiteutils.pyReindentBlockTests.testSingleLine10100000.00%
cogapp/test_whiteutils.pyReindentBlockTests.testRealBlock110000.00%
cogapp/test_whiteutils.pyCommonPrefixTests.testDegenerateCases440000.00%
cogapp/test_whiteutils.pyCommonPrefixTests.testNoCommonPrefix330000.00%
cogapp/test_whiteutils.pyCommonPrefixTests.testUsualCases330000.00%
cogapp/test_whiteutils.pyCommonPrefixTests.testBlankLine110000.00%
cogapp/test_whiteutils.pyCommonPrefixTests.testDecreasingLengths110000.00%
cogapp/test_whiteutils.py(no function)180000100.00%
cogapp/utils.pyRedirectable.__init__20000100.00%
cogapp/utils.pyRedirectable.setOutput4104262.50%
cogapp/utils.pyRedirectable.prout110000.00%
cogapp/utils.pyRedirectable.prerr110000.00%
cogapp/utils.pyNumberedFileReader.__init__20000100.00%
cogapp/utils.pyNumberedFileReader.readline40020100.00%
cogapp/utils.pyNumberedFileReader.linenumber10000100.00%
cogapp/utils.pychange_dir550000.00%
cogapp/utils.py(no function)170000100.00%
cogapp/whiteutils.pywhitePrefix123012279.17%
cogapp/whiteutils.pyreindentBlock141010191.67%
cogapp/whiteutils.pycommonPrefix131012192.00%
cogapp/whiteutils.py(no function)40000100.00%
Total 157996132923538.64%
+

+ No items found using the specified filter. +

+
+ + + diff --git a/doc/sample_html/index.html b/doc/sample_html/index.html index 6ed6852af..5a6c4fcc3 100644 --- a/doc/sample_html/index.html +++ b/doc/sample_html/index.html @@ -1,11 +1,11 @@ - + Cog coverage - +
@@ -16,13 +16,13 @@

Cog coverage:
- + +
+ + +
+

+ Files + Functions + Classes +

- coverage.py v7.4.5a0.dev1, - created at 2024-04-06 12:54 -0400 + coverage.py v7.5.0, + created at 2024-04-23 13:00 -0400

@@ -55,17 +64,17 @@

Cog coverage: - - - - - - - + + + + + + + - + @@ -74,7 +83,7 @@

Cog coverage:

- + @@ -83,7 +92,7 @@

Cog coverage:

- + @@ -92,7 +101,7 @@

Cog coverage:

- + @@ -101,7 +110,7 @@

Cog coverage:

- + @@ -110,7 +119,7 @@

Cog coverage:

- + @@ -119,7 +128,7 @@

Cog coverage:

- + @@ -128,7 +137,7 @@

Cog coverage:

- + @@ -137,7 +146,7 @@

Cog coverage:

- + @@ -166,16 +175,16 @@

Cog coverage: diff --git a/doc/sample_html/status.json b/doc/sample_html/status.json index f5e378359..cd72fa04c 100644 --- a/doc/sample_html/status.json +++ b/doc/sample_html/status.json @@ -1 +1 @@ -{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":2,"version":"7.4.5a0.dev1","globals":"93b51f0c694fe02b0939ee4dd75fe224","files":{"z_7b071bdc2a35fa80___init___py":{"hash":"669207c1fb29be3e8be6ce0639506cab","index":{"nums":null,"numlist":[2,1,1,0,0,0,0,0],"html_filename":"z_7b071bdc2a35fa80___init___py.html","relative_filename":"cogapp/__init__.py"}},"z_7b071bdc2a35fa80___main___py":{"hash":"6d9d0d551879aa3e73791f40c5739845","index":{"nums":null,"numlist":[2,1,3,0,3,0,0,0],"html_filename":"z_7b071bdc2a35fa80___main___py.html","relative_filename":"cogapp/__main__.py"}},"z_7b071bdc2a35fa80_cogapp_py":{"hash":"3b620625b0506d140beda5c04a03a961","index":{"nums":null,"numlist":[2,1,483,1,228,208,28,140],"html_filename":"z_7b071bdc2a35fa80_cogapp_py.html","relative_filename":"cogapp/cogapp.py"}},"z_7b071bdc2a35fa80_makefiles_py":{"hash":"e73ea90ac9a2e7af9d1fdb188ea22dfe","index":{"nums":null,"numlist":[2,1,22,0,18,14,0,14],"html_filename":"z_7b071bdc2a35fa80_makefiles_py.html","relative_filename":"cogapp/makefiles.py"}},"z_7b071bdc2a35fa80_test_cogapp_py":{"hash":"f7e93bafb25b733e134d8c75e2d3cc24","index":{"nums":null,"numlist":[2,1,854,2,598,24,1,21],"html_filename":"z_7b071bdc2a35fa80_test_cogapp_py.html","relative_filename":"cogapp/test_cogapp.py"}},"z_7b071bdc2a35fa80_test_makefiles_py":{"hash":"b2e0cdd09c01a8b0e4bdae02e1cfa856","index":{"nums":null,"numlist":[2,1,68,0,51,6,0,6],"html_filename":"z_7b071bdc2a35fa80_test_makefiles_py.html","relative_filename":"cogapp/test_makefiles.py"}},"z_7b071bdc2a35fa80_test_whiteutils_py":{"hash":"4511a89ca54b865d6397d6b7d315c35c","index":{"nums":null,"numlist":[2,1,68,0,50,0,0,0],"html_filename":"z_7b071bdc2a35fa80_test_whiteutils_py.html","relative_filename":"cogapp/test_whiteutils.py"}},"z_7b071bdc2a35fa80_utils_py":{"hash":"f8df213bfbf38327877cdb9699b0ec41","index":{"nums":null,"numlist":[2,1,37,0,8,6,2,2],"html_filename":"z_7b071bdc2a35fa80_utils_py.html","relative_filename":"cogapp/utils.py"}},"z_7b071bdc2a35fa80_whiteutils_py":{"hash":"c68cfd051fc76896fdb23127cf2ca0ea","index":{"nums":null,"numlist":[2,1,43,0,5,34,4,4],"html_filename":"z_7b071bdc2a35fa80_whiteutils_py.html","relative_filename":"cogapp/whiteutils.py"}}}} \ No newline at end of file +{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.5.0","globals":"6209e941d022650f2b874068b895003a","files":{"z_7b071bdc2a35fa80___init___py":{"hash":"669207c1fb29be3e8be6ce0639506cab","index":{"url":"z_7b071bdc2a35fa80___init___py.html","file":"cogapp/__init__.py","description":"","nums":{"precision":2,"n_files":1,"n_statements":1,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_7b071bdc2a35fa80___main___py":{"hash":"6d9d0d551879aa3e73791f40c5739845","index":{"url":"z_7b071bdc2a35fa80___main___py.html","file":"cogapp/__main__.py","description":"","nums":{"precision":2,"n_files":1,"n_statements":3,"n_excluded":0,"n_missing":3,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_7b071bdc2a35fa80_cogapp_py":{"hash":"3b620625b0506d140beda5c04a03a961","index":{"url":"z_7b071bdc2a35fa80_cogapp_py.html","file":"cogapp/cogapp.py","description":"","nums":{"precision":2,"n_files":1,"n_statements":483,"n_excluded":1,"n_missing":228,"n_branches":208,"n_partial_branches":28,"n_missing_branches":140}}},"z_7b071bdc2a35fa80_makefiles_py":{"hash":"e73ea90ac9a2e7af9d1fdb188ea22dfe","index":{"url":"z_7b071bdc2a35fa80_makefiles_py.html","file":"cogapp/makefiles.py","description":"","nums":{"precision":2,"n_files":1,"n_statements":22,"n_excluded":0,"n_missing":18,"n_branches":14,"n_partial_branches":0,"n_missing_branches":14}}},"z_7b071bdc2a35fa80_test_cogapp_py":{"hash":"f7e93bafb25b733e134d8c75e2d3cc24","index":{"url":"z_7b071bdc2a35fa80_test_cogapp_py.html","file":"cogapp/test_cogapp.py","description":"","nums":{"precision":2,"n_files":1,"n_statements":854,"n_excluded":2,"n_missing":598,"n_branches":24,"n_partial_branches":1,"n_missing_branches":21}}},"z_7b071bdc2a35fa80_test_makefiles_py":{"hash":"b2e0cdd09c01a8b0e4bdae02e1cfa856","index":{"url":"z_7b071bdc2a35fa80_test_makefiles_py.html","file":"cogapp/test_makefiles.py","description":"","nums":{"precision":2,"n_files":1,"n_statements":68,"n_excluded":0,"n_missing":51,"n_branches":6,"n_partial_branches":0,"n_missing_branches":6}}},"z_7b071bdc2a35fa80_test_whiteutils_py":{"hash":"4511a89ca54b865d6397d6b7d315c35c","index":{"url":"z_7b071bdc2a35fa80_test_whiteutils_py.html","file":"cogapp/test_whiteutils.py","description":"","nums":{"precision":2,"n_files":1,"n_statements":68,"n_excluded":0,"n_missing":50,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_7b071bdc2a35fa80_utils_py":{"hash":"f8df213bfbf38327877cdb9699b0ec41","index":{"url":"z_7b071bdc2a35fa80_utils_py.html","file":"cogapp/utils.py","description":"","nums":{"precision":2,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":8,"n_branches":6,"n_partial_branches":2,"n_missing_branches":2}}},"z_7b071bdc2a35fa80_whiteutils_py":{"hash":"c68cfd051fc76896fdb23127cf2ca0ea","index":{"url":"z_7b071bdc2a35fa80_whiteutils_py.html","file":"cogapp/whiteutils.py","description":"","nums":{"precision":2,"n_files":1,"n_statements":43,"n_excluded":0,"n_missing":5,"n_branches":34,"n_partial_branches":4,"n_missing_branches":4}}}}} \ No newline at end of file diff --git a/doc/sample_html/style.css b/doc/sample_html/style.css index aec9cbef2..3cdaf05a3 100644 --- a/doc/sample_html/style.css +++ b/doc/sample_html/style.css @@ -22,7 +22,7 @@ td { vertical-align: top; } table tr.hidden { display: none !important; } -p#no_rows { display: none; font-size: 1.2em; } +p#no_rows { display: none; font-size: 1.15em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; } a.nav { text-decoration: none; color: inherit; } @@ -40,6 +40,18 @@ header .content { padding: 1rem 3.5rem; } header h2 { margin-top: .5em; font-size: 1em; } +header h2 a.button { font-family: inherit; font-size: inherit; border: 1px solid; border-radius: .2em; background: #eee; color: inherit; text-decoration: none; padding: .1em .5em; margin: 1px calc(.1em + 1px); cursor: pointer; border-color: #ccc; } + +@media (prefers-color-scheme: dark) { header h2 a.button { background: #333; } } + +@media (prefers-color-scheme: dark) { header h2 a.button { border-color: #444; } } + +header h2 a.button.current { border: 2px solid; background: #fff; border-color: #999; cursor: default; } + +@media (prefers-color-scheme: dark) { header h2 a.button.current { background: #1e1e1e; } } + +@media (prefers-color-scheme: dark) { header h2 a.button.current { border-color: #777; } } + header p.text { margin: .5em 0 -.5em; color: #666; font-style: italic; } @media (prefers-color-scheme: dark) { header p.text { color: #aaa; } } @@ -68,19 +80,29 @@ footer .content { padding: 0; color: #666; font-style: italic; } h1 { font-size: 1.25em; display: inline-block; } -#filter_container { float: right; margin: 0 2em 0 0; } +#filter_container { float: right; margin: 0 2em 0 0; line-height: 1.66em; } + +#filter_container #filter { width: 10em; padding: 0.2em 0.5em; border: 2px solid #ccc; background: #fff; color: #000; } -#filter_container input { width: 10em; padding: 0.2em 0.5em; border: 2px solid #ccc; background: #fff; color: #000; } +@media (prefers-color-scheme: dark) { #filter_container #filter { border-color: #444; } } -@media (prefers-color-scheme: dark) { #filter_container input { border-color: #444; } } +@media (prefers-color-scheme: dark) { #filter_container #filter { background: #1e1e1e; } } -@media (prefers-color-scheme: dark) { #filter_container input { background: #1e1e1e; } } +@media (prefers-color-scheme: dark) { #filter_container #filter { color: #eee; } } -@media (prefers-color-scheme: dark) { #filter_container input { color: #eee; } } +#filter_container #filter:focus { border-color: #007acc; } -#filter_container input:focus { border-color: #007acc; } +#filter_container :disabled ~ label { color: #ccc; } -header button { font-family: inherit; font-size: inherit; border: 1px solid; border-radius: .2em; color: inherit; padding: .1em .5em; margin: 1px calc(.1em + 1px); cursor: pointer; border-color: #ccc; } +@media (prefers-color-scheme: dark) { #filter_container :disabled ~ label { color: #444; } } + +#filter_container label { font-size: .875em; color: #666; } + +@media (prefers-color-scheme: dark) { #filter_container label { color: #aaa; } } + +header button { font-family: inherit; font-size: inherit; border: 1px solid; border-radius: .2em; background: #eee; color: inherit; text-decoration: none; padding: .1em .5em; margin: 1px calc(.1em + 1px); cursor: pointer; border-color: #ccc; } + +@media (prefers-color-scheme: dark) { header button { background: #333; } } @media (prefers-color-scheme: dark) { header button { border-color: #444; } } @@ -266,13 +288,13 @@ kbd { border: 1px solid black; border-color: #888 #333 #333 #888; padding: .1em #index table.index { margin-left: -.5em; } -#index td, #index th { text-align: right; width: 5em; padding: .25em .5em; border-bottom: 1px solid #eee; } +#index td, #index th { text-align: right; padding: .25em .5em; border-bottom: 1px solid #eee; } @media (prefers-color-scheme: dark) { #index td, #index th { border-color: #333; } } -#index td.name, #index th.name { text-align: left; width: auto; } +#index td.name, #index th.name { text-align: left; width: auto; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; min-width: 15em; } -#index th { font-style: italic; color: #333; cursor: pointer; } +#index th { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-style: italic; color: #333; cursor: pointer; } @media (prefers-color-scheme: dark) { #index th { color: #ddd; } } @@ -280,23 +302,29 @@ kbd { border: 1px solid black; border-color: #888 #333 #333 #888; padding: .1em @media (prefers-color-scheme: dark) { #index th:hover { background: #333; } } +#index th .arrows { color: #666; font-size: 85%; font-family: sans-serif; font-style: normal; pointer-events: none; } + #index th[aria-sort="ascending"], #index th[aria-sort="descending"] { white-space: nowrap; background: #eee; padding-left: .5em; } @media (prefers-color-scheme: dark) { #index th[aria-sort="ascending"], #index th[aria-sort="descending"] { background: #333; } } -#index th[aria-sort="ascending"]::after { font-family: sans-serif; content: " ↑"; } +#index th[aria-sort="ascending"] .arrows::after { content: " ▲"; } + +#index th[aria-sort="descending"] .arrows::after { content: " ▼"; } -#index th[aria-sort="descending"]::after { font-family: sans-serif; content: " ↓"; } +#index td.name { font-size: 1.15em; } #index td.name a { text-decoration: none; color: inherit; } +#index td.name .no-noun { font-style: italic; } + #index tr.total td, #index tr.total_dynamic td { font-weight: bold; border-top: 1px solid #ccc; border-bottom: none; } -#index tr.file:hover { background: #eee; } +#index tr.region:hover { background: #eee; } -@media (prefers-color-scheme: dark) { #index tr.file:hover { background: #333; } } +@media (prefers-color-scheme: dark) { #index tr.region:hover { background: #333; } } -#index tr.file:hover td.name { text-decoration: underline; color: inherit; } +#index tr.region:hover td.name { text-decoration: underline; color: inherit; } #scroll_marker { position: fixed; z-index: 3; right: 0; top: 0; width: 16px; height: 100%; background: #fff; border-left: 1px solid #eee; will-change: transform; } diff --git a/doc/sample_html/z_7b071bdc2a35fa80___init___py.html b/doc/sample_html/z_7b071bdc2a35fa80___init___py.html index 678733dcc..4a59bb133 100644 --- a/doc/sample_html/z_7b071bdc2a35fa80___init___py.html +++ b/doc/sample_html/z_7b071bdc2a35fa80___init___py.html @@ -1,11 +1,11 @@ - + Coverage for cogapp/__init__.py: 100.00% - +
@@ -17,7 +17,7 @@

@@ -93,12 +93,12 @@

diff --git a/doc/sample_html/z_7b071bdc2a35fa80___main___py.html b/doc/sample_html/z_7b071bdc2a35fa80___main___py.html index 810f8305e..4b20354a2 100644 --- a/doc/sample_html/z_7b071bdc2a35fa80___main___py.html +++ b/doc/sample_html/z_7b071bdc2a35fa80___main___py.html @@ -1,11 +1,11 @@ - + Coverage for cogapp/__main__.py: 0.00% - +
@@ -17,7 +17,7 @@

@@ -93,12 +93,12 @@

diff --git a/doc/sample_html/z_7b071bdc2a35fa80_cogapp_py.html b/doc/sample_html/z_7b071bdc2a35fa80_cogapp_py.html index dcbf1ae6f..fbef027b8 100644 --- a/doc/sample_html/z_7b071bdc2a35fa80_cogapp_py.html +++ b/doc/sample_html/z_7b071bdc2a35fa80_cogapp_py.html @@ -1,11 +1,11 @@ - + Coverage for cogapp/cogapp.py: 46.74% - +
@@ -17,7 +17,7 @@

@@ -907,12 +907,12 @@

diff --git a/doc/sample_html/z_7b071bdc2a35fa80_makefiles_py.html b/doc/sample_html/z_7b071bdc2a35fa80_makefiles_py.html index 5e43565e6..4efacbdf7 100644 --- a/doc/sample_html/z_7b071bdc2a35fa80_makefiles_py.html +++ b/doc/sample_html/z_7b071bdc2a35fa80_makefiles_py.html @@ -1,11 +1,11 @@ - + Coverage for cogapp/makefiles.py: 11.11% - +
@@ -17,7 +17,7 @@

@@ -122,12 +122,12 @@

diff --git a/doc/sample_html/z_7b071bdc2a35fa80_test_cogapp_py.html b/doc/sample_html/z_7b071bdc2a35fa80_test_cogapp_py.html index 7be2a4f70..b28701909 100644 --- a/doc/sample_html/z_7b071bdc2a35fa80_test_cogapp_py.html +++ b/doc/sample_html/z_7b071bdc2a35fa80_test_cogapp_py.html @@ -1,11 +1,11 @@ - + Coverage for cogapp/test_cogapp.py: 29.50% - +
@@ -17,7 +17,7 @@

@@ -2742,12 +2742,12 @@

diff --git a/doc/sample_html/z_7b071bdc2a35fa80_test_makefiles_py.html b/doc/sample_html/z_7b071bdc2a35fa80_test_makefiles_py.html index 5e92e3102..f1a0d8d8a 100644 --- a/doc/sample_html/z_7b071bdc2a35fa80_test_makefiles_py.html +++ b/doc/sample_html/z_7b071bdc2a35fa80_test_makefiles_py.html @@ -1,11 +1,11 @@ - + Coverage for cogapp/test_makefiles.py: 22.97% - +
@@ -17,7 +17,7 @@

@@ -201,12 +201,12 @@

diff --git a/doc/sample_html/z_7b071bdc2a35fa80_test_whiteutils_py.html b/doc/sample_html/z_7b071bdc2a35fa80_test_whiteutils_py.html index 660043b4b..94899ce53 100644 --- a/doc/sample_html/z_7b071bdc2a35fa80_test_whiteutils_py.html +++ b/doc/sample_html/z_7b071bdc2a35fa80_test_whiteutils_py.html @@ -1,11 +1,11 @@ - + Coverage for cogapp/test_whiteutils.py: 26.47% - +
@@ -17,7 +17,7 @@

@@ -183,12 +183,12 @@

diff --git a/doc/sample_html/z_7b071bdc2a35fa80_utils_py.html b/doc/sample_html/z_7b071bdc2a35fa80_utils_py.html index b8a0c974d..36a49afc0 100644 --- a/doc/sample_html/z_7b071bdc2a35fa80_utils_py.html +++ b/doc/sample_html/z_7b071bdc2a35fa80_utils_py.html @@ -1,11 +1,11 @@ - + Coverage for cogapp/utils.py: 76.74% - +
@@ -17,7 +17,7 @@

@@ -157,12 +157,12 @@

diff --git a/doc/sample_html/z_7b071bdc2a35fa80_whiteutils_py.html b/doc/sample_html/z_7b071bdc2a35fa80_whiteutils_py.html index d0994d144..d53030223 100644 --- a/doc/sample_html/z_7b071bdc2a35fa80_whiteutils_py.html +++ b/doc/sample_html/z_7b071bdc2a35fa80_whiteutils_py.html @@ -1,11 +1,11 @@ - + Coverage for cogapp/whiteutils.py: 88.31% - +
@@ -17,7 +17,7 @@

@@ -153,12 +153,12 @@

ModulestatementsmissingexcludedbranchespartialcoverageFilestatementsmissingexcludedbranchespartialcoverage
cogapp/__init__.py 1 00 100.00%
cogapp/__main__.py 3 30 0.00%
cogapp/cogapp.py 483 22828 46.74%
cogapp/makefiles.py 22 180 11.11%
cogapp/test_cogapp.py 854 5981 29.50%
cogapp/test_makefiles.py 68 510 22.97%
cogapp/test_whiteutils.py 68 500 26.47%
cogapp/utils.py 37 82 76.74%
cogapp/whiteutils.py 43 5