|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,72 @@ |
|||
.gallio-report .testKind-Root |
|||
{ |
|||
background-image: url(../img/testkinds/Root.png); |
|||
} |
|||
.gallio-report .testKind-Assembly |
|||
{ |
|||
background-image: url(../img/testkinds/Assembly.png); |
|||
} |
|||
.gallio-report .testKind-File |
|||
{ |
|||
background-image: url(../img/testkinds/File.png); |
|||
} |
|||
.gallio-report .testKind-Namespace |
|||
{ |
|||
background-image: url(../img/testkinds/Namespace.png); |
|||
} |
|||
.gallio-report .testKind-Group |
|||
{ |
|||
background-image: url(../img/testkinds/Group.png); |
|||
} |
|||
.gallio-report .testKind-Suite |
|||
{ |
|||
background-image: url(../img/testkinds/Suite.png); |
|||
} |
|||
.gallio-report .testKind-Fixture |
|||
{ |
|||
background-image: url(../img/testkinds/Fixture.png); |
|||
} |
|||
.gallio-report .testKind-Test |
|||
{ |
|||
background-image: url(../img/testkinds/Test.png); |
|||
} |
|||
.gallio-report .testKind-Unsupported |
|||
{ |
|||
background-image: url(../img/testkinds/Unsupported.png); |
|||
} |
|||
.gallio-report .testKind-MbUnitv3Assembly |
|||
{ |
|||
background-image: url(../img/testkinds/MbUnitv3Assembly.png); |
|||
} |
|||
.gallio-report .testKind-csUnitAssembly |
|||
{ |
|||
background-image: url(../img/testkinds/csUnitAssembly.png); |
|||
} |
|||
.gallio-report .testKind-MbUnitv2Assembly |
|||
{ |
|||
background-image: url(../img/testkinds/MbUnitv2Assembly.png); |
|||
} |
|||
.gallio-report .testKind-NUnitv248Assembly |
|||
{ |
|||
background-image: url(../img/testkinds/NUnitv248Assembly.png); |
|||
} |
|||
.gallio-report .testKind-NUnitv25Assembly |
|||
{ |
|||
background-image: url(../img/testkinds/NUnitv25Assembly.png); |
|||
} |
|||
.gallio-report .testKind-xUnitAssembly |
|||
{ |
|||
background-image: url(../img/testkinds/xUnitAssembly.png); |
|||
} |
|||
.gallio-report .testKind-RSpecFile |
|||
{ |
|||
background-image: url(../img/testkinds/RSpecFile.png); |
|||
} |
|||
.gallio-report .testKind-RSpecExampleGroup |
|||
{ |
|||
background-image: url(../img/testkinds/RSpecExampleGroup.png); |
|||
} |
|||
.gallio-report .testKind-RSpecExample |
|||
{ |
|||
background-image: url(../img/testkinds/RSpecExample.png); |
|||
} |
|||
@ -0,0 +1,527 @@ |
|||
/* Common inherited text options */ |
|||
.gallio-report |
|||
{ |
|||
font-family: Verdana, Arial, Helvetica, Helv, sans-serif; |
|||
font-size: 10pt; |
|||
word-wrap: break-word; /* IE and CSS3, we use <wbr> for other browsers */ |
|||
} |
|||
|
|||
/* Containers */ |
|||
div.gallio-report, body.gallio-report |
|||
{ |
|||
margin: 0px 0px 0px 0px; |
|||
padding: 0px 0px 0px 0px; |
|||
overflow: hidden; |
|||
width: 100%; |
|||
} |
|||
|
|||
.gallio-report div.header |
|||
{ |
|||
margin: 0px 0px 0px 0px; |
|||
padding: 0px 0px 0px 0px; |
|||
background-color: #95b0be; |
|||
background-image: url(../img/header-background.gif); |
|||
background-repeat: repeat-y; |
|||
width: 100%; |
|||
height: 59px; |
|||
border-bottom: solid 1px black; |
|||
} |
|||
|
|||
.gallio-report div.header-image |
|||
{ |
|||
margin: 0px 0px 0px 0px; |
|||
padding: 0px 0px 0px 0px; |
|||
width: 100%; |
|||
height: 60px; |
|||
background-image: url(../img/GallioTestReportHeader.png); |
|||
background-repeat: no-repeat; |
|||
background-position: 0 0; |
|||
} |
|||
|
|||
.gallio-report div.content |
|||
{ |
|||
width: 100%; |
|||
} |
|||
|
|||
/* Navigation bar */ |
|||
.gallio-report div.navigator |
|||
{ |
|||
position: fixed; |
|||
right: 0px; |
|||
bottom: 0px; |
|||
margin: 0px 0px 0px 0px; |
|||
padding: 0px 0px 0px 0px; |
|||
width: 17px; |
|||
background-color: #d0d4d8; |
|||
overflow: hidden; |
|||
} |
|||
|
|||
.gallio-report div.navigator a.navigator-box |
|||
{ |
|||
display: block; |
|||
cursor: pointer; |
|||
width: 9px; |
|||
height: 9px; |
|||
position: absolute; |
|||
top: 3px; |
|||
left: 3px; |
|||
border: solid 1px black; |
|||
} |
|||
|
|||
.gallio-report div.navigator div.navigator-stripes |
|||
{ |
|||
position: absolute; |
|||
top: 17px; |
|||
bottom: 0px; |
|||
width: 17px; |
|||
} |
|||
|
|||
.gallio-report div.navigator div.navigator-stripes a |
|||
{ |
|||
display: block; |
|||
cursor: pointer; |
|||
width: 11px; |
|||
height: 2px; |
|||
position: absolute; |
|||
left: 3px; |
|||
} |
|||
|
|||
/* Generate a fixed layout when the report is the whole document */ |
|||
body.gallio-report div.header |
|||
{ |
|||
position: fixed; |
|||
top: 0px; |
|||
left: 0px; |
|||
} |
|||
|
|||
body.gallio-report div.content |
|||
{ |
|||
position: fixed; |
|||
top: 60px; |
|||
left: 0px; |
|||
right: 17px; |
|||
bottom: 0px; |
|||
overflow: auto; |
|||
width: auto; |
|||
} |
|||
|
|||
body.gallio-report div.navigator |
|||
{ |
|||
top: 60px; |
|||
} |
|||
|
|||
/* Generate an embedded layout when the report is only a fragment */ |
|||
div.gallio-report div.header |
|||
{ |
|||
border: solid 1px black; |
|||
} |
|||
|
|||
div.gallio-report div.navigator |
|||
{ |
|||
top: 0px; |
|||
} |
|||
|
|||
/* Section headings */ |
|||
.gallio-report h2 |
|||
{ |
|||
font-size: 13pt; |
|||
letter-spacing: 0.15em; |
|||
color: #1f1f1f; |
|||
padding: 0; |
|||
margin: 0 0 3px 0; |
|||
text-indent: 8px; |
|||
} |
|||
|
|||
|
|||
/* Toggle regions */ |
|||
.gallio-report ul |
|||
{ |
|||
list-style-type: none; |
|||
padding-left: 0px; |
|||
margin: 0px 0px 0px 0px; |
|||
} |
|||
|
|||
.gallio-report div.panel |
|||
{ |
|||
margin: 0px 0px 0px 24px; |
|||
} |
|||
|
|||
.gallio-report img.toggle |
|||
{ |
|||
cursor: pointer; |
|||
margin-right: 6px; |
|||
} |
|||
|
|||
|
|||
/* Status colors */ |
|||
.gallio-report .status-passed |
|||
{ |
|||
background-color: #008000; |
|||
} |
|||
|
|||
.gallio-report .status-failed |
|||
{ |
|||
background-color: #ff0000; |
|||
} |
|||
|
|||
.gallio-report .status-inconclusive |
|||
{ |
|||
background-color: #ffff00; |
|||
} |
|||
|
|||
.gallio-report .status-skipped |
|||
{ |
|||
background-color: #999999; |
|||
} |
|||
|
|||
|
|||
/* Outcome bar */ |
|||
.gallio-report table.outcome-bar |
|||
{ |
|||
display: inline; |
|||
vertical-align: middle; |
|||
margin-left: 8px; |
|||
} |
|||
|
|||
.gallio-report div.outcome-bar |
|||
{ |
|||
overflow: hidden; |
|||
|
|||
border: solid 1px #000000; |
|||
padding: 0px 0px 0px 0px; |
|||
margin: 0px 0px 0px 0px; |
|||
|
|||
height: 8px; |
|||
width: 72px; |
|||
} |
|||
|
|||
.gallio-report div.outcome-bar.condensed |
|||
{ |
|||
height: 6px; |
|||
width: 20px; |
|||
} |
|||
|
|||
|
|||
/* Outcome statistics */ |
|||
.gallio-report span.outcome-icons |
|||
{ |
|||
font-size: 11pt; |
|||
} |
|||
|
|||
|
|||
/* Test Kind Icons (Note: Additional kinds in separate automatically generated css file.) */ |
|||
|
|||
.gallio-report .testKind |
|||
{ |
|||
display: inline-block; |
|||
margin: 0px 6px 0px 0px; |
|||
padding: 0px 0px 0px 0px; |
|||
width: 16px; |
|||
height: 16px; |
|||
background-repeat: no-repeat; |
|||
background-position: center center; |
|||
background-image: url(../img/UnknownTestKind.png); |
|||
} |
|||
|
|||
/* Test runs */ |
|||
.gallio-report .testStepRun |
|||
{ |
|||
margin-top: 12pt; |
|||
font-size: 10pt; |
|||
} |
|||
|
|||
.gallio-report .testStepRunHeading |
|||
{ |
|||
font-weight: bold; |
|||
font-size: 10pt; |
|||
} |
|||
|
|||
.gallio-report .testStepRunHeading-Level1 |
|||
{ |
|||
font-size: 12pt; |
|||
} |
|||
|
|||
.gallio-report .testStepRunHeading-Level2 |
|||
{ |
|||
font-size: 11pt; |
|||
} |
|||
|
|||
.gallio-report .testStepRunHeading-Level3 |
|||
{ |
|||
font-size: 10pt; |
|||
} |
|||
|
|||
|
|||
/* Metadata entries */ |
|||
.gallio-report .metadata |
|||
{ |
|||
margin: 5px 5px 5px 0px; |
|||
padding: 5px 5px 5px 5px; |
|||
|
|||
background: #f4f4ff; |
|||
font-size: 9pt; |
|||
} |
|||
|
|||
/* Test logs */ |
|||
.gallio-report .log |
|||
{ |
|||
margin: 5px 0px 5px 0px; |
|||
} |
|||
|
|||
.gallio-report .logAttachmentList |
|||
{ |
|||
font-size: 10pt; |
|||
font-style: italic; |
|||
} |
|||
|
|||
.gallio-report .logStream |
|||
{ |
|||
background-color: #f0f0f0; |
|||
border-bottom: solid 1px #c6c6c6; |
|||
border-right: solid 1px #c6c6c6; |
|||
margin: 5px 5px 5px 0px; |
|||
padding: 5px 5px 5px 5px; |
|||
} |
|||
|
|||
.gallio-report .logStreamHeading |
|||
{ |
|||
font-weight:bold; |
|||
font-size: 10pt; |
|||
text-decoration: underline; |
|||
} |
|||
|
|||
.gallio-report .logStreamBody |
|||
{ |
|||
font-size: 9pt; |
|||
border-style: none; |
|||
} |
|||
|
|||
.gallio-report .logStreamSection |
|||
{ |
|||
margin-top: 12pt; |
|||
margin-bottom: 12pt; |
|||
padding-left: 6px; |
|||
border-left: solid 3px black; |
|||
} |
|||
|
|||
.gallio-report .logStreamSectionHeading |
|||
{ |
|||
font-weight: bold; |
|||
text-decoration: underline; |
|||
} |
|||
|
|||
.gallio-report .logStreamEmbed |
|||
{ |
|||
font-style: italic; |
|||
padding: 5px 10px 5px 10px; |
|||
} |
|||
|
|||
.gallio-report .logHiddenData |
|||
{ |
|||
display: none; |
|||
} |
|||
|
|||
/* Test log streams */ |
|||
.gallio-report .logStream-Failures |
|||
{ |
|||
background-color: #ffd8d8; |
|||
border: dotted 1px #905050; |
|||
} |
|||
|
|||
.gallio-report .logStream-Warnings |
|||
{ |
|||
background-color: #ffffc8; |
|||
border: dotted 1px #909050; |
|||
} |
|||
|
|||
/* Test log stream markers */ |
|||
.gallio-report .logStreamMarker-AssertionFailure |
|||
{ |
|||
} |
|||
|
|||
.gallio-report .logStreamMarker-Label |
|||
{ |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.gallio-report .logStreamMarker-Exception |
|||
{ |
|||
font-style: italic; |
|||
} |
|||
|
|||
.gallio-report .logStreamMarker-StackTrace |
|||
{ |
|||
font-style: italic; |
|||
} |
|||
|
|||
.gallio-report .logStreamMarker-Monospace |
|||
{ |
|||
font-family: Consolas, Courier New, Courier; |
|||
} |
|||
|
|||
.gallio-report .logStreamMarker-Highlight |
|||
{ |
|||
background-color: Yellow; |
|||
} |
|||
|
|||
.gallio-report .logStreamMarker-DiffAddition |
|||
{ |
|||
background-color: #b0ffb0; |
|||
} |
|||
|
|||
.gallio-report .logStreamMarker-DiffDeletion |
|||
{ |
|||
background-color: #ffb0b0; |
|||
text-decoration: line-through; |
|||
} |
|||
|
|||
.gallio-report .logStreamMarker-DiffChange |
|||
{ |
|||
background-color: #b0b0ff; |
|||
} |
|||
|
|||
.gallio-report .logStreamMarker-Ellipsis |
|||
{ |
|||
text-decoration: underline; |
|||
} |
|||
|
|||
.gallio-report .embeddedImage |
|||
{ |
|||
max-width: 800px; |
|||
} |
|||
|
|||
.gallio-report .attachmentLink |
|||
{ |
|||
} |
|||
|
|||
/* Sections */ |
|||
.gallio-report div.section |
|||
{ |
|||
background-color: #ebeaea; |
|||
margin: 5px; |
|||
padding: 10px; |
|||
border-bottom: solid 1px #dcdcdc; |
|||
border-right: solid 1px #dcdcdc; |
|||
overflow: hidden; |
|||
} |
|||
|
|||
.gallio-report div.section-content |
|||
{ |
|||
background-color: #fbfbfb; |
|||
padding: 10px 10px 10px 10px; |
|||
overflow: hidden; |
|||
} |
|||
|
|||
.gallio-report table.statistics-table |
|||
{ |
|||
border-collapse: collapse; |
|||
} |
|||
|
|||
.gallio-report table.statistics-table td |
|||
{ |
|||
width: 100%; |
|||
} |
|||
|
|||
.gallio-report table.statistics-table td.statistics-label-cell |
|||
{ |
|||
font-weight: bolder; |
|||
color: #646464; |
|||
padding: 0px 10px 0px 10px; |
|||
width: auto; |
|||
} |
|||
|
|||
.gallio-report table.statistics-table tr.alternate-row td |
|||
{ |
|||
background-color: #f2f2f2; |
|||
} |
|||
|
|||
|
|||
/* Annotations */ |
|||
.gallio-report div.annotation |
|||
{ |
|||
} |
|||
|
|||
.gallio-report div.annotation-message |
|||
{ |
|||
margin-left: 2em; |
|||
text-indent: -2em; |
|||
} |
|||
|
|||
.gallio-report div.annotation-location, div.annotation-reference, div.annotation-details |
|||
{ |
|||
margin-left: 4em; |
|||
text-indent: -2em; |
|||
font-style: italic; |
|||
} |
|||
|
|||
.gallio-report .annotation-type-error |
|||
{ |
|||
color: #990000; |
|||
} |
|||
|
|||
.gallio-report .annotation-type-warning |
|||
{ |
|||
color: #999900; |
|||
} |
|||
|
|||
.gallio-report .annotation-type-info |
|||
{ |
|||
color: #999999; |
|||
} |
|||
|
|||
/* Log Entries */ |
|||
.gallio-report div.logEntry |
|||
{ |
|||
} |
|||
|
|||
.gallio-report div.logEntry-text |
|||
{ |
|||
margin-left: 2em; |
|||
text-indent: -2em; |
|||
} |
|||
|
|||
.gallio-report div.logEntry-details |
|||
{ |
|||
margin-left: 4em; |
|||
text-indent: -2em; |
|||
font-style: italic; |
|||
} |
|||
|
|||
.gallio-report .logEntry-severity-error |
|||
{ |
|||
color: #990000; |
|||
} |
|||
|
|||
.gallio-report .logEntry-severity-warning |
|||
{ |
|||
color: #999900; |
|||
} |
|||
|
|||
.gallio-report .logEntry-severity-important |
|||
{ |
|||
color: #000000; |
|||
} |
|||
|
|||
.gallio-report .logEntry-severity-info |
|||
{ |
|||
color: #999999; |
|||
} |
|||
|
|||
.gallio-report .logEntry-severity-debug |
|||
{ |
|||
color: #aaaaaa; |
|||
} |
|||
|
|||
/* Cross-References */ |
|||
|
|||
.gallio-report a:hover.crossref |
|||
{ |
|||
background-color: #eeee99; |
|||
} |
|||
|
|||
.gallio-report a.crossref |
|||
{ |
|||
color: #000000; |
|||
text-decoration: none; |
|||
border-bottom: dotted 1px #aa00dd; |
|||
} |
|||
|
After Width: | Height: | Size: 129 B |
|
After Width: | Height: | Size: 86 B |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 193 B |
|
After Width: | Height: | Size: 88 B |
|
After Width: | Height: | Size: 293 B |
|
After Width: | Height: | Size: 88 B |
|
After Width: | Height: | Size: 155 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 197 B |
|
After Width: | Height: | Size: 162 B |
|
After Width: | Height: | Size: 406 B |
|
After Width: | Height: | Size: 162 B |
|
After Width: | Height: | Size: 880 B |
|
After Width: | Height: | Size: 880 B |
|
After Width: | Height: | Size: 207 B |
|
After Width: | Height: | Size: 207 B |
|
After Width: | Height: | Size: 162 B |
|
After Width: | Height: | Size: 242 B |
|
After Width: | Height: | Size: 406 B |
|
After Width: | Height: | Size: 197 B |
|
After Width: | Height: | Size: 197 B |
|
After Width: | Height: | Size: 162 B |
|
After Width: | Height: | Size: 242 B |
|
After Width: | Height: | Size: 162 B |
|
After Width: | Height: | Size: 264 B |
|
After Width: | Height: | Size: 788 B |
@ -0,0 +1,244 @@ |
|||
function reportLoaded() |
|||
{ |
|||
fixAttachmentLinksOnIE(); |
|||
} |
|||
|
|||
function fixAttachmentLinksOnIE() |
|||
{ |
|||
if (needFixupForIE()) |
|||
{ |
|||
// On IE, pages in the local filesystem that possess the Mark of the Web
|
|||
// are forbidden from navigating to other local files. This breaks links
|
|||
// to attachments on the local filesystem unless we make some changes.
|
|||
var count = document.links.length; |
|||
for (var i = 0; i < count; i++) |
|||
{ |
|||
var link = document.links[i]; |
|||
var href = link.href; |
|||
if (link.className == "attachmentLink" && isLocalFileUri(href)) |
|||
{ |
|||
link.href = toGallioAttachmentUri(href); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
function toGallioAttachmentUri(uri) |
|||
{ |
|||
var path = uri.substring(8).replace(/\//g, "\\"); |
|||
return "gallio:openAttachment?path=" + path; |
|||
} |
|||
|
|||
var needFixupForIECache = undefined; |
|||
function needFixupForIE() |
|||
{ |
|||
if (needFixupForIECache == undefined) |
|||
needFixupForIECache = isIE() && (isLocalFileUri(window.location.href) || isInMemoryUri(window.location.href)); |
|||
|
|||
return needFixupForIECache; |
|||
} |
|||
|
|||
function isIE() |
|||
{ |
|||
return navigator.appName == "Microsoft Internet Explorer"; |
|||
} |
|||
|
|||
function isLocalFileUri(uri) |
|||
{ |
|||
return uri.search(/^file:\/\/\//) == 0; |
|||
} |
|||
|
|||
function isInMemoryUri(uri) |
|||
{ |
|||
return uri == "about:blank"; |
|||
} |
|||
|
|||
function toggle(id) |
|||
{ |
|||
var icon = document.getElementById('toggle-' + id); |
|||
if (icon != null) |
|||
{ |
|||
var childElement = document.getElementById(id); |
|||
if (icon.src.indexOf('Plus.gif') != -1) |
|||
{ |
|||
icon.src = icon.src.replace('Plus.gif', 'Minus.gif'); |
|||
if (childElement != null) |
|||
childElement.style.display = "block"; |
|||
} |
|||
else |
|||
{ |
|||
icon.src = icon.src.replace('Minus.gif', 'Plus.gif'); |
|||
if (childElement != null) |
|||
childElement.style.display = "none"; |
|||
} |
|||
} |
|||
} |
|||
|
|||
function expand(ids) |
|||
{ |
|||
for (var i = 0; i < ids.length; i++) |
|||
{ |
|||
var id = ids[i]; |
|||
var icon = document.getElementById('toggle-' + id); |
|||
if (icon != null) |
|||
{ |
|||
if (icon.src.indexOf('Plus.gif') != -1) |
|||
{ |
|||
icon.src = icon.src.replace('Plus.gif', 'Minus.gif'); |
|||
|
|||
var childElement = document.getElementById(id); |
|||
if (childElement != null) |
|||
childElement.style.display = "block"; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
function navigateTo(path, line, column) |
|||
{ |
|||
var navigator = new ActiveXObject("Gallio.Navigator.GallioNavigator"); |
|||
if (navigator) |
|||
navigator.NavigateTo(path, line, column); |
|||
} |
|||
|
|||
function setInnerHTMLFromUri(id, uri) |
|||
{ |
|||
_asyncLoadContentFromUri(uri, function(loadedDocument) |
|||
{ |
|||
// workaround for IE failure to auto-detect HTML content
|
|||
var children = isIE() ? loadedDocument.body.children : null; |
|||
if (children && children.length == 1 && children[0].tagName == "PRE") |
|||
{ |
|||
var text = getTextContent(loadedDocument.body); |
|||
setInnerHTMLFromContent(id, text); |
|||
} |
|||
else |
|||
{ |
|||
var html = loadedDocument.body.innerHTML; |
|||
setInnerHTMLFromContent(id, html); |
|||
} |
|||
}); |
|||
} |
|||
|
|||
function setPreformattedTextFromUri(id, uri) |
|||
{ |
|||
_asyncLoadContentFromUri(uri, function(loadedDocument) { setPreformattedTextFromContent(id, getTextContent(loadedDocument.body)); }); |
|||
} |
|||
|
|||
function setInnerHTMLFromHiddenData(id) |
|||
{ |
|||
var element = document.getElementById(id + '-hidden'); |
|||
if (element) |
|||
setInnerHTMLFromContent(id, getTextContent(element)); |
|||
} |
|||
|
|||
function setPreformattedTextFromHiddenData(id) |
|||
{ |
|||
var element = document.getElementById(id + '-hidden'); |
|||
if (element) |
|||
setPreformattedTextFromContent(id, getTextContent(element)); |
|||
} |
|||
|
|||
function setInnerHTMLFromContent(id, content) |
|||
{ |
|||
if (content != undefined) |
|||
{ |
|||
var element = document.getElementById(id); |
|||
if (element) |
|||
element.innerHTML = content; |
|||
} |
|||
} |
|||
|
|||
function setPreformattedTextFromContent(id, content) |
|||
{ |
|||
if (content != undefined) |
|||
{ |
|||
var element = document.getElementById(id); |
|||
if (element) |
|||
{ |
|||
element.innerHTML = "<pre></pre>"; |
|||
setTextContent(element.children[0], content); |
|||
} |
|||
} |
|||
} |
|||
|
|||
function getTextContent(element) |
|||
{ |
|||
return element.textContent != undefined ? element.textContent : element.innerText; |
|||
} |
|||
|
|||
function setTextContent(element, content) |
|||
{ |
|||
if (element.textContent != undefined) |
|||
element.textContent = content; |
|||
else |
|||
element.innerText = content; |
|||
} |
|||
|
|||
function setFrameLocation(frame, uri) |
|||
{ |
|||
if (frame.contentWindow) |
|||
frame.contentWindow.location.replace(uri); |
|||
} |
|||
|
|||
function _asyncLoadContentFromUri(uri, callback) |
|||
{ |
|||
var asyncLoadFrame = document.getElementById('_asyncLoadFrame'); |
|||
|
|||
if (!asyncLoadFrame.pendingRequests) |
|||
asyncLoadFrame.pendingRequests = []; |
|||
|
|||
asyncLoadFrame.pendingRequests.push({ uri: uri, callback: callback }); |
|||
|
|||
_asyncLoadFrameNext(asyncLoadFrame); |
|||
} |
|||
|
|||
function _asyncLoadFrameOnLoad() |
|||
{ |
|||
var asyncLoadFrame = document.getElementById('_asyncLoadFrame'); |
|||
if (asyncLoadFrame) |
|||
{ |
|||
var request = asyncLoadFrame.currentRequest; |
|||
if (request) |
|||
{ |
|||
asyncLoadFrame.currentRequest = undefined; |
|||
|
|||
try |
|||
{ |
|||
var loadedWindow = asyncLoadFrame.contentWindow; |
|||
if (loadedWindow && loadedWindow.location.href != "about:blank") |
|||
{ |
|||
var loadedDocument = loadedWindow.document; |
|||
if (loadedDocument) |
|||
{ |
|||
request.callback(loadedDocument); |
|||
} |
|||
} |
|||
} |
|||
catch (ex) |
|||
{ |
|||
//alert(ex.message);
|
|||
} |
|||
} |
|||
|
|||
_asyncLoadFrameNext(asyncLoadFrame); |
|||
} |
|||
} |
|||
|
|||
function _asyncLoadFrameNext(asyncLoadFrame) |
|||
{ |
|||
while (!asyncLoadFrame.currentRequest && asyncLoadFrame.pendingRequests && asyncLoadFrame.pendingRequests.length > 0) |
|||
{ |
|||
var request = asyncLoadFrame.pendingRequests.shift(); |
|||
asyncLoadFrame.currentRequest = request; |
|||
|
|||
try |
|||
{ |
|||
setFrameLocation(asyncLoadFrame, request.uri); |
|||
} |
|||
catch (ex) |
|||
{ |
|||
//alert(ex.message);
|
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,20 @@ |
|||
<?xml version="1.0" encoding="iso-8859-1"?> |
|||
<xsl:stylesheet version="1.0" |
|||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|||
xmlns:g="http://www.gallio.org/"> |
|||
<xsl:output method="html" indent="no" encoding="utf-8" omit-xml-declaration="yes" /> |
|||
<xsl:param name="resourceRoot" select="''" /> |
|||
|
|||
<xsl:variable name="cssDir">/gallio/css/</xsl:variable> |
|||
<xsl:variable name="jsDir">/gallio/js/</xsl:variable> |
|||
<xsl:variable name="imgDir">/gallio/img/</xsl:variable> |
|||
<xsl:variable name="attachmentBrokerUrl">GallioAttachment.aspx?</xsl:variable> |
|||
<xsl:variable name="condensed" select="1" /> |
|||
|
|||
<xsl:template match="/"> |
|||
<xsl:apply-templates select="//g:report" mode="html-fragment" /> |
|||
</xsl:template> |
|||
|
|||
<!-- Include the base HTML / XHTML report template --> |
|||
<xsl:include href="Gallio-Report.html+xhtml.xsl" /> |
|||
</xsl:stylesheet> |
|||
@ -0,0 +1,20 @@ |
|||
<?xml version="1.0" encoding="iso-8859-1"?> |
|||
<xsl:stylesheet version="1.0" |
|||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|||
xmlns:g="http://www.gallio.org/"> |
|||
<xsl:output method="html" indent="no" encoding="utf-8" omit-xml-declaration="yes" /> |
|||
<xsl:param name="resourceRoot" select="''" /> |
|||
|
|||
<xsl:variable name="cssDir">/gallio/css/</xsl:variable> |
|||
<xsl:variable name="jsDir">/gallio/js/</xsl:variable> |
|||
<xsl:variable name="imgDir">/gallio/img/</xsl:variable> |
|||
<xsl:variable name="attachmentBrokerUrl">GallioAttachment.aspx?</xsl:variable> |
|||
<xsl:variable name="condensed" select="0" /> |
|||
|
|||
<xsl:template match="/"> |
|||
<xsl:apply-templates select="//g:report" mode="html-fragment" /> |
|||
</xsl:template> |
|||
|
|||
<!-- Include the base HTML / XHTML report template --> |
|||
<xsl:include href="Gallio-Report.html+xhtml.xsl" /> |
|||
</xsl:stylesheet> |
|||
@ -0,0 +1,356 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<xsl:stylesheet version="1.0" |
|||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|||
xmlns:msxsl="urn:schemas-microsoft-com:xslt" |
|||
xmlns:g="http://www.gallio.org/" |
|||
xmlns="http://www.w3.org/1999/xhtml"> |
|||
<!-- Common utility functions --> |
|||
|
|||
<!-- Formats a statistics line like 5 run, 3 passed, 2 failed (1 error), 0 inconclusive, 2 skipped --> |
|||
<xsl:template name="format-statistics"> |
|||
<xsl:param name="statistics" /> |
|||
|
|||
<xsl:value-of select="$statistics/@runCount"/> |
|||
<xsl:text> run, </xsl:text> |
|||
|
|||
<xsl:value-of select="$statistics/@passedCount"/> |
|||
<xsl:text> passed</xsl:text> |
|||
<xsl:call-template name="format-statistics-category-counts"> |
|||
<xsl:with-param name="statistics" select="$statistics" /> |
|||
<xsl:with-param name="status">passed</xsl:with-param> |
|||
</xsl:call-template> |
|||
<xsl:text>, </xsl:text> |
|||
|
|||
<xsl:value-of select="$statistics/@failedCount"/> |
|||
<xsl:text> failed</xsl:text> |
|||
<xsl:call-template name="format-statistics-category-counts"> |
|||
<xsl:with-param name="statistics" select="$statistics" /> |
|||
<xsl:with-param name="status">failed</xsl:with-param> |
|||
</xsl:call-template> |
|||
<xsl:text>, </xsl:text> |
|||
|
|||
<xsl:value-of select="$statistics/@inconclusiveCount"/> |
|||
<xsl:text> inconclusive</xsl:text> |
|||
<xsl:call-template name="format-statistics-category-counts"> |
|||
<xsl:with-param name="statistics" select="$statistics" /> |
|||
<xsl:with-param name="status">inconclusive</xsl:with-param> |
|||
</xsl:call-template> |
|||
<xsl:text>, </xsl:text> |
|||
|
|||
<xsl:value-of select="$statistics/@skippedCount"/> |
|||
<xsl:text> skipped</xsl:text> |
|||
<xsl:call-template name="format-statistics-category-counts"> |
|||
<xsl:with-param name="statistics" select="$statistics" /> |
|||
<xsl:with-param name="status">skipped</xsl:with-param> |
|||
</xsl:call-template> |
|||
</xsl:template> |
|||
|
|||
<xsl:template name="format-statistics-category-counts"> |
|||
<xsl:param name="statistics" /> |
|||
<xsl:param name="status" /> |
|||
|
|||
<xsl:variable name="outcomeSummaries" select="$statistics/g:outcomeSummaries/g:outcomeSummary[g:outcome/@status=$status and g:outcome/@category]" /> |
|||
|
|||
<xsl:if test="$outcomeSummaries"> |
|||
<xsl:text> (</xsl:text> |
|||
<xsl:for-each select="$outcomeSummaries"> |
|||
<xsl:sort data-type="text" order="ascending" select="g:outcome/@category"/> |
|||
|
|||
<xsl:if test="position() != 1"><xsl:text>, </xsl:text></xsl:if> |
|||
<xsl:value-of select="@count"/> |
|||
<xsl:text> </xsl:text> |
|||
<xsl:value-of select="g:outcome/@category"/> |
|||
</xsl:for-each> |
|||
<xsl:text>)</xsl:text> |
|||
</xsl:if> |
|||
</xsl:template> |
|||
|
|||
<!-- Formats a CodeLocation --> |
|||
<xsl:template name="format-code-location"> |
|||
<xsl:param name="codeLocation" /> |
|||
|
|||
<xsl:choose> |
|||
<xsl:when test="$codeLocation/@path"> |
|||
<xsl:value-of select="$codeLocation/@path"/> |
|||
<xsl:if test="$codeLocation/@line"> |
|||
<xsl:text>(</xsl:text> |
|||
<xsl:value-of select="$codeLocation/@line"/> |
|||
<xsl:if test="$codeLocation/@column"> |
|||
<xsl:text>,</xsl:text> |
|||
<xsl:value-of select="$codeLocation/@column"/> |
|||
</xsl:if> |
|||
<xsl:text>)</xsl:text> |
|||
</xsl:if> |
|||
</xsl:when> |
|||
<xsl:otherwise> |
|||
<xsl:text>(unknown)</xsl:text> |
|||
</xsl:otherwise> |
|||
</xsl:choose> |
|||
</xsl:template> |
|||
|
|||
<!-- Formats a CodeReference --> |
|||
<xsl:template name="format-code-reference"> |
|||
<xsl:param name="codeReference" /> |
|||
|
|||
<xsl:if test="$codeReference/@parameter"> |
|||
<xsl:text>Parameter </xsl:text> |
|||
<xsl:value-of select="$codeReference/@parameter"/> |
|||
<xsl:text> of </xsl:text> |
|||
</xsl:if> |
|||
|
|||
<xsl:choose> |
|||
<xsl:when test="$codeReference/@type"> |
|||
<xsl:value-of select="$codeReference/@type"/> |
|||
<xsl:if test="$codeReference/@member"> |
|||
<xsl:text>.</xsl:text> |
|||
<xsl:value-of select="$codeReference/@member"/> |
|||
</xsl:if> |
|||
</xsl:when> |
|||
<xsl:when test="$codeReference/@namespace"> |
|||
<xsl:value-of select="$codeReference/@namespace"/> |
|||
</xsl:when> |
|||
</xsl:choose> |
|||
|
|||
<xsl:if test="$codeReference/@assembly"> |
|||
<xsl:if test="$codeReference/@namespace"> |
|||
<xsl:text>, </xsl:text> |
|||
</xsl:if> |
|||
<xsl:value-of select="$codeReference/@assembly"/> |
|||
</xsl:if> |
|||
</xsl:template> |
|||
|
|||
<!-- Creates an aggregate statistics summary from a test instance run and its descendants --> |
|||
<xsl:template name="aggregate-statistics"> |
|||
<xsl:param name="testStepRun" /> |
|||
|
|||
<xsl:variable name="testCaseResults" select="$testStepRun/descendant-or-self::g:testStepRun[g:testStep/@isTestCase='true']/g:result" /> |
|||
<xsl:variable name="testCaseOutcomes" select="$testCaseResults/g:outcome" /> |
|||
|
|||
<xsl:variable name="skippedOutcomes" select="$testCaseOutcomes[@status = 'skipped']" /> |
|||
<xsl:variable name="passedOutcomes" select="$testCaseOutcomes[@status = 'passed']" /> |
|||
<xsl:variable name="inconclusiveOutcomes" select="$testCaseOutcomes[@status = 'inconclusive']" /> |
|||
<xsl:variable name="failedOutcomes" select="$testCaseOutcomes[@status = 'failed']" /> |
|||
|
|||
<xsl:variable name="skippedCount" select="count($skippedOutcomes)"/> |
|||
<xsl:variable name="passedCount" select="count($passedOutcomes)"/> |
|||
<xsl:variable name="inconclusiveCount" select="count($inconclusiveOutcomes)"/> |
|||
<xsl:variable name="failedCount" select="count($failedOutcomes)"/> |
|||
|
|||
<g:statistics> |
|||
<xsl:attribute name="duration"><xsl:value-of select="$testStepRun/g:result/@duration"/></xsl:attribute> |
|||
<xsl:attribute name="assertCount"><xsl:value-of select="$testStepRun/g:result/@assertCount"/></xsl:attribute> |
|||
|
|||
<xsl:attribute name="skippedCount"><xsl:value-of select="$skippedCount"/></xsl:attribute> |
|||
<xsl:attribute name="passedCount"><xsl:value-of select="$passedCount"/></xsl:attribute> |
|||
<xsl:attribute name="inconclusiveCount"><xsl:value-of select="$inconclusiveCount"/></xsl:attribute> |
|||
<xsl:attribute name="failedCount"><xsl:value-of select="$failedCount"/></xsl:attribute> |
|||
|
|||
<xsl:attribute name="runCount"><xsl:value-of select="$passedCount + $inconclusiveCount + $failedCount"/></xsl:attribute> |
|||
|
|||
<g:outcomeSummaries> |
|||
<xsl:call-template name="aggregate-statistics-outcome-summaries"> |
|||
<xsl:with-param name="status">skipped</xsl:with-param> |
|||
<xsl:with-param name="outcomes" select="$skippedOutcomes" /> |
|||
</xsl:call-template> |
|||
<xsl:call-template name="aggregate-statistics-outcome-summaries"> |
|||
<xsl:with-param name="status">passed</xsl:with-param> |
|||
<xsl:with-param name="outcomes" select="$passedOutcomes" /> |
|||
</xsl:call-template> |
|||
<xsl:call-template name="aggregate-statistics-outcome-summaries"> |
|||
<xsl:with-param name="status">inconclusive</xsl:with-param> |
|||
<xsl:with-param name="outcomes" select="$inconclusiveOutcomes" /> |
|||
</xsl:call-template> |
|||
<xsl:call-template name="aggregate-statistics-outcome-summaries"> |
|||
<xsl:with-param name="status">failed</xsl:with-param> |
|||
<xsl:with-param name="outcomes" select="$failedOutcomes" /> |
|||
</xsl:call-template> |
|||
</g:outcomeSummaries> |
|||
</g:statistics> |
|||
</xsl:template> |
|||
|
|||
<xsl:key name="outcome-category" match="g:outcome" use="@category" /> |
|||
<xsl:template name="aggregate-statistics-outcome-summaries"> |
|||
<xsl:param name="status" /> |
|||
<xsl:param name="outcomes" /> |
|||
|
|||
<xsl:for-each select="$outcomes[generate-id() = generate-id(key('outcome-category', @category)[1])]"> |
|||
<xsl:variable name="category" select="@category" /> |
|||
<g:outcomeSummary count="{count($outcomes[@category = $category])}"> |
|||
<g:outcome status="{$status}" category="{$category}" /> |
|||
</g:outcomeSummary> |
|||
</xsl:for-each> |
|||
</xsl:template> |
|||
|
|||
<!-- Indents text using the specified prefix --> |
|||
<xsl:template name="indent"> |
|||
<xsl:param name="text" /> |
|||
<xsl:param name="firstLinePrefix" select="' '" /> |
|||
<xsl:param name="otherLinePrefix" select="' '" /> |
|||
<xsl:param name="trailingNewline" select="1" /> |
|||
|
|||
<xsl:if test="$text!=''"> |
|||
<xsl:call-template name="indent-recursive"> |
|||
<xsl:with-param name="text" select="translate($text, '	

', ' 
')" /> |
|||
<xsl:with-param name="firstLinePrefix" select="$firstLinePrefix" /> |
|||
<xsl:with-param name="otherLinePrefix" select="$otherLinePrefix" /> |
|||
<xsl:with-param name="trailingNewline" select="$trailingNewline" /> |
|||
</xsl:call-template> |
|||
</xsl:if> |
|||
</xsl:template> |
|||
|
|||
<xsl:template name="indent-recursive"> |
|||
<xsl:param name="text" /> |
|||
<xsl:param name="firstLinePrefix" /> |
|||
<xsl:param name="otherLinePrefix" /> |
|||
<xsl:param name="trailingNewline" /> |
|||
|
|||
<xsl:choose> |
|||
<xsl:when test="contains($text, '
')"> |
|||
<xsl:value-of select="$firstLinePrefix"/> |
|||
<xsl:value-of select="substring-before($text, '
')"/> |
|||
<xsl:text>
</xsl:text> |
|||
<xsl:call-template name="indent-recursive"> |
|||
<xsl:with-param name="text" select="substring-after($text, '
')" /> |
|||
<xsl:with-param name="firstLinePrefix" select="$otherLinePrefix" /> |
|||
<xsl:with-param name="otherLinePrefix" select="$otherLinePrefix" /> |
|||
<xsl:with-param name="trailingNewline" select="$trailingNewline" /> |
|||
</xsl:call-template> |
|||
</xsl:when> |
|||
<!-- Note: when we are not adding a trailing new line, we must be careful |
|||
to include the leading prefix space even when the text line is empty |
|||
because subsequently appended text will assume that the current |
|||
line is already indented appropriately --> |
|||
<xsl:when test="$text!='' or not($trailingNewline)"> |
|||
<xsl:value-of select="$firstLinePrefix"/> |
|||
<xsl:value-of select="$text"/> |
|||
<xsl:if test="$trailingNewline"> |
|||
<xsl:text>
</xsl:text> |
|||
</xsl:if> |
|||
</xsl:when> |
|||
</xsl:choose> |
|||
</xsl:template> |
|||
|
|||
<!-- Prints text with <br/> at line breaks. |
|||
Also introduces <wbr/> word break characters every so often if no natural breakpoints appear. |
|||
Some of the soft breaks are useful, but the forced break at 20 chars is intended to work around |
|||
limitations in browsers that do not support the word-wrap:break-all CSS3 property. |
|||
--> |
|||
<xsl:template name="print-text-with-breaks"> |
|||
<xsl:param name="text" /> |
|||
<xsl:param name="count" select="0" /> |
|||
|
|||
<xsl:if test="$text"> |
|||
<xsl:variable name="char" select="substring($text, 1, 1)"/> |
|||
|
|||
<xsl:choose> |
|||
<!-- natural word breaks --> |
|||
<xsl:when test="$char = ' '"> |
|||
<!-- Always replace spaces by non-breaking spaces followed by word-breaks to ensure that |
|||
text can reflow without actually consuming the space. Without this detail |
|||
it can happen that spaces that are supposed to be highligted (perhaps as part |
|||
of a marker for a diff) will instead vanish when the text reflow occurs, giving |
|||
a false impression of the content. --> |
|||
<xsl:text> </xsl:text> |
|||
<wbr/> |
|||
<xsl:call-template name="print-text-with-breaks"> |
|||
<xsl:with-param name="text" select="substring($text, 2)" /> |
|||
<xsl:with-param name="count" select="0" /> |
|||
</xsl:call-template> |
|||
</xsl:when> |
|||
|
|||
<!-- line breaks --> |
|||
<xsl:when test="$char = ' '"> |
|||
<br/> |
|||
<xsl:call-template name="print-text-with-breaks"> |
|||
<xsl:with-param name="text" select="substring($text, 2)" /> |
|||
<xsl:with-param name="count" select="0" /> |
|||
</xsl:call-template> |
|||
</xsl:when> |
|||
|
|||
<!-- characters to break before --> |
|||
<xsl:when test="$char = '.' or $char = '/' or $char = '\' or $char = ':' or $char = '(' or $char = '<' or $char = '[' or $char = '{' or $char = '_'"> |
|||
<wbr/> |
|||
<xsl:value-of select="$char"/> |
|||
<xsl:call-template name="print-text-with-breaks"> |
|||
<xsl:with-param name="text" select="substring($text, 2)" /> |
|||
<xsl:with-param name="count" select="1" /> |
|||
</xsl:call-template> |
|||
</xsl:when> |
|||
|
|||
<!-- characters to break after --> |
|||
<xsl:when test="$char = ')' or $char = '>' or $char = ']' or $char = '}'"> |
|||
<xsl:value-of select="$char"/> |
|||
<wbr/> |
|||
<xsl:call-template name="print-text-with-breaks"> |
|||
<xsl:with-param name="text" select="substring($text, 2)" /> |
|||
<xsl:with-param name="count" select="0" /> |
|||
</xsl:call-template> |
|||
</xsl:when> |
|||
|
|||
<!-- other characters --> |
|||
<xsl:when test="$count = 19"> |
|||
<xsl:value-of select="$char"/> |
|||
<wbr/> |
|||
<xsl:call-template name="print-text-with-breaks"> |
|||
<xsl:with-param name="text" select="substring($text, 2)" /> |
|||
<xsl:with-param name="count" select="0" /> |
|||
</xsl:call-template> |
|||
</xsl:when> |
|||
|
|||
<xsl:otherwise> |
|||
<xsl:value-of select="$char"/> |
|||
<xsl:call-template name="print-text-with-breaks"> |
|||
<xsl:with-param name="text" select="substring($text, 2)" /> |
|||
<xsl:with-param name="count" select="$count + 1" /> |
|||
</xsl:call-template> |
|||
</xsl:otherwise> |
|||
</xsl:choose> |
|||
</xsl:if> |
|||
</xsl:template> |
|||
|
|||
<!-- Pretty print date time values --> |
|||
<xsl:template name="format-datetime"> |
|||
<xsl:param name="datetime" /> |
|||
<xsl:value-of select="substring($datetime, 12, 8)" />, <xsl:value-of select="substring($datetime, 1, 10)" /> |
|||
</xsl:template> |
|||
|
|||
<!-- Namespace stripping adapted from http://www.xml.com/pub/a/2004/05/05/tr.html --> |
|||
<xsl:template name="strip-namespace"> |
|||
<xsl:param name="nodes" /> |
|||
<xsl:apply-templates select="msxsl:node-set($nodes)" mode="strip-namespace" /> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="*" mode="strip-namespace"> |
|||
<xsl:element name="{local-name()}" namespace=""> |
|||
<xsl:apply-templates select="@*|node()" mode="strip-namespace"/> |
|||
</xsl:element> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="@*" mode="strip-namespace"> |
|||
<xsl:attribute name="{local-name()}" namespace=""> |
|||
<xsl:value-of select="."/> |
|||
</xsl:attribute> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="processing-instruction()|comment()" mode="strip-namespace"> |
|||
<xsl:copy> |
|||
<xsl:apply-templates select="node()" mode="strip-namespace"/> |
|||
</xsl:copy> |
|||
</xsl:template> |
|||
|
|||
<!-- Converting paths to URIs --> |
|||
<xsl:template name="path-to-uri"> |
|||
<xsl:param name="path" /> |
|||
<xsl:if test="$path != ''"> |
|||
<xsl:choose> |
|||
<xsl:when test="starts-with($path, '\')">/</xsl:when> |
|||
<xsl:when test="starts-with($path, ' ')">%20</xsl:when> |
|||
<xsl:when test="starts-with($path, '%')">%25</xsl:when> |
|||
<xsl:otherwise><xsl:value-of select="substring($path, 1, 1)"/></xsl:otherwise> |
|||
</xsl:choose> |
|||
<xsl:call-template name="path-to-uri"> |
|||
<xsl:with-param name="path" select="substring($path, 2)" /> |
|||
</xsl:call-template> |
|||
</xsl:if> |
|||
</xsl:template> |
|||
</xsl:stylesheet> |
|||
@ -0,0 +1,21 @@ |
|||
<?xml version="1.0" encoding="iso-8859-1"?> |
|||
<xsl:stylesheet version="1.0" |
|||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|||
xmlns:g="http://www.gallio.org/"> |
|||
<xsl:output method="html" doctype-system="http://www.w3.org/TR/html4/strict.dtd" |
|||
doctype-public="-//W3C//DTD HTML 4.01//EN" indent="no" encoding="utf-8" omit-xml-declaration="yes" /> |
|||
<xsl:param name="resourceRoot" select="''" /> |
|||
|
|||
<xsl:variable name="cssDir"><xsl:if test="$resourceRoot != ''"><xsl:value-of select="$resourceRoot"/>/</xsl:if>css/</xsl:variable> |
|||
<xsl:variable name="jsDir"><xsl:if test="$resourceRoot != ''"><xsl:value-of select="$resourceRoot"/>/</xsl:if>js/</xsl:variable> |
|||
<xsl:variable name="imgDir"><xsl:if test="$resourceRoot != ''"><xsl:value-of select="$resourceRoot"/>/</xsl:if>img/</xsl:variable> |
|||
<xsl:variable name="attachmentBrokerUrl"></xsl:variable> |
|||
<xsl:variable name="condensed" select="1" /> |
|||
|
|||
<xsl:template match="/"> |
|||
<xsl:apply-templates select="/g:report" mode="html-document" /> |
|||
</xsl:template> |
|||
|
|||
<!-- Include the base HTML / XHTML report template --> |
|||
<xsl:include href="Gallio-Report.html+xhtml.xsl" /> |
|||
</xsl:stylesheet> |
|||
@ -0,0 +1,21 @@ |
|||
<?xml version="1.0" encoding="iso-8859-1"?> |
|||
<xsl:stylesheet version="1.0" |
|||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|||
xmlns:g="http://www.gallio.org/"> |
|||
<xsl:output method="html" doctype-system="http://www.w3.org/TR/html4/strict.dtd" |
|||
doctype-public="-//W3C//DTD HTML 4.01//EN" indent="no" encoding="utf-8" omit-xml-declaration="yes" /> |
|||
<xsl:param name="resourceRoot" select="''" /> |
|||
|
|||
<xsl:variable name="cssDir"><xsl:if test="$resourceRoot != ''"><xsl:value-of select="$resourceRoot"/>/</xsl:if>css/</xsl:variable> |
|||
<xsl:variable name="jsDir"><xsl:if test="$resourceRoot != ''"><xsl:value-of select="$resourceRoot"/>/</xsl:if>js/</xsl:variable> |
|||
<xsl:variable name="imgDir"><xsl:if test="$resourceRoot != ''"><xsl:value-of select="$resourceRoot"/>/</xsl:if>img/</xsl:variable> |
|||
<xsl:variable name="attachmentBrokerUrl"></xsl:variable> |
|||
<xsl:variable name="condensed" select="0" /> |
|||
|
|||
<xsl:template match="/"> |
|||
<xsl:apply-templates select="/g:report" mode="html-document" /> |
|||
</xsl:template> |
|||
|
|||
<!-- Include the base HTML / XHTML report template --> |
|||
<xsl:include href="Gallio-Report.html+xhtml.xsl" /> |
|||
</xsl:stylesheet> |
|||
@ -0,0 +1,228 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|||
xmlns:msxsl="urn:schemas-microsoft-com:xslt" |
|||
xmlns:g="http://www.gallio.org/"> |
|||
|
|||
<xsl:output method="text" encoding="utf-8"/> |
|||
|
|||
<xsl:param name="resourceRoot" select="''" /> |
|||
|
|||
<xsl:template match="/"> |
|||
<xsl:apply-templates select="/g:report" /> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="g:report"> |
|||
<xsl:apply-templates select="." mode="results"/> |
|||
<xsl:apply-templates select="." mode="annotations" /> |
|||
<xsl:apply-templates select="." mode="log" /> |
|||
</xsl:template> |
|||
|
|||
<!-- Results --> |
|||
|
|||
<xsl:template match="g:report" mode="results"> |
|||
<xsl:text>* Results: </xsl:text> |
|||
<xsl:call-template name="format-statistics"> |
|||
<xsl:with-param name="statistics" select="g:testPackageRun/g:statistics" /> |
|||
</xsl:call-template> |
|||
<xsl:text>

</xsl:text> |
|||
|
|||
<xsl:variable name="testCases" select="g:testPackageRun/g:testStepRun/descendant-or-self::g:testStepRun[g:testStep/@isTestCase='true']" /> |
|||
|
|||
<xsl:variable name="passed" select="$testCases[g:result/g:outcome/@status='passed']" /> |
|||
<xsl:variable name="failed" select="$testCases[g:result/g:outcome/@status='failed']" /> |
|||
<xsl:variable name="inconclusive" select="$testCases[g:result/g:outcome/@status='inconclusive']" /> |
|||
<xsl:variable name="skipped" select="$testCases[g:result/g:outcome/@status='skipped']" /> |
|||
|
|||
<xsl:if test="$show-failed-tests"> |
|||
<xsl:apply-templates select="$failed" mode="results" /> |
|||
</xsl:if> |
|||
|
|||
<xsl:if test="$show-inconclusive-tests"> |
|||
<xsl:apply-templates select="$inconclusive" mode="results"/> |
|||
</xsl:if> |
|||
|
|||
<xsl:if test="$show-passed-tests"> |
|||
<xsl:apply-templates select="$passed" mode="results"/> |
|||
</xsl:if> |
|||
|
|||
<xsl:if test="$show-skipped-tests"> |
|||
<xsl:apply-templates select="$skipped" mode="results"/> |
|||
</xsl:if> |
|||
|
|||
<xsl:text>
</xsl:text> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="g:testStepRun" mode="results"> |
|||
<xsl:text>[</xsl:text> |
|||
<xsl:choose> |
|||
<xsl:when test="g:result/g:outcome/@category"> |
|||
<xsl:value-of select="g:result/g:outcome/@category"/> |
|||
</xsl:when> |
|||
<xsl:otherwise> |
|||
<xsl:value-of select="g:result/g:outcome/@status"/> |
|||
</xsl:otherwise> |
|||
</xsl:choose> |
|||
<xsl:text>] </xsl:text> |
|||
|
|||
<xsl:variable name="kind" select="g:testStep/g:metadata/g:entry[@key='TestKind']/g:value" /> |
|||
<xsl:if test="$kind"> |
|||
<xsl:value-of select="$kind"/> |
|||
<xsl:text> </xsl:text> |
|||
</xsl:if> |
|||
|
|||
<xsl:value-of select="g:testStep/@fullName" /> |
|||
<xsl:text>
</xsl:text> |
|||
<xsl:apply-templates select="g:testLog" mode="results"/> |
|||
<xsl:text>
</xsl:text> |
|||
|
|||
<xsl:apply-templates select="g:children/g:testStepRun" mode="results"/> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="g:testLog" mode="results"> |
|||
<xsl:apply-templates select="g:streams/g:stream/g:body"/> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="g:body"> |
|||
<xsl:apply-templates select="g:contents" mode="block" /> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="g:contents" mode="block"> |
|||
<xsl:variable name="text"> |
|||
<xsl:apply-templates select="." mode="inline" /> |
|||
</xsl:variable> |
|||
|
|||
<xsl:call-template name="indent"> |
|||
<xsl:with-param name="text" select="$text"/> |
|||
</xsl:call-template> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="g:contents" mode="inline"> |
|||
<xsl:apply-templates select="child::node()[self::g:text or self::g:section or self::g:embed or self::g:marker]" /> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="g:text"> |
|||
<xsl:value-of select="text()"/> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="g:section"> |
|||
<xsl:text>
</xsl:text> |
|||
<xsl:value-of select="@name" /> |
|||
<xsl:text>
</xsl:text> |
|||
<xsl:apply-templates select="g:contents" mode="block" /> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="g:marker"> |
|||
<xsl:apply-templates select="g:contents" mode="inline" /> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="g:embed"> |
|||
<xsl:text>
[Attachment: </xsl:text> |
|||
<xsl:value-of select="@attachmentName"/> |
|||
<xsl:text>]
</xsl:text> |
|||
</xsl:template> |
|||
|
|||
<!-- Annotations --> |
|||
|
|||
<xsl:template match="g:report" mode="annotations"> |
|||
<xsl:variable name="annotations" select="g:testModel/g:annotations/g:annotation" /> |
|||
|
|||
<xsl:if test="$annotations"> |
|||
<xsl:text>* Annotations:

</xsl:text> |
|||
<xsl:apply-templates select="$annotations[@type='error']"/> |
|||
<xsl:apply-templates select="$annotations[@type='warning']"/> |
|||
<xsl:apply-templates select="$annotations[@type='info']"/> |
|||
<xsl:text>
</xsl:text> |
|||
</xsl:if> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="g:annotation"> |
|||
<xsl:call-template name="indent"> |
|||
<xsl:with-param name="text"> |
|||
<xsl:text>[</xsl:text> |
|||
<xsl:value-of select="@type"/> |
|||
<xsl:text>] </xsl:text> |
|||
<xsl:value-of select="@message"/> |
|||
</xsl:with-param> |
|||
<xsl:with-param name="firstLinePrefix" select="''" /> |
|||
</xsl:call-template> |
|||
|
|||
<xsl:if test="g:codeLocation/@path"> |
|||
<xsl:call-template name="indent"> |
|||
<xsl:with-param name="text"> |
|||
<xsl:text>Location: </xsl:text> |
|||
<xsl:call-template name="format-code-location"> |
|||
<xsl:with-param name="codeLocation" select="g:codeLocation" /> |
|||
</xsl:call-template> |
|||
</xsl:with-param> |
|||
<xsl:with-param name="secondLinePrefix" select="' '" /> |
|||
</xsl:call-template> |
|||
</xsl:if> |
|||
|
|||
<xsl:if test="g:codeReference/@assembly"> |
|||
<xsl:call-template name="indent"> |
|||
<xsl:with-param name="text"> |
|||
<xsl:text>Reference: </xsl:text> |
|||
<xsl:call-template name="format-code-reference"> |
|||
<xsl:with-param name="codeReference" select="g:codeReference" /> |
|||
</xsl:call-template> |
|||
</xsl:with-param> |
|||
<xsl:with-param name="secondLinePrefix" select="' '" /> |
|||
</xsl:call-template> |
|||
</xsl:if> |
|||
|
|||
<xsl:if test="@details"> |
|||
<xsl:call-template name="indent"> |
|||
<xsl:with-param name="text"> |
|||
<xsl:text>Details: </xsl:text> |
|||
<xsl:value-of select="@details"/> |
|||
</xsl:with-param> |
|||
<xsl:with-param name="secondLinePrefix" select="' '" /> |
|||
</xsl:call-template> |
|||
</xsl:if> |
|||
|
|||
<xsl:text>
</xsl:text> |
|||
</xsl:template> |
|||
|
|||
<!-- Log --> |
|||
|
|||
<xsl:template match="g:report" mode="log"> |
|||
<xsl:variable name="logEntries" select="g:logEntries/g:logEntry[@severity != 'debug']"/> |
|||
|
|||
<xsl:if test="$logEntries"> |
|||
<xsl:text>* Diagnostic Log:

</xsl:text> |
|||
<xsl:apply-templates select="$logEntries"/> |
|||
<xsl:text>
</xsl:text> |
|||
</xsl:if> |
|||
</xsl:template> |
|||
|
|||
<xsl:template match="g:logEntry"> |
|||
<xsl:call-template name="indent"> |
|||
<xsl:with-param name="text"> |
|||
<xsl:text>[</xsl:text> |
|||
<xsl:value-of select="@severity"/> |
|||
<xsl:text>] </xsl:text> |
|||
<xsl:value-of select="@message"/> |
|||
</xsl:with-param> |
|||
<xsl:with-param name="firstLinePrefix" select="''" /> |
|||
</xsl:call-template> |
|||
|
|||
<xsl:if test="@details"> |
|||
<xsl:call-template name="indent"> |
|||
<xsl:with-param name="text"> |
|||
<xsl:value-of select="@details"/> |
|||
</xsl:with-param> |
|||
<xsl:with-param name="secondLinePrefix" select="' '" /> |
|||
</xsl:call-template> |
|||
</xsl:if> |
|||
|
|||
<xsl:text>
</xsl:text> |
|||
</xsl:template> |
|||
|
|||
<!-- --> |
|||
|
|||
<xsl:template match="*"> |
|||
</xsl:template> |
|||
|
|||
<!-- Include the common report template --> |
|||
<xsl:include href="Gallio-Report.common.xsl" /> |
|||
</xsl:stylesheet> |
|||
@ -0,0 +1,12 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|||
xmlns:msxsl="urn:schemas-microsoft-com:xslt" |
|||
xmlns:g="http://www.gallio.org/"> |
|||
|
|||
<xsl:param name="show-passed-tests" select="false()" /> |
|||
<xsl:param name="show-failed-tests" select="true()" /> |
|||
<xsl:param name="show-inconclusive-tests" select="true()" /> |
|||
<xsl:param name="show-skipped-tests" select="true()" /> |
|||
|
|||
<xsl:include href="Gallio-Report.txt-common.xsl" /> |
|||
</xsl:stylesheet> |
|||
@ -0,0 +1,12 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|||
xmlns:msxsl="urn:schemas-microsoft-com:xslt" |
|||
xmlns:g="http://www.gallio.org/"> |
|||
|
|||
<xsl:param name="show-passed-tests" select="true()" /> |
|||
<xsl:param name="show-failed-tests" select="true()" /> |
|||
<xsl:param name="show-inconclusive-tests" select="true()" /> |
|||
<xsl:param name="show-skipped-tests" select="true()" /> |
|||
|
|||
<xsl:include href="Gallio-Report.txt-common.xsl" /> |
|||
</xsl:stylesheet> |
|||
@ -0,0 +1,22 @@ |
|||
<?xml version="1.0" encoding="iso-8859-1"?> |
|||
<xsl:stylesheet version="1.0" |
|||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|||
xmlns:g="http://www.gallio.org/" |
|||
xmlns="http://www.w3.org/1999/xhtml"> |
|||
<xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" |
|||
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" indent="no" encoding="utf-8" /> |
|||
<xsl:param name="resourceRoot" select="''" /> |
|||
|
|||
<xsl:variable name="cssDir"><xsl:if test="$resourceRoot != ''"><xsl:value-of select="$resourceRoot"/>/</xsl:if>css/</xsl:variable> |
|||
<xsl:variable name="jsDir"><xsl:if test="$resourceRoot != ''"><xsl:value-of select="$resourceRoot"/>/</xsl:if>js/</xsl:variable> |
|||
<xsl:variable name="imgDir"><xsl:if test="$resourceRoot != ''"><xsl:value-of select="$resourceRoot"/>/</xsl:if>img/</xsl:variable> |
|||
<xsl:variable name="attachmentBrokerUrl"></xsl:variable> |
|||
<xsl:variable name="condensed" select="1" /> |
|||
|
|||
<xsl:template match="/"> |
|||
<xsl:apply-templates select="/g:report" mode="xhtml-document" /> |
|||
</xsl:template> |
|||
|
|||
<!-- Include the base HTML / XHTML report template --> |
|||
<xsl:include href="Gallio-Report.html+xhtml.xsl" /> |
|||
</xsl:stylesheet> |
|||
@ -0,0 +1,22 @@ |
|||
<?xml version="1.0" encoding="iso-8859-1"?> |
|||
<xsl:stylesheet version="1.0" |
|||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|||
xmlns:g="http://www.gallio.org/" |
|||
xmlns="http://www.w3.org/1999/xhtml"> |
|||
<xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" |
|||
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" indent="no" encoding="utf-8" /> |
|||
<xsl:param name="resourceRoot" select="''" /> |
|||
|
|||
<xsl:variable name="cssDir"><xsl:if test="$resourceRoot != ''"><xsl:value-of select="$resourceRoot"/>/</xsl:if>css/</xsl:variable> |
|||
<xsl:variable name="jsDir"><xsl:if test="$resourceRoot != ''"><xsl:value-of select="$resourceRoot"/>/</xsl:if>js/</xsl:variable> |
|||
<xsl:variable name="imgDir"><xsl:if test="$resourceRoot != ''"><xsl:value-of select="$resourceRoot"/>/</xsl:if>img/</xsl:variable> |
|||
<xsl:variable name="attachmentBrokerUrl"></xsl:variable> |
|||
<xsl:variable name="condensed" select="0" /> |
|||
|
|||
<xsl:template match="/"> |
|||
<xsl:apply-templates select="/g:report" mode="xhtml-document" /> |
|||
</xsl:template> |
|||
|
|||
<!-- Include the base HTML / XHTML report template --> |
|||
<xsl:include href="Gallio-Report.html+xhtml.xsl" /> |
|||
</xsl:stylesheet> |
|||