geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jdil...@apache.org
Subject svn commit: r505214 - in /geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild: config/projects/Geronimo_CTS/report/ config/projects/Geronimo_CTS/report/model/ config/projects/Geronimo_CTS/report/resources/ config/projects/Geronimo_CTS/repor...
Date Fri, 09 Feb 2007 08:38:37 GMT
Author: jdillon
Date: Fri Feb  9 00:38:34 2007
New Revision: 505214

URL: http://svn.apache.org/viewvc?view=rev&rev=505214
Log:
Use Velocity instead of Groovy for templates, its easier to manage
Hooked up new model bits, dropping the old

Added:
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/PageRenderer.groovy   (with props)
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/class-summary.vm   (with props)
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/iteration-detail.vm   (with props)
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/macros.vm   (with props)
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/package-summary.vm   (with props)
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/testcase-detail.vm   (with props)
Removed:
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/AllStats.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/Stats.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/StatsCollector.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/TestSuite.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/all-packages-frame.tmpl
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/class-summary.tmpl
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/iteration-detail.tmpl
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/iteration-overview.tmpl
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/iteration-packages-frame.tmpl
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/iterations-frame.tmpl
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/package-overview.tmpl
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/package-summary.tmpl
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/testcase-detail.tmpl
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/system/util/Template.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/system/util/TemplateEngine.groovy
Modified:
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/ReportGenerator.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/ClassModel.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/GroupModel.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/IterationModel.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/PackageModel.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/SuiteModel.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/TestCaseModel.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/TestModel.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/boilerplate/index.html
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/system/template/Template.groovy
    geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/system/template/velocity/TemplateEngine.groovy

Added: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/PageRenderer.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/PageRenderer.groovy?view=auto&rev=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/PageRenderer.groovy (added)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/PageRenderer.groovy Fri Feb  9 00:38:34 2007
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+//
+// $Id$
+//
+
+package gbuild.config.projects.Geronimo_CTS.report
+
+import gbuild.system.template.Template
+
+/**
+ * ???
+ */
+class PageRenderer
+{
+    private Template template
+    
+    private File file
+    
+    Map params
+    
+    def PageRenderer(Template template, File file) {
+        this.template = template
+        this.params = template.params
+        this.file = file
+        
+        // Install ourselves as render helper
+        this.params.helper = this
+    }
+    
+    def render() {
+        template.render(file)
+    }
+}
+

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/PageRenderer.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/PageRenderer.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/PageRenderer.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/ReportGenerator.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/ReportGenerator.groovy?view=diff&rev=505214&r1=505213&r2=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/ReportGenerator.groovy (original)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/ReportGenerator.groovy Fri Feb  9 00:38:34 2007
@@ -26,10 +26,13 @@
 import gbuild.system.LogSupport
 import gbuild.system.util.LazyProxy
 import gbuild.system.util.Sorting
-import gbuild.system.util.TemplateEngine
+
+import gbuild.system.template.velocity.TemplateEngine
 
 import org.apache.commons.lang.time.StopWatch
 
+import gbuild.config.projects.Geronimo_CTS.report.model.SuiteModel
+
 /**
  * Generates an HTML report for the collected TCK results.
  */
@@ -48,6 +51,20 @@
         this.targetDir = targetDir
         
         assert archives.size() > 0
