|
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> |
||||