1<?xml version="1.0" encoding="ISO-8859-1"?> 2<!DOCTYPE xsl:stylesheet [<!ENTITY nbsp " ">]> 3 4<!-- 5 ++ Automated Testing Framework (atf) 6 ++ 7 ++ Copyright (c) 2007 The NetBSD Foundation, Inc. 8 ++ All rights reserved. 9 ++ 10 ++ Redistribution and use in source and binary forms, with or without 11 ++ modification, are permitted provided that the following conditions 12 ++ are met: 13 ++ 1. Redistributions of source code must retain the above copyright 14 ++ notice, this list of conditions and the following disclaimer. 15 ++ 2. Redistributions in binary form must reproduce the above copyright 16 ++ notice, this list of conditions and the following disclaimer in the 17 ++ documentation and/or other materials provided with the distribution. 18 ++ 19 ++ THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 20 ++ CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 21 ++ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 22 ++ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 23 ++ IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 24 ++ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 ++ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 26 ++ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 ++ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 28 ++ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29 ++ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 30 ++ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 --> 32 33<xsl:stylesheet version="1.0" 34 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 35 36 <!-- Parameters that can be overriden by the user. --> 37 <xsl:param name="global.css">tests-results.css</xsl:param> 38 <xsl:param name="global.title">ATF Tests Results</xsl:param> 39 40 <xsl:variable name="ntps" 41 select="count(tests-results/tp)" /> 42 <xsl:variable name="ntps-failed" 43 select="count(tests-results/tp/failed)" /> 44 <xsl:variable name="ntcs" 45 select="count(tests-results/tp/tc)" /> 46 <xsl:variable name="ntcs-passed" 47 select="count(tests-results/tp/tc/passed)" /> 48 <xsl:variable name="ntcs-failed" 49 select="count(tests-results/tp/tc/failed)" /> 50 <xsl:variable name="ntcs-skipped" 51 select="count(tests-results/tp/tc/skipped)" /> 52 <xsl:variable name="ntcs-xfail" 53 select="count(tests-results/tp/tc/expected_death) + 54 count(tests-results/tp/tc/expected_exit) + 55 count(tests-results/tp/tc/expected_failure) + 56 count(tests-results/tp/tc/expected_signal) + 57 count(tests-results/tp/tc/expected_timeout)" /> 58 59 <xsl:template match="/"> 60 <xsl:copy> 61 <xsl:apply-templates select="@*|node()" /> 62 </xsl:copy> 63 </xsl:template> 64 65 <xsl:template match="tests-results"> 66 <html xmlns="http://www.w3.org/1999/xhtml"> 67 <head> 68 <meta http-equiv="Content-Type" 69 content="text/html; charset=iso-8859-1" /> 70 <link rel="stylesheet" type="text/css" href="{$global.css}" /> 71 72 <title><xsl:value-of select="$global.title" /></title> 73 </head> 74 75 <body> 76 <h1><xsl:value-of select="$global.title" /></h1> 77 78 <xsl:call-template name="info-top" /> 79 <xsl:call-template name="tcs-summary" /> 80 <xsl:if test="$ntcs-failed > 0"> 81 <xsl:call-template name="failed-tcs-summary" /> 82 </xsl:if> 83 <xsl:if test="$ntcs-xfail > 0"> 84 <xsl:call-template name="xfail-tcs-summary" /> 85 </xsl:if> 86 <xsl:if test="$ntcs-skipped > 0"> 87 <xsl:call-template name="skipped-tcs-summary" /> 88 </xsl:if> 89 <xsl:if test="$ntps-failed > 0"> 90 <xsl:call-template name="failed-tps-summary" /> 91 </xsl:if> 92 <xsl:call-template name="info-bottom" /> 93 94 <xsl:apply-templates select="tp" mode="details" /> 95 </body> 96 </html> 97 </xsl:template> 98 99 <xsl:template name="info-top"> 100 <h2>Execution summary</h2> 101 102 <table class="summary"> 103 <tr> 104 <th class="nobr"><p>Item</p></th> 105 <th class="nobr"><p>Value</p></th> 106 </tr> 107 108 <tr class="group"> 109 <td colspan="2"><p>ATF</p></td> 110 </tr> 111 <tr class="entry"> 112 <td><p>Version</p></td> 113 <td><p><xsl:apply-templates 114 select="info[@class = 'atf.version']" /></p></td> 115 </tr> 116 117 <tr class="group"> 118 <td colspan="2"><p>Timings</p></td> 119 </tr> 120 <tr class="entry"> 121 <td><p>Start time of tests</p></td> 122 <td><p><xsl:apply-templates 123 select="info[@class = 'time.start']" /></p></td> 124 </tr> 125 <tr class="entry"> 126 <td><p>End time of tests</p></td> 127 <td><p><xsl:apply-templates 128 select="info[@class = 'time.end']" /></p></td> 129 </tr> 130 131 <tr class="group"> 132 <td colspan="2"><p>System information</p></td> 133 </tr> 134 <tr class="entry"> 135 <td><p>Host name</p></td> 136 <td><p><xsl:apply-templates 137 select="info[@class = 'uname.nodename']" /></p></td> 138 </tr> 139 <tr class="entry"> 140 <td><p>Operating system</p></td> 141 <td><p><xsl:apply-templates 142 select="info[@class = 'uname.sysname']" /></p></td> 143 </tr> 144 <tr class="entry"> 145 <td><p>Operating system release</p></td> 146 <td><p><xsl:apply-templates 147 select="info[@class = 'uname.release']" /></p></td> 148 </tr> 149 <tr class="entry"> 150 <td><p>Operating system version</p></td> 151 <td><p><xsl:apply-templates 152 select="info[@class = 'uname.version']" /></p></td> 153 </tr> 154 <tr class="entry"> 155 <td><p>Platform</p></td> 156 <td><p><xsl:apply-templates 157 select="info[@class = 'uname.machine']" /></p></td> 158 </tr> 159 160 <tr class="group"> 161 <td colspan="2"><p>Tests results</p></td> 162 </tr> 163 <tr class="entry"> 164 <td><p>Root</p></td> 165 <td><p><xsl:value-of 166 select="info[@class = 'tests.root']" /></p></td> 167 </tr> 168 <tr class="entry"> 169 <td><p>Test programs</p></td> 170 <td class="numeric"><p><xsl:value-of select="$ntps" /></p></td> 171 </tr> 172 <tr class="entry"> 173 <xsl:choose> 174 <xsl:when test="$ntps-failed > 0"> 175 <td><p><a href="#failed-tps-summary">Bogus test 176 programs</a></p></td> 177 <td class="numeric-error"> 178 <p><xsl:value-of select="$ntps-failed" /></p> 179 </td> 180 </xsl:when> 181 <xsl:otherwise> 182 <td><p>Bogus test programs</p></td> 183 <td class="numeric"> 184 <p><xsl:value-of select="$ntps-failed" /></p> 185 </td> 186 </xsl:otherwise> 187 </xsl:choose> 188 </tr> 189 <tr class="entry"> 190 <td><p>Test cases</p></td> 191 <td class="numeric"><p><xsl:value-of select="$ntcs" /></p></td> 192 </tr> 193 <tr class="entry"> 194 <td><p>Passed test cases</p></td> 195 <td class="numeric"><p><xsl:value-of select="$ntcs-passed" /></p></td> 196 </tr> 197 <tr class="entry"> 198 <xsl:choose> 199 <xsl:when test="$ntcs-failed > 0"> 200 <td><p><a href="#failed-tcs-summary">Failed test 201 cases</a></p></td> 202 <td class="numeric-error"> 203 <p><xsl:value-of select="$ntcs-failed" /></p> 204 </td> 205 </xsl:when> 206 <xsl:otherwise> 207 <td><p>Failed test cases</p></td> 208 <td class="numeric"> 209 <p><xsl:value-of select="$ntcs-failed" /></p> 210 </td> 211 </xsl:otherwise> 212 </xsl:choose> 213 </tr> 214 <tr class="entry"> 215 <xsl:choose> 216 <xsl:when test="$ntcs-xfail > 0"> 217 <td><p><a href="#xfail-tcs-summary">Expected 218 failures</a></p></td> 219 <td class="numeric-warning"> 220 <p><xsl:value-of select="$ntcs-xfail" /></p> 221 </td> 222 </xsl:when> 223 <xsl:otherwise> 224 <td><p>Expected failures</p></td> 225 <td class="numeric"> 226 <p><xsl:value-of select="$ntcs-xfail" /></p> 227 </td> 228 </xsl:otherwise> 229 </xsl:choose> 230 </tr> 231 <tr class="entry"> 232 <xsl:choose> 233 <xsl:when test="$ntcs-skipped > 0"> 234 <td><p><a href="#skipped-tcs-summary">Skipped test 235 cases</a></p></td> 236 <td class="numeric-warning"> 237 <p><xsl:value-of select="$ntcs-skipped" /></p> 238 </td> 239 </xsl:when> 240 <xsl:otherwise> 241 <td><p>Skipped test cases</p></td> 242 <td class="numeric"> 243 <p><xsl:value-of select="$ntcs-skipped" /></p> 244 </td> 245 </xsl:otherwise> 246 </xsl:choose> 247 </tr> 248 249 <tr class="group"> 250 <td colspan="2"><p><a href="#execution-details">See more execution 251 details</a></p></td> 252 </tr> 253 </table> 254 </xsl:template> 255 256 <xsl:template name="info-bottom"> 257 <a name="execution-details" /> 258 <h2 id="execution-details">Execution details</h2> 259 260 <h3>Environment variables</h3> 261 262 <ul> 263 <xsl:apply-templates select="info[@class = 'env']"> 264 <xsl:sort /> 265 </xsl:apply-templates> 266 </ul> 267 </xsl:template> 268 269 <xsl:template match="info[@class = 'env']"> 270 <li> 271 <p><xsl:apply-templates /></p> 272 </li> 273 </xsl:template> 274 275 <xsl:template name="tcs-summary"> 276 <h2>Test cases summary</h2> 277 278 <table class="tcs-summary"> 279 <tr> 280 <th class="nobr"><p>Test case</p></th> 281 <th class="nobr"><p>Result</p></th> 282 <th class="nobr"><p>Reason</p></th> 283 <th class="nobr"><p>Duration</p></th> 284 </tr> 285 <xsl:apply-templates select="tp" mode="summary"> 286 <xsl:with-param name="which">all</xsl:with-param> 287 </xsl:apply-templates> 288 </table> 289 </xsl:template> 290 291 <xsl:template name="xfail-tcs-summary"> 292 <a name="xfail-tcs-summary" /> 293 <h2 id="xfail-tcs-summary">Expected failures summary</h2> 294 295 <table class="tcs-summary"> 296 <tr> 297 <th class="nobr"><p>Test case</p></th> 298 <th class="nobr"><p>Result</p></th> 299 <th class="nobr"><p>Reason</p></th> 300 <th class="nobr"><p>Duration</p></th> 301 </tr> 302 <xsl:apply-templates select="tp" mode="summary"> 303 <xsl:with-param name="which">xfail</xsl:with-param> 304 </xsl:apply-templates> 305 </table> 306 </xsl:template> 307 308 <xsl:template name="failed-tcs-summary"> 309 <a name="failed-tcs-summary" /> 310 <h2 id="failed-tcs-summary">Failed test cases summary</h2> 311 312 <table class="tcs-summary"> 313 <tr> 314 <th class="nobr"><p>Test case</p></th> 315 <th class="nobr"><p>Result</p></th> 316 <th class="nobr"><p>Reason</p></th> 317 <th class="nobr"><p>Duration</p></th> 318 </tr> 319 <xsl:apply-templates select="tp" mode="summary"> 320 <xsl:with-param name="which">failed</xsl:with-param> 321 </xsl:apply-templates> 322 </table> 323 </xsl:template> 324 325 <xsl:template name="failed-tps-summary"> 326 <a name="failed-tps-summary" /> 327 <h2 id="failed-tps-summary">Bogus test programs summary</h2> 328 329 <table class="tcs-summary"> 330 <tr> 331 <th class="nobr">Test program</th> 332 </tr> 333 <xsl:apply-templates select="tp" mode="summary"> 334 <xsl:with-param name="which">bogus</xsl:with-param> 335 </xsl:apply-templates> 336 </table> 337 </xsl:template> 338 339 <xsl:template name="skipped-tcs-summary"> 340 <a name="skipped-tcs-summary" /> 341 <h2 id="skipped-tcs-summary">Skipped test cases summary</h2> 342 343 <table class="tcs-summary"> 344 <tr> 345 <th class="nobr"><p>Test case</p></th> 346 <th class="nobr"><p>Result</p></th> 347 <th class="nobr"><p>Reason</p></th> 348 <th class="nobr"><p>Duration</p></th> 349 </tr> 350 <xsl:apply-templates select="tp" mode="summary"> 351 <xsl:with-param name="which">skipped</xsl:with-param> 352 </xsl:apply-templates> 353 </table> 354 </xsl:template> 355 356 <xsl:template match="tp" mode="summary"> 357 <xsl:param name="which" /> 358 359 <xsl:variable name="chosen"> 360 <xsl:choose> 361 <xsl:when test="$which = 'bogus' and failed">yes</xsl:when> 362 <xsl:when test="$which = 'passed' and tc/passed">yes</xsl:when> 363 <xsl:when test="$which = 'failed' and tc/failed">yes</xsl:when> 364 <xsl:when test="$which = 'xfail' and 365 tc/expected_death">yes</xsl:when> 366 <xsl:when test="$which = 'xfail' and 367 tc/expected_exit">yes</xsl:when> 368 <xsl:when test="$which = 'xfail' and 369 tc/expected_failure">yes</xsl:when> 370 <xsl:when test="$which = 'xfail' and 371 tc/expected_signal">yes</xsl:when> 372 <xsl:when test="$which = 'xfail' and 373 tc/expected_timeout">yes</xsl:when> 374 <xsl:when test="$which = 'skipped' and tc/skipped">yes</xsl:when> 375 <xsl:when test="$which = 'all'">yes</xsl:when> 376 <xsl:otherwise>no</xsl:otherwise> 377 </xsl:choose> 378 </xsl:variable> 379 380 <xsl:if test="$chosen = 'yes'"> 381 <tr> 382 <td class="tp-id" colspan="3"> 383 <p><xsl:value-of select="@id" /></p> 384 </td> 385 <td class="tp-numeric"> 386 <p><xsl:value-of select="tp-time" />s</p> 387 </td> 388 </tr> 389 <xsl:if test="$which != 'bogus'"> 390 <xsl:apply-templates select="tc" mode="summary"> 391 <xsl:with-param name="which" select="$which" /> 392 </xsl:apply-templates> 393 </xsl:if> 394 </xsl:if> 395 </xsl:template> 396 397 <xsl:template match="tc" mode="summary"> 398 <xsl:param name="which" /> 399 400 <xsl:variable name="full-id" 401 select="concat(translate(../@id, '/', '_'), '_', @id)" /> 402 403 <xsl:variable name="chosen"> 404 <xsl:choose> 405 <xsl:when test="$which = 'passed' and ./passed">yes</xsl:when> 406 <xsl:when test="$which = 'failed' and ./failed">yes</xsl:when> 407 <xsl:when test="$which = 'xfail' and 408 ./expected_death">yes</xsl:when> 409 <xsl:when test="$which = 'xfail' and 410 ./expected_exit">yes</xsl:when> 411 <xsl:when test="$which = 'xfail' and 412 ./expected_failure">yes</xsl:when> 413 <xsl:when test="$which = 'xfail' and 414 ./expected_signal">yes</xsl:when> 415 <xsl:when test="$which = 'xfail' and 416 ./expected_timeout">yes</xsl:when> 417 <xsl:when test="$which = 'skipped' and ./skipped">yes</xsl:when> 418 <xsl:when test="$which = 'all'">yes</xsl:when> 419 <xsl:otherwise>no</xsl:otherwise> 420 </xsl:choose> 421 </xsl:variable> 422 423 <xsl:if test="$chosen = 'yes'"> 424 <tr> 425 <td class="tc-id"> 426 <xsl:choose> 427 <xsl:when test="expected_death|expected_exit|expected_failure| 428 expected_signal|expected_timeout|failed|skipped"> 429 <p><a href="#{$full-id}"><xsl:value-of select="@id" /></a></p> 430 </xsl:when> 431 <xsl:otherwise> 432 <p><xsl:value-of select="@id" /></p> 433 </xsl:otherwise> 434 </xsl:choose> 435 </td> 436 <xsl:apply-templates select="expected_death|expected_exit| 437 expected_failure|expected_timeout| 438 expected_signal|failed|passed| 439 skipped" mode="tc" /> 440 <td class="numeric"> 441 <p><xsl:value-of select="tc-time" />s</p> 442 </td> 443 </tr> 444 </xsl:if> 445 </xsl:template> 446 447 <xsl:template match="passed" mode="tc"> 448 <td class="tcr-passed"><p class="nobr">Passed</p></td> 449 <td class="tcr-reason"><p>N/A</p></td> 450 </xsl:template> 451 452 <xsl:template match="expected_death" mode="tc"> 453 <td class="tcr-xfail"><p class="nobr">Expected death</p></td> 454 <td class="tcr-reason"><p><xsl:apply-templates /></p></td> 455 </xsl:template> 456 457 <xsl:template match="expected_exit" mode="tc"> 458 <td class="tcr-xfail"><p class="nobr">Expected exit</p></td> 459 <td class="tcr-reason"><p><xsl:apply-templates /></p></td> 460 </xsl:template> 461 462 <xsl:template match="expected_failure" mode="tc"> 463 <td class="tcr-xfail"><p class="nobr">Expected failure</p></td> 464 <td class="tcr-reason"><p><xsl:apply-templates /></p></td> 465 </xsl:template> 466 467 <xsl:template match="expected_timeout" mode="tc"> 468 <td class="tcr-xfail"><p class="nobr">Expected timeout</p></td> 469 <td class="tcr-reason"><p><xsl:apply-templates /></p></td> 470 </xsl:template> 471 472 <xsl:template match="expected_signal" mode="tc"> 473 <td class="tcr-xfail"><p class="nobr">Expected signal</p></td> 474 <td class="tcr-reason"><p><xsl:apply-templates /></p></td> 475 </xsl:template> 476 477 <xsl:template match="failed" mode="tc"> 478 <td class="tcr-failed"><p class="nobr">Failed</p></td> 479 <td class="tcr-reason"><p><xsl:apply-templates /></p></td> 480 </xsl:template> 481 482 <xsl:template match="skipped" mode="tc"> 483 <td class="tcr-skipped"><p class="nobr">Skipped</p></td> 484 <td class="tcr-reason"><p><xsl:apply-templates /></p></td> 485 </xsl:template> 486 487 <xsl:template match="tp" mode="details"> 488 <xsl:apply-templates select="tc[expected_death|expected_exit| 489 expected_failure|expected_signal| 490 expected_timeout|failed|skipped]" 491 mode="details" /> 492 </xsl:template> 493 494 <xsl:template match="failed" mode="details"> 495 <p class="term"><strong>FAILED</strong>: <xsl:apply-templates /></p> 496 </xsl:template> 497 498 <xsl:template match="expected_death|expected_exit|expected_failure| 499 expected_signal|expected_timeout" mode="details"> 500 <p class="term"><strong>XFAIL</strong>: <xsl:apply-templates /></p> 501 </xsl:template> 502 503 <xsl:template match="skipped" mode="details"> 504 <p class="term"><strong>SKIPPED</strong>: <xsl:apply-templates /></p> 505 </xsl:template> 506 507 <xsl:template match="tc" mode="details"> 508 <xsl:variable name="full-id" 509 select="concat(translate(../@id, '/', '_'), '_', @id)" /> 510 511 <a name="{$full-id}" /> 512 <h2 id="{$full-id}">Test case: 513 <xsl:value-of select="../@id" /><xsl:text>/</xsl:text> 514 <xsl:value-of select="@id" /></h2> 515 516 <xsl:if test="tc-time"> 517 <p class="details">Duration: 518 <xsl:apply-templates select="tc-time" mode="details" /></p> 519 </xsl:if> 520 521 <h3>Termination reason</h3> 522 <xsl:apply-templates select="expected_death|expected_exit|expected_failure| 523 expected_signal|expected_timeout| 524 failed|skipped" 525 mode="details" /> 526 527 <xsl:if test="so"> 528 <h3>Standard output stream</h3> 529 <pre class="so"><xsl:apply-templates select="so" mode="details" /></pre> 530 </xsl:if> 531 532 <xsl:if test="se"> 533 <h3>Standard error stream</h3> 534 <pre class="se"><xsl:apply-templates select="se" mode="details" /></pre> 535 </xsl:if> 536 </xsl:template> 537 538 <xsl:template match="tc-time" mode="details"> 539 <xsl:apply-templates /> seconds 540 </xsl:template> 541 542 <xsl:template match="so" mode="details"> 543 <xsl:apply-templates /> 544 <xsl:if test="position() != last()"> 545 <xsl:text> 546</xsl:text> 547 </xsl:if> 548 </xsl:template> 549 550 <xsl:template match="se" mode="details"> 551 <xsl:apply-templates /> 552 <xsl:if test="position() != last()"> 553 <xsl:text> 554</xsl:text> 555 </xsl:if> 556 </xsl:template> 557 558 <xsl:template match="@*|node()" priority="-1"> 559 <xsl:copy> 560 <xsl:apply-templates select="@*|node()" /> 561 </xsl:copy> 562 </xsl:template> 563 564</xsl:stylesheet> 565