<?xml version="1.0"?>
<!--
Copyright (C) 2015 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:func="com.google.gerrit" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="func" version="2.0">
  <xsl:output method="xml" omit-xml-declaration="no" indent="yes" encoding="UTF-8"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="/tests">
    <xsl:apply-templates/>
  </xsl:template>

  <xsl:template match="test">
    <xsl:variable name="filename" select="concat('TEST-', @name, '.xml')"/>
    <xsl:result-document href="{$filename}" method="xml">
      <xsl:variable name="testCount" select="count(testresult)"/>
      <xsl:variable name="nonEmptyStacks" select="count(testresult[stacktrace != ''])"/>
      <xsl:variable name="failures"
          select="count(testresult[contains(stacktrace, 'java.lang.AssertionError')])"/>
      <xsl:variable name="skipped"
          select="count(testresult[contains(stacktrace, 'org.junit.internal.AssumptionViolatedException')])"/>
      <xsl:variable name="errors" select="$nonEmptyStacks - $failures - $skipped"/>
      <testsuite failures="{$failures}" time="{func:toMS(@time)}" errors="{$errors}" skipped="{$skipped}"
          tests="{$testCount}" name="{@name}">
        <xsl:apply-templates/>
      </testsuite>
    </xsl:result-document>
  </xsl:template>

  <xsl:template match="testresult">
    <testcase time="{func:toMS(@time)}" classname="{../@name}" name="{@name}">
      <xsl:apply-templates/>
    </testcase>
  </xsl:template>

  <xsl:template match="message"/>

  <xsl:template match="stacktrace[contains(.,'org.junit.internal.AssumptionViolatedException')]">
    <skipped/>
  </xsl:template>

  <xsl:template match="stacktrace[. != '' and not(contains(.,'org.junit.internal.AssumptionViolatedException'))]">
    <failure message="{../message}" type="{substring-before(., ':')}">
      <xsl:value-of select="."/>
    </failure>
  </xsl:template>

  <xsl:function name="func:toMS">
    <xsl:param name="sec" as="xs:decimal"/>
    <xsl:value-of select="$sec div 1000"/>
  </xsl:function>
</xsl:stylesheet>