+        
+        engine.libraries = [ 'macros.vm' ]
+    }
+    
+    private static final long MEGABYTES = 1024 * 1024
+    
+    private logMemoryUsage() {
+        def runtime = Runtime.runtime
+        
+        long used = (runtime.totalMemory() - runtime.freeMemory()) / MEGABYTES
+        long total = runtime.totalMemory() / MEGABYTES
+        long max = runtime.maxMemory() / MEGABYTES
+        
+        log.info "Memory usage: ${used}mb / ${total}mb (${max}mb)"
     }
     
     def loadProperties(file) {
@@ -72,7 +89,33 @@
     def makeSafeFilename(String filename) {
         assert filename
         
-        return filename.replace('.', '/').replace('#', '_')
+        int i = filename.lastIndexOf('.')
+        
+        filename = filename.replace('.', '/')
+        filename = filename.replace('#', '_')
+        
+        if (i != -1) {
+            filename = new StringBuffer(filename).replace(i, i + 1, '.').toString()
+        }
+        
+        return filename
+    }
+    
+    private URI baseURI(File baseDir, File targetFile) {
+        assert baseDir
+        assert targetFile
+        
+        if (baseDir == targetFile) {
+            return new URI('.')
+        }
+        
+        baseDir = baseDir.canonicalFile
+        targetFile = targetFile.canonicalFile
+        
+        def path = targetFile.path - (baseDir.path + '/')
+        path = '../' * (path.count('/') + 1 )
+        
+        return new URI(path[0 .. -2])
     }
     
     def generate() {
@@ -84,201 +127,125 @@
         ant.delete(dir: workDir)
         ant.delete(dir: targetDir)
         
-        def loadTestSuite = { dir ->
-            log.info "Loading testsuite from: $dir"
-            
-            def scanner = ant.fileScanner {
-            fileset(dir: dir) {
-                    include(name: '**/*.jtr')
-                }
-            }
-            
-            log.info 'Loading testsuite'
+        def installBoilerplate = {
+            log.info "Installing boilerplate"
             
-            def watch = new StopWatch()
-            watch.start()
+            // Install boilerplate resources
+            def url = getClass().classLoader.getResource('gbuild/config/projects/Geronimo_CTS/report/resources/boilerplate')
+            assert url != null
+            assert url.protocol == 'file'
             
-            def testCases = []
-            scanner.each { file ->
-                testCases << TestCase.fromFile(file)
+            ant.copy(todir: targetDir) {
+                fileset(dir: url.path) {
+                    include(name: '**')
+                }
             }
+        }
+        
+        def createRenderer = { templateName, targetPath ->
+            def outputFile = new File(targetDir, makeSafeFilename(targetPath)).canonicalFile
             
-            def testSuite = new TestSuite(testCases)
-            
-            watch.stop()
+            def template = engine.getTemplate(templateName)
             
-            log.info "Testsuite loaded in $watch"
+            template.params.baseURI = baseURI(targetDir, outputFile.parentFile)
             
-            return testSuite
+            return new PageRenderer(template, outputFile)
         }
         
-        // Holds stats for all results
-        def allStats = new AllStats()
+        def suiteModel = new SuiteModel()
         
-        // Process each result archive
         archives.each { archive ->
             log.info "Processing results archive: $archive"
             
-            def watch = new StopWatch()
-            watch.start()
+            logMemoryUsage()
             
             // Unpack the results
+            log.info 'Unpacking result files'
             ant.unzip(src: archive, dest: workDir)
             
             // Load runtests.properties, so we can see webcontainer and iteration (and others)
+            log.debug 'Loading results properties'
             def props = loadProperties("$workDir/runtests.properties")
             def iteration = props.iteration
             log.info "Iteration: $iteration"
             
-            // Load the testuite
-            def testSuite = loadTestSuite(workDir)
-            
-            // Save stats for each set of results
-            def stats = new StatsCollector()
+            // Create a new model for the iter to capture stats
+            def iterModel = suiteModel.createIteration(iteration)
             
-            def renderTestCase = { testCase ->
-                log.debug "Rendering testcase: $testCase.name"
-                
-                def template = engine.getTemplate('testcase-detail.tmpl')
-                template.params.testCase = testCase
-                
-                def file = new File(targetDir, makeSafeFilename(testCase.className) + '/' + testCase.testName + '.html')
-                template.render(file)
-            }
+            //
+            // TODO: Set iteration config properties
+            //
             
-            // Render testcase details
-            log.info 'Rendering testcases'
-            testSuite.testCases.each { name, testCase ->
-                stats << testCase
-                
-                renderTestCase(testCase)
+            // Scan for result files
+            def scanner = ant.fileScanner {
+            fileset(dir: workDir) {
+                    include(name: '**/*.jtr')
+                }
             }
             
-            // Render package summaries
-            log.info 'Rendering package summaries'
-            stats.classesInPackages.each { packageName, classNames ->
-                log.debug "Rendering package summary: $packageName"
-                
-                def template = engine.getTemplate('package-summary.tmpl')
-                template.params.packageName = packageName
-                template.params.classNames = classNames
-                template.params.stats = stats
+            // Process each result
+            log.info 'Processing test results'
+            scanner.each { file ->
+                def testCase = TestCase.fromFile(file)
+                iterModel << testCase
                 
-                def file = new File(targetDir, makeSafeFilename(packageName) + '/index.html')
-                template.render(file)
+                // Render testcase detail
+                def renderer = createRenderer('testcase-detail.vm', "${testCase.name}.html")
+                renderer.params.testCase = testCase
+                renderer.render()
             }
             
             // Render class summaries
-            log.info 'Rendering class summaries'
-            stats.testsInClasses.each { className, testNames ->
-                log.debug "Rendering class summary: $className"
-                
-                def template = engine.getTemplate('class-summary.tmpl')
-                template.params.className = className
-                template.params.testNames = testNames
-                template.params.stats = stats
-                
-                def file = new File(targetDir, makeSafeFilename(className) + '/index.html')
-                template.render(file)
+            iterModel.classes.each { model ->
+                def renderer = createRenderer('class-summary.vm', "${model.name}.html")
+                renderer.params.model = model
+                renderer.render()
             }
             
-            def renderIterationSummary = {
-                log.info 'Rendering iteration summary'
-                def template = engine.getTemplate('iteration-detail.tmpl')
-                template.params.stats = stats
-                template.params.props = props
-                template.params.iteration = iteration
-                
-                def file = new File(targetDir, "iteration-${iteration}.html")
-                template.render(file)
-            }
-            
-            def renderIterationPackagesFrame = {
-                log.info 'Rendering iteration packages frame'
-                def template = engine.getTemplate('iteration-packages-frame.tmpl')
-                template.params.stats = stats
-                template.params.iteration = iteration
-                
-                def file = new File(targetDir, "iteration-${iteration}-packages-frame.html")
-                template.render(file)
+            // Render package summaries
+            iterModel.packages.each { model ->
+                def renderer = createRenderer('package-summary.vm', "${model.name}/package-summary.html")
+                renderer.params.model = model
+                renderer.render()
             }
             
-            renderIterationSummary()
-            
-            renderIterationPackagesFrame()
-            
-            // Save stats for overview
-            allStats.add(iteration, stats)
-            
-            // Clean up
-            log.info "Cleaning up"
-            ant.delete(dir: workDir, quiet: true)
-            
-            log.info "Finished processing iteration $iteration in $watch"
-        }
-        
-        //
-        // TODO: Add non-passing tests overview
-        //
-        
-        def renderIterationOverview = {
-            log.info "Rendering iteration overview"
-            
-            def template = engine.getTemplate('iteration-overview.tmpl')
-            template.params.allStats = allStats
-            def file = new File(targetDir, 'iteration-overview.html')
-            template.render(file)
-        }
-        
-        def renderIterationFrame = {
-            log.info "Rendering iteration frame"
+            def renderer
             
-            def template = engine.getTemplate('iterations-frame.tmpl')
-            template.params.allStats = allStats
-            def file = new File(targetDir, 'iterations-frame.html')
-            template.render(file)
-        }
-        
-        def renderPackageOverview = {
-            log.info "Rendering package overview"
+            // Render iteration detail
+            renderer = createRenderer('iteration-detail.vm', "iteration-${iteration}.html")
+            renderer.params.model = iterModel
+            renderer.render()
             
-            def template = engine.getTemplate('package-overview.tmpl')
-            template.params.allStats = allStats
-            def file = new File(targetDir, 'package-overview.html')
-            template.render(file)
-        }
-        
-        def renderAllPackagesFrame = {
-            log.info "Rendering all packages frame"
+            // Render iteration frame
+            renderer = createRenderer('iteration-frame.vm', "iteration-${iteration}-frame.html")
+            renderer.params.model = iterModel
+            renderer.render()
             
-            def template = engine.getTemplate('all-packages-frame.tmpl')
-            template.params.allStats = allStats
-            def file = new File(targetDir, 'all-packages-frame.html')
-            template.render(file)
+            // Clean up for the next iteration
+            ant.delete(dir: workDir)
         }
         
-        def installBoilerplate = {
-            log.info "Installing boilerplate"
-            
-            // Install boilerplate resources
-            def url = getClass().classLoader.getResource('gbuild/config/projects/Geronimo_CTS/report/resources/boilerplate')
-            assert url != null
-            assert url.protocol == 'file'
-            
-            ant.copy(todir: targetDir) {
-                fileset(dir: url.path) {
-                    include(name: '**')
-                }
-            }
-        }
+        def renderer
         
-        renderIterationOverview()
+        // Render the iteration overview
+        renderer = createRenderer('iteration-overview.vm', "iteration-overview.html")
+        renderer.params.model = suiteModel
+        renderer.render()
         
-        renderIterationFrame()
+        // Render the package overview
+        renderer = createRenderer('package-overview.vm', "package-overview.html")
+        renderer.params.model = suiteModel
+        renderer.render()
         
-        renderPackageOverview()
+        // Render the all iterations frame
+        renderer = createRenderer('all-iterations-frame.vm', "all-iterations-frame.html")
+        renderer.params.model = suiteModel
+        renderer.render()
         
-        renderAllPackagesFrame()
+        // Render the all packages frame
+        renderer = createRenderer('all-packages-frame.vm', "all-packages-frame.html")
+        renderer.params.model = suiteModel
+        renderer.render()
         
         installBoilerplate()
     }

Modified: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/ClassModel.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/ClassModel.groovy?view=diff&rev=505214&r1=505213&r2=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/ClassModel.groovy (original)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/ClassModel.groovy Fri Feb  9 00:38:34 2007
@@ -32,8 +32,12 @@
  */
 class ClassModel extends GroupModel
 {
-    def ClassModel() {
-        super('name', TestCaseModel)
+    def ClassModel(String name) {
+        super(name, 'name', TestCaseModel)
+    }
+    
+    Collection getTests() {
+        return children.values()
     }
     
     List getTestNames() {
@@ -42,6 +46,11 @@
     
     long getTestCount() {
         return testNames.size()
+    }
+    
+    String getHref() {
+        def shortName = name.substring(name.lastIndexOf('.') + 1, name.size())
+        return shortName.replace('.', '/').replace('#', '_') + '.html'
     }
 }
 

Modified: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/GroupModel.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/GroupModel.groovy?view=diff&rev=505214&r1=505213&r2=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/GroupModel.groovy (original)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/GroupModel.groovy Fri Feb  9 00:38:34 2007
@@ -35,13 +35,15 @@
 abstract class GroupModel
     extends TestModel
 {
-    protected Map children = [:]
+    Map children = [:]
     
     protected String childName
     
     protected Class childType
     
-    protected GroupModel(String childName, Class childType) {
+    protected GroupModel(String name, String childName, Class childType) {
+        super(name)
+        
         assert childName
         assert childType
         
@@ -49,10 +51,11 @@
         this.childType = childType
     }
     
-    protected GroupModel() {
-        //
-        // HACK: For SuiteModel
-        //
+    //
+    // HACK: For SuiteModel
+    //
+    protected GroupModel(String name) {
+        super(name)
     }
     
     def leftShift(TestCase testCase) {
@@ -79,16 +82,18 @@
     protected TestModel createModel(TestCase testCase) {
         assert testCase
         
-        return addChild(testCase[childName], childType.newInstance())
+        def name = testCase[childName]
+        
+        return addChild(name, childType.newInstance(name))
     }
     
-    protected TestModel addChild(Object id, TestModel model) {
+    protected TestModel addChild(String name, TestModel model) {
         assert model
         
         // Make sure we don't clobber anything
-        assert !children[id]
+        assert !children[name]
         
-        children[id] = model
+        children[name] = model
         
         // Register ourselves for our childrens events
         model << this
@@ -96,7 +101,7 @@
         return model
     }
     
-    protected List getChildNames() {
+    List getChildNames() {
         return children.keySet().sort(Sorting.CASE_INSENSITIVE)
     }
     
@@ -111,6 +116,16 @@
         
         if (sorted) {
             list = list.sort(Sorting.CASE_INSENSITIVE)
+        }
+        
+        return list
+    }
+    
+    protected List aggregateChildModels() {
+        def list = []
+        
+        children.keySet().sort(Sorting.CASE_INSENSITIVE).each {
+            list << children[it]
         }
         
         return list

Modified: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/IterationModel.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/IterationModel.groovy?view=diff&rev=505214&r1=505213&r2=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/IterationModel.groovy (original)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/IterationModel.groovy Fri Feb  9 00:38:34 2007
@@ -34,8 +34,12 @@
  */
 class IterationModel extends GroupModel
 {
-    def IterationModel() {
-        super('packageName', PackageModel)
+    def IterationModel(String name) {
+        super(name, 'packageName', PackageModel)
+    }
+    
+    Collection getPackages() {
+        return children.values()
     }
     
     List getPackageNames() {
@@ -46,6 +50,16 @@
         return packageNames.size()
     }
     
+    Collection getClasses() {
+        def list = []
+        
+        children.each { name, model ->
+            list.addAll(model.classes)
+        }
+        
+        return list
+    }
+    
     List getClassNames() {
         return aggregateChildValues('classNames')
     }
@@ -54,12 +68,22 @@
         return classNames.size()
     }
     
+    Collection getTests() {
+        //
+        // TODO:
+        //
+    }
+    
     List getTestNames() {
         return aggregateChildValues('testNames')
     }
     
     long getTestCount() {
         return testNames.size()
+    }
+    
+    String getHref() {
+        return "iteration-${name}.html"
     }
 }
 

Modified: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/PackageModel.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/PackageModel.groovy?view=diff&rev=505214&r1=505213&r2=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/PackageModel.groovy (original)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/PackageModel.groovy Fri Feb  9 00:38:34 2007
@@ -33,8 +33,12 @@
  */
 class PackageModel extends GroupModel
 {
-    def PackageModel() {
-        super('className', ClassModel)
+    def PackageModel(String name) {
+        super(name, 'className', ClassModel)
+    }
+    
+    Collection getClasses() {
+        return aggregateChildModels()
     }
     
     List getClassNames() {
@@ -45,12 +49,31 @@
         return childNames.size()
     }
     
+    Collection getTests() {
+        return aggregateChildModels()
+    }
+    
     List getTestNames() {
         return aggregateChildValues('testNames')
     }
     
     long getTestCount() {
         return testNames.size()
+    }
+    
+    /*
+    String getHref() {
+        def shortName = name.substring(name.lastIndexOf('.') + 1, name.size())
+        return shortName.replace('.', '/').replace('#', '_') + '.html'
+    }
+    
+    String getFullHref() {
+        return name.replace('.', '/').replace('#', '_') + '.html'
+    }
+    */
+    
+    String getHref() {
+        return name.replace('.', '/').replace('#', '_') + '/package-summary.html'
     }
 }
 

Modified: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/SuiteModel.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/SuiteModel.groovy?view=diff&rev=505214&r1=505213&r2=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/SuiteModel.groovy (original)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/SuiteModel.groovy Fri Feb  9 00:38:34 2007
@@ -39,18 +39,37 @@
  */
 class SuiteModel extends GroupModel
 {
+    def SuiteModel() {
+        super("TestSuite")
+    }
+    
     IterationModel createIteration(iter) {
-        return addChild(String.valueOf(iter), new IterationModel())
+        def name = String.valueOf(iter)
+        return addChild(name, new IterationModel(name))
     }
     
     def leftShift(TestCase testCase) {
         throw new Exception('Use iteration model to add test cases')
     }
     
+    Collection getIterations() {
+        return children.values().sort()
+    }
+    
     int getIterationCount() {
         return children.size()
     }
     
+    Collection getPackages() {
+        def list = []
+        
+        iterations.each { iter ->
+            list.addAll(iter.packages)
+        }
+        
+        return list.sort()
+    }
+    
     List getPackageNames() {
         return aggregateChildValues('packageNames')
     }
@@ -59,12 +78,24 @@
         return packageNames.size()
     }
     
+    Collection getClasses() {
+        //
+        // TODO:
+        //
+    }
+    
     List getClassNames() {
         return aggregateChildValues('classNames')
     }
     
     long getClassCount() {
         return classNames.size()
+    }
+    
+    Collection getTests() {
+        //
+        // TODO:
+        //
     }
     
     List getTestNames() {

Modified: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/TestCaseModel.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/TestCaseModel.groovy?view=diff&rev=505214&r1=505213&r2=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/TestCaseModel.groovy (original)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/TestCaseModel.groovy Fri Feb  9 00:38:34 2007
@@ -30,6 +30,10 @@
  */
 class TestCaseModel extends TestModel
 {
+    def TestCaseModel(String name) {
+        super(name)
+    }
+    
     //
     // HACK: Can't seem to add our selves to the listener list, so force the event
     //       to be run instead...
@@ -45,6 +49,11 @@
         //
         // TODO: Figure out what we need to cache here from the testCase instance
         //
+    }
+    
+    String getHref() {
+        def shortName = name.substring(name.lastIndexOf('.') + 1, name.size())
+        return shortName.replace('.', '/').replace('#', '_') + '.html'
     }
 }
 

Modified: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/TestModel.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/TestModel.groovy?view=diff&rev=505214&r1=505213&r2=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/TestModel.groovy (original)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/model/TestModel.groovy Fri Feb  9 00:38:34 2007
@@ -29,10 +29,17 @@
  * Support for model implementations which handle test case data collection.
  */
 abstract class TestModel
-    implements TestModelStateListener
+    implements TestModelStateListener, Comparable
 {
     protected Set listeners = new TreeSet()
     
+    String name
+    
+    protected TestModel(String name) {
+        assert name
+        this.name = name
+    }
+    
     def leftShift(TestModelStateListener listener) {
         assert listener
         
@@ -51,6 +58,19 @@
         assert testCase
         
         fireTestCaseAdded(testCase)
+    }
+    
+    int compareTo(obj) {
+        assert obj
+        
+        if (obj instanceof TestModel) {
+            obj = obj.name
+        }
+        else {
+            obj = String.valueOf(obj)
+        }
+        
+        return name.toLowerCase() <=> obj.toLowerCase()
     }
 }
 

Modified: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/boilerplate/index.html
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/boilerplate/index.html?view=diff&rev=505214&r1=505213&r2=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/boilerplate/index.html (original)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/boilerplate/index.html Fri Feb  9 00:38:34 2007
@@ -37,7 +37,7 @@
 
 <frameset cols="20%,80%" title="" onLoad="top.loadFrames()">
     <frameset rows="20%,80%" title="" onLoad="top.loadFrames()">
-        <frame src="iterations-frame.html" name="iterationListFrame" title="Iterations">
+        <frame src="all-iterations-frame.html" name="iterationListFrame" title="Iterations">
         <frame src="all-packages-frame.html" name="packageFrame" title="Packages">
     </frameset>
     <frame src="package-overview.html" name="detailFrame" title="Details" scrolling="yes">

Added: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/class-summary.vm
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/class-summary.vm?view=auto&rev=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/class-summary.vm (added)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/class-summary.vm Fri Feb  9 00:38:34 2007
@@ -0,0 +1,74 @@
+##
+## Licensed to the Apache Software Foundation (ASF) under one
+## or more contributor license agreements.  See the NOTICE file
+## distributed with this work for additional information
+## regarding copyright ownership.  The ASF licenses this file
+## to you 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.
+##
+
+##
+## $Id$
+##
+
+<html>
+#pageHeader($model.name)
+<body>
+    <h2>Class $model.name</h2>
+    
+    <h3>Summary</h3>
+    
+    <table>
+        <tbody>
+            <tr>
+                <td>Tests</td>
+                <td>$model.count</td>
+            </tr>
+            <tr>
+                <td>Passed</td>
+                <td>$model.passCount</td>
+            </tr>
+            <tr>
+                <td>Failed</td>
+                <td>$model.failureCount</td>
+            </tr>
+            <tr>
+                <td>Errors</td>
+                <td>$model.errorCount</td>
+            </tr>
+            <tr>
+                <td>Success Rate</td>
+                <td>$model.successRate</td>
+            </tr>
+            <tr>
+                <td>Duration</td>
+                <td>$model.duration</td>
+            </tr>
+        </tbody>
+    </table>
+    
+    <h3>Tests</h3>
+    
+    <table>
+        #tableHeader(['Test'])
+        
+        <tbody>
+            #foreach ($test in $model.tests)
+                <tr>
+                    <td align="left"><a href="$test.href">$test.name</a></td>
+                </tr>
+            #end
+        </tbody>
+    </table>
+</body>
+</html>

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/class-summary.vm
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/class-summary.vm
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/class-summary.vm
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/iteration-detail.vm
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/iteration-detail.vm?view=auto&rev=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/iteration-detail.vm (added)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/iteration-detail.vm Fri Feb  9 00:38:34 2007
@@ -0,0 +1,77 @@
+##
+## Licensed to the Apache Software Foundation (ASF) under one
+## or more contributor license agreements.  See the NOTICE file
+## distributed with this work for additional information
+## regarding copyright ownership.  The ASF licenses this file
+## to you 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.
+##
+
+##
+## $Id$
+##
+
+<html>
+#pageHeader($model.name)
+<body>
+    <h2>Iteration $model.name</h2>
+    
+    <h3>Summary</h3>
+    
+    <table>
+        <tbody>
+            <tr>
+                <td>Tests</td>
+                <td>$model.count</td>
+            </tr>
+            <tr>
+                <td>Passed</td>
+                <td>$model.passCount</td>
+            </tr>
+            <tr>
+                <td>Failed</td>
+                <td>$model.failureCount</td>
+            </tr>
+            <tr>
+                <td>Errors</td>
+                <td>$model.errorCount</td>
+            </tr>
+            <tr>
+                <td>Success Rate</td>
+                <td>$model.successRate</td>
+            </tr>
+            <tr>
+                <td>Duration</td>
+                <td>$model.duration</td>
+            </tr>
+        </tbody>
+    </table>
+    
+    <h3>Packages</h3>
+    
+    <table>
+        #tableHeader(['Class', 'Tests', 'Success Rate', 'Duration'])
+        
+        <tbody>
+            #foreach ($pkg in $model.packages)
+                <tr>
+                    <td align="left"><a href="$pkg.href">$pkg.name</a></td>
+                    <td align="right">$pkg.count</td>
+                    <td align="right">$pkg.successRate</td>
+                    <td align="right">$pkg.duration</td>
+                </tr>
+            #end
+        </tbody>
+    </table>
+</body>
+</html>

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/iteration-detail.vm
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/iteration-detail.vm
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/iteration-detail.vm
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/macros.vm
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/macros.vm?view=auto&rev=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/macros.vm (added)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/macros.vm Fri Feb  9 00:38:34 2007
@@ -0,0 +1,55 @@
+##
+## Licensed to the Apache Software Foundation (ASF) under one
+## or more contributor license agreements.  See the NOTICE file
+## distributed with this work for additional information
+## regarding copyright ownership.  The ASF licenses this file
+## to you 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.
+##
+
+##
+## $Id$
+##
+
+#macro (pageHeader $title)
+    <head>
+        <title>$title</title>
+        <link rel="stylesheet" type="text/css" href="${baseURI}/stylesheet.css" title="style"/>
+    </head>
+#end
+    
+#macro (tableHeader $names)
+    <thead>
+        <tr>
+            #foreach ($name in $names)
+                <th>$name</td>
+            #end
+        </tr>
+    </thead>
+#end
+
+#macro (propertiesTable $map)
+    <table>
+        #tableHeader(['Name', 'Value'])
+        
+        <tbody>
+            #foreach ($key in $map.keySet())
+                <tr>
+                    <td>$key</td>
+                    <td>$map.get($key)</td>
+                </tr>
+            #end
+        </tbody>
+    </table>
+#end
+

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/macros.vm
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/macros.vm
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/macros.vm
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/package-summary.vm
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/package-summary.vm?view=auto&rev=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/package-summary.vm (added)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/package-summary.vm Fri Feb  9 00:38:34 2007
@@ -0,0 +1,93 @@
+##
+## Licensed to the Apache Software Foundation (ASF) under one
+## or more contributor license agreements.  See the NOTICE file
+## distributed with this work for additional information
+## regarding copyright ownership.  The ASF licenses this file
+## to you 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.
+##
+
+##
+## $Id$
+##
+
+<html>
+#pageHeader($model.name)
+<body>
+    <h2>Package $model.name</h2>
+    
+    <h3>Summary</h3>
+    
+    <table>
+        <tbody>
+            <tr>
+                <td>Tests</td>
+                <td>$model.count</td>
+            </tr>
+            <tr>
+                <td>Passed</td>
+                <td>$model.passCount</td>
+            </tr>
+            <tr>
+                <td>Failed</td>
+                <td>$model.failureCount</td>
+            </tr>
+            <tr>
+                <td>Errors</td>
+                <td>$model.errorCount</td>
+            </tr>
+            <tr>
+                <td>Success Rate</td>
+                <td>$model.successRate</td>
+            </tr>
+            <tr>
+                <td>Duration</td>
+                <td>$model.duration</td>
+            </tr>
+        </tbody>
+    </table>
+    
+    <h3>Classes</h3>
+    
+    <table>
+        #tableHeader(['Class', 'Tests', 'Success Rate', 'Duration'])
+        
+        <tbody>
+            #foreach ($clazz in $model.classes)
+                <tr>
+                    <td align="left"><a href="$clazz.href">$clazz.name</a></td>
+                    <td align="right">$clazz.count</td>
+                    <td align="right">$clazz.successRate</td>
+                    <td align="right">$clazz.duration</td>
+                </tr>
+            #end
+        </tbody>
+    </table>
+    
+    <h3>Tests</h3>
+    
+    <table>
+        #tableHeader(['Test'])
+        
+        <tbody>
+            #foreach ($clazz in $model.classes)
+                #foreach ($test in $clazz.tests)
+                    <tr>
+                        <td align="left"><a href="$test.href">$test.name</a></td>
+                    </tr>
+                #end
+            #end
+        </tbody>
+    </table>
+</body>
+</html>

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/package-summary.vm
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/package-summary.vm
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/package-summary.vm
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/testcase-detail.vm
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/testcase-detail.vm?view=auto&rev=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/testcase-detail.vm (added)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/testcase-detail.vm Fri Feb  9 00:38:34 2007
@@ -0,0 +1,103 @@
+##
+## Licensed to the Apache Software Foundation (ASF) under one
+## or more contributor license agreements.  See the NOTICE file
+## distributed with this work for additional information
+## regarding copyright ownership.  The ASF licenses this file
+## to you 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.
+##
+
+##
+## $Id$
+##
+
+<html>
+#pageHeader($testCase.name)
+<body>
+    <h2>TestCase $testCase.name</h2>
+    
+    <h3>Summary</h3>
+    
+    <table>
+        <tbody>
+            <tr>
+                <td>Name:</td>
+                <td>$testCase.name</td>
+            </tr>
+            <tr>
+                <td>Class:</td>
+                <td>$testCase.className</td>
+            </tr>
+            <tr>
+                <td>Test:</td>
+                <td>$testCase.testName</td>
+            </tr>
+            <tr>
+                <td>Started:</td>
+                <td>$testCase.started</td>
+            </tr>
+            <tr>
+                <td>Ended:</td>
+                <td>$testCase.ended</td>
+            </tr>
+            <tr>
+                <td>Duration:</td>
+                <td>$testCase.duration</td>
+            </tr>
+            
+            <tr>
+                <td>Status:</td>
+                <td>$testCase.status.text</td>
+            </tr>
+            <tr>
+                <td>Passed:</td>
+                <td>$testCase.status.passed</td>
+            </tr>
+            
+            #if (!$testCase.status.passed)
+                <tr>
+                    <td>Failure Reason:</td>
+                    <td>$testCase.status.reason</td>
+                </tr>
+            #end
+        </tbody>
+    </table>
+    
+    <h3>Details</h3>
+    
+    <h4>Test Description</h4>
+    
+    #propertiesTable($testCase.description)
+    
+    <h4>Environment</h4>
+    
+    #propertiesTable($testCase.environment)
+    
+    <h5>Test Result</h5>
+    
+    #propertiesTable($testCase.resultProperties)
+    
+    <h3>Sections</h3>
+    
+    #foreach ($section in $testCase.sections)
+        <h4>$section.name</h4>
+        
+        #foreach ($stream in $section.streams)
+            <h5>$stream.name ($stream.lines lines, $stream.chars chars)</h5>
+            #if ($stream.lines > 0)
+                <pre>$stream.data</pre>
+            #end
+        #end
+    #end
+</body>
+</html>

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/testcase-detail.vm
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/testcase-detail.vm
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/config/projects/Geronimo_CTS/report/resources/testcase-detail.vm
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/system/template/Template.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/system/template/Template.groovy?view=diff&rev=505214&r1=505213&r2=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/system/template/Template.groovy (original)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/system/template/Template.groovy Fri Feb  9 00:38:34 2007
@@ -72,6 +72,7 @@
         
         log.debug "Rendering to: $file"
         
+        
         def writer = file.newWriter()
         try {
             render(writer)

Modified: geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/system/template/velocity/TemplateEngine.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/system/template/velocity/TemplateEngine.groovy?view=diff&rev=505214&r1=505213&r2=505214
==============================================================================
--- geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/system/template/velocity/TemplateEngine.groovy (original)
+++ geronimo/sandbox/build-support/libraries/system/1/groovy/gbuild/system/template/velocity/TemplateEngine.groovy Fri Feb  9 00:38:34 2007
@@ -65,7 +65,7 @@
         velocity.setProperty('file.resource.loader.cache', 'false')
         velocity.setProperty('file.resource.loader.modificationCheckInterval', '2')
         
-        velocity.setProperty('runtime.log.logsystem.class', 'org.apache.velocity.runtime.log.NullLogSystem')
+        // velocity.setProperty('runtime.log.logsystem.class', 'org.apache.velocity.runtime.log.NullLogSystem')
     }
     
     def setLibraries(List libs) {



Mime
View raw message