<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2019-06-06 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20190606" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Sling Maven Plugin &#x2013; Surefire Report</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.6.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
      <script type="text/javascript" src="./js/apache-maven-fluido-1.6.min.js"></script>
      </head>
    <body class="topBarDisabled">
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><div id="bannerLeft"><h2>Apache Sling Maven Plugin</h2>
</div>
</div>
        <div class="pull-right"></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2019-06-06<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 2.4.2</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
<ul class="nav nav-list">
          <li class="nav-header">Overview</li>
    <li><a href="index.html" title="Introduction"><span class="none"></span>Introduction</a>  </li>
    <li><a href="plugin-info.html" title="Goals"><span class="none"></span>Goals</a>  </li>
          <li class="nav-header">Project Documentation</li>
    <li><a href="project-info.html" title="Project Information"><span class="icon-chevron-right"></span>Project Information</a>  </li>
    <li><a href="project-reports.html" title="Project Reports"><span class="icon-chevron-down"></span>Project Reports</a>
      <ul class="nav nav-list">
    <li class="active"><a href="#"><span class="none"></span>Surefire Report</a>
  </li>
    <li><a href="jira-report.html" title="JIRA Report"><span class="none"></span>JIRA Report</a>  </li>
    <li><a href="plugin-info.html" title="Plugin Documentation"><span class="none"></span>Plugin Documentation</a>  </li>
      </ul>
  </li>
  </ul>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
  <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
              </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >
<script type="text/javascript">
//<![CDATA[
function toggleDisplay(elementId) {
 var elm = document.getElementById(elementId + 'error');
 if (elm && typeof elm.style != "undefined") {
 if (elm.style.display == "none") {
 elm.style.display = "";
 document.getElementById(elementId + 'off').style.display = "none";
 document.getElementById(elementId + 'on').style.display = "inline";
 } else if (elm.style.display == "") { elm.style.display = "none";
 document.getElementById(elementId + 'off').style.display = "inline";
 document.getElementById(elementId + 'on').style.display = "none";
 } 
 } 
 }
//]]>
</script>
<div class="section">
<h2><a name="Surefire_Report"></a>Surefire Report</h2></div>
<div class="section">
<h2><a name="Summary"></a>Summary</h2><a name="Summary"></a>
<p>[<a href="#Summary">Summary</a>] [<a href="#Package_List">Package List</a>] [<a href="#Test_Cases">Test Cases</a>]</p><br />
<table border="1" class="table table-striped">
<tr class="a">
<th>Tests</th>
<th>Errors </th>
<th>Failures</th>
<th>Skipped</th>
<th>Success Rate</th>
<th>Time</th></tr>
<tr class="b">
<td>18</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>100%</td>
<td>0.117</td></tr></table><br />
<p>Note: failures are anticipated and checked for with assertions while errors are unanticipated.</p><br /></div>
<div class="section">
<h2><a name="Package_List"></a>Package List</h2><a name="Package_List"></a>
<p>[<a href="#Summary">Summary</a>] [<a href="#Package_List">Package List</a>] [<a href="#Test_Cases">Test Cases</a>]</p><br />
<table border="1" class="table table-striped">
<tr class="a">
<th>Package</th>
<th>Tests</th>
<th>Errors </th>
<th>Failures</th>
<th>Skipped</th>
<th>Success Rate</th>
<th>Time</th></tr>
<tr class="b">
<td><a href="#org.apache.sling.maven.bundlesupport.deploy.method">org.apache.sling.maven.bundlesupport.deploy.method</a></td>
<td>3</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>100%</td>
<td>0</td></tr>
<tr class="a">
<td><a href="#org.apache.sling.maven.bundlesupport">org.apache.sling.maven.bundlesupport</a></td>
<td>15</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>100%</td>
<td>0.117</td></tr></table><br />
<p>Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.</p>
<div class="section">
<h3><a name="org.apache.sling.maven.bundlesupport.deploy.method"></a>org.apache.sling.maven.bundlesupport.deploy.method</h3><a name="org.apache.sling.maven.bundlesupport.deploy.method"></a>
<table border="1" class="table table-striped">
<tr class="a">
<th></th>
<th>Class</th>
<th>Tests</th>
<th>Errors </th>
<th>Failures</th>
<th>Skipped</th>
<th>Success Rate</th>
<th>Time</th></tr>
<tr class="b">
<td><a href="#org.apache.sling.maven.bundlesupport.deploy.methodIntermediateUrisExtractorTest"><img src="images/icon_success_sml.gif" alt="" /></a></td>
<td><a href="#org.apache.sling.maven.bundlesupport.deploy.methodIntermediateUrisExtractorTest">IntermediateUrisExtractorTest</a></td>
<td>3</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>100%</td>
<td>0</td></tr></table></div>
<div class="section">
<h3><a name="org.apache.sling.maven.bundlesupport"></a>org.apache.sling.maven.bundlesupport</h3><a name="org.apache.sling.maven.bundlesupport"></a>
<table border="1" class="table table-striped">
<tr class="a">
<th></th>
<th>Class</th>
<th>Tests</th>
<th>Errors </th>
<th>Failures</th>
<th>Skipped</th>
<th>Success Rate</th>
<th>Time</th></tr>
<tr class="b">
<td><a href="#org.apache.sling.maven.bundlesupportBundlePrerequisiteTest"><img src="images/icon_success_sml.gif" alt="" /></a></td>
<td><a href="#org.apache.sling.maven.bundlesupportBundlePrerequisiteTest">BundlePrerequisiteTest</a></td>
<td>3</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>100%</td>
<td>0.045</td></tr>
<tr class="a">
<td><a href="#org.apache.sling.maven.bundlesupportJsonSupportTest"><img src="images/icon_success_sml.gif" alt="" /></a></td>
<td><a href="#org.apache.sling.maven.bundlesupportJsonSupportTest">JsonSupportTest</a></td>
<td>9</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>100%</td>
<td>0.066</td></tr>
<tr class="b">
<td><a href="#org.apache.sling.maven.bundlesupportValidationMojoTest"><img src="images/icon_success_sml.gif" alt="" /></a></td>
<td><a href="#org.apache.sling.maven.bundlesupportValidationMojoTest">ValidationMojoTest</a></td>
<td>3</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>100%</td>
<td>0.006</td></tr></table></div><br /></div>
<div class="section">
<h2><a name="Test_Cases"></a>Test Cases</h2><a name="Test_Cases"></a>
<p>[<a href="#Summary">Summary</a>] [<a href="#Package_List">Package List</a>] [<a href="#Test_Cases">Test Cases</a>]</p>
<div class="section">
<h3><a name="BundlePrerequisiteTest"></a>BundlePrerequisiteTest</h3><a name="org.apache.sling.maven.bundlesupportBundlePrerequisiteTest"></a>
<table border="1" class="table table-striped">
<tr class="a">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.BundlePrerequisiteTest.testGetOsgiVersion_ShortVersion"></a>testGetOsgiVersion_ShortVersion</td>
<td>0.006</td></tr>
<tr class="b">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.BundlePrerequisiteTest.testGetOsgiVersion"></a>testGetOsgiVersion</td>
<td>0.001</td></tr>
<tr class="a">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.BundlePrerequisiteTest.testGetOsgiVersion_SnapshotVersion"></a>testGetOsgiVersion_SnapshotVersion</td>
<td>0</td></tr></table></div>
<div class="section">
<h3><a name="IntermediateUrisExtractorTest"></a>IntermediateUrisExtractorTest</h3><a name="org.apache.sling.maven.bundlesupport.deploy.methodIntermediateUrisExtractorTest"></a>
<table border="1" class="table table-striped">
<tr class="a">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.deploy.method.IntermediateUrisExtractorTest.extractPaths_trailingSlash"></a>extractPaths_trailingSlash</td>
<td>0</td></tr>
<tr class="b">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.deploy.method.IntermediateUrisExtractorTest.extractPaths_empty"></a>extractPaths_empty</td>
<td>0</td></tr>
<tr class="a">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.deploy.method.IntermediateUrisExtractorTest.extractPaths"></a>extractPaths</td>
<td>0</td></tr></table></div>
<div class="section">
<h3><a name="JsonSupportTest"></a>JsonSupportTest</h3><a name="org.apache.sling.maven.bundlesupportJsonSupportTest"></a>
<table border="1" class="table table-striped">
<tr class="a">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.JsonSupportTest.testParseArray"></a>testParseArray</td>
<td>0.025</td></tr>
<tr class="b">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.JsonSupportTest.testParseObject"></a>testParseObject</td>
<td>0</td></tr>
<tr class="a">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.JsonSupportTest.testValidateJsonStructure_Invalid"></a>testValidateJsonStructure_Invalid</td>
<td>0</td></tr>
<tr class="b">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.JsonSupportTest.testAccumulate_NewValue"></a>testAccumulate_NewValue</td>
<td>0.004</td></tr>
<tr class="a">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.JsonSupportTest.testValidateJsonStructure"></a>testValidateJsonStructure</td>
<td>0.002</td></tr>
<tr class="b">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.JsonSupportTest.testValidateJsonStructure_InvalidQuoteTick"></a>testValidateJsonStructure_InvalidQuoteTick</td>
<td>0</td></tr>
<tr class="a">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.JsonSupportTest.testToJson"></a>testToJson</td>
<td>0.033</td></tr>
<tr class="b">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.JsonSupportTest.testAccumulate_ExistingArray"></a>testAccumulate_ExistingArray</td>
<td>0</td></tr>
<tr class="a">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.JsonSupportTest.testAccumulate_ExistingValue"></a>testAccumulate_ExistingValue</td>
<td>0.001</td></tr></table></div>
<div class="section">
<h3><a name="ValidationMojoTest"></a>ValidationMojoTest</h3><a name="org.apache.sling.maven.bundlesupportValidationMojoTest"></a>
<table border="1" class="table table-striped">
<tr class="a">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.ValidationMojoTest.testParseLineNumber"></a>testParseLineNumber</td>
<td>0.003</td></tr>
<tr class="b">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.ValidationMojoTest.testParseColumnNumber"></a>testParseColumnNumber</td>
<td>0</td></tr>
<tr class="a">
<td><img src="images/icon_success_sml.gif" alt="" /></td>
<td><a name="TC_org.apache.sling.maven.bundlesupport.ValidationMojoTest.testCleanupMessage"></a>testCleanupMessage</td>
<td>0.003</td></tr></table></div><br /></div>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2007&#x2013;2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>
