Skip to content

Commit

Permalink
Merge pull request #107 from ciaranj/provide_collapsable_coverage_boxes
Browse files Browse the repository at this point in the history
provide some very rudimentary CSS & JS to collapse the 'covered'
  • Loading branch information
Alexis Sellier committed Jul 25, 2011
2 parents e80e96d + 63a15e7 commit 661b34f
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 4 deletions.
23 changes: 23 additions & 0 deletions lib/vows/coverage/fragments/coverage-head.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,24 @@
font-size: 0.8em;
color: #333;
}
.coverage.fullCoverage {
background-color:#0f0;
color: #111;
}
.coverage.okCoverage {
background-color: orange;
}
.coverage.poorCoverage {
background-color: red;
}
.code {
font-family: "Consolas", "Courier New", Courier, mono;
white-space: pre;
line-height: 16px;
}
.collapsed {
display: none;
}
body {
margin-left: 20px;
margin-top: 8px;
Expand All @@ -34,5 +47,15 @@
box-shadow: 10px 10px 5px #888;
}
</style>
<script type="text/javascript">
function expando(elem) {
// We're skipping the '/n' text element sibling.
var olElement= elem.nextSibling.nextSibling;
var currentState= olElement.className;
if( currentState == "collapsed" ) currentState= "";
else currentState= "collapsed";
olElement.className= currentState;
}
</script>
</head>
<body>
18 changes: 14 additions & 4 deletions lib/vows/coverage/report-html.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ var sys = require('sys'),

this.name = 'coverage-report-html';

function getCoverageClass( data ) {
var fullCoverage= (data.coverage == 100);
var okCoverage= (!fullCoverage && data.coverage >=60);
var coverageClass= '';
if( fullCoverage ) coverageClass= 'fullCoverage';
else if( okCoverage) coverageClass= 'okCoverage';
else coverageClass= 'poorCoverage';
return coverageClass;
}
this.report = function (coverageMap) {
var out, head, foot;

Expand All @@ -21,12 +30,12 @@ this.report = function (coverageMap) {
for (var filename in coverageMap) {
if (coverageMap.hasOwnProperty(filename)) {
var data = file.coverage(filename, coverageMap[filename]);

var coverageClass= getCoverageClass( data );
fs.writeSync(out, "<h2>" + filename + "</h2>\n");
fs.writeSync(out, '<span class="coverage">' + "[ hits: " + data.hits);
fs.writeSync(out, '<span class="coverage '+ coverageClass+'">' + "[ hits: " + data.hits);
fs.writeSync(out, ", misses: " + data.misses + ", sloc: " + data.sloc);
fs.writeSync(out, ", coverage: " + data.coverage.toFixed(2) + "% ]" + "</span>\n");
fs.writeSync(out, "<ol>\n");
fs.writeSync(out, ", coverage: " + data.coverage.toFixed(2) + "% ]" + "</span> <a href='#' onclick='expando(this)'>[+]</a>\n");
fs.writeSync(out, "<ol class='collapsed'>\n");

for (var i = 0; i < data.source.length; i++) {
fs.writeSync(out, ' <li class="code ');
Expand All @@ -36,6 +45,7 @@ this.report = function (coverageMap) {
}

fs.writeSync(out, "</ol>\n");
fs.writeSync(out, "<hr/>\n");
}
}

Expand Down

0 comments on commit 661b34f

Please sign in to comment.