This project has retired. For details please refer to its Attic page.
JUnitHelper xref

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.chemistry.opencmis.tck.impl;
20  
21  import java.io.File;
22  import java.io.PrintWriter;
23  
24  import org.apache.chemistry.opencmis.tck.CmisTest;
25  import org.apache.chemistry.opencmis.tck.CmisTestGroup;
26  import org.apache.chemistry.opencmis.tck.CmisTestProgressMonitor;
27  import org.apache.chemistry.opencmis.tck.CmisTestReport;
28  import org.apache.chemistry.opencmis.tck.CmisTestResult;
29  import org.apache.chemistry.opencmis.tck.CmisTestResultStatus;
30  import org.apache.chemistry.opencmis.tck.report.TextReport;
31  import org.apache.chemistry.opencmis.tck.runner.AbstractRunner;
32  import org.junit.Assert;
33  
34  public class JUnitHelper {
35  
36      public static final String JUNIT_PARAMETERS = "org.apache.chemistry.opencmis.tck.junit.parameters";
37  
38      private JUnitHelper() {
39      }
40  
41      public static void run(CmisTest test) {
42          try {
43              run(new WrapperCmisTestGroup(test));
44          } catch (Exception e) {
45              Assert.fail(e.getMessage());
46          }
47      }
48  
49      public static void run(CmisTestGroup group) {
50          try {
51              JUnitRunner runner = new JUnitRunner();
52  
53              String parametersFile = System.getProperty(JUNIT_PARAMETERS);
54              if (parametersFile == null) {
55                  runner.setParameters(null);
56              } else {
57                  runner.loadParameters(new File(parametersFile));
58              }
59  
60              runner.addGroup(group);
61              runner.run(new JUnitProgressMonitor());
62  
63              CmisTestReport report = new TextReport();
64              report.createReport(runner.getParameters(), runner.getGroups(), new PrintWriter(System.out));
65  
66              checkForFailures(runner);
67          } catch (Exception e) {
68              Assert.fail(e.getMessage());
69          }
70      }
71  
72      private static void checkForFailures(JUnitRunner runner) {
73          for (CmisTestGroup group : runner.getGroups()) {
74              for (CmisTest test : group.getTests()) {
75                  for (CmisTestResult result : test.getResults()) {
76                      if (result.getStatus().getLevel() >= CmisTestResultStatus.FAILURE.getLevel()) {
77                          Assert.fail(result.getMessage());
78                      }
79                  }
80              }
81          }
82      }
83  
84      private static class JUnitRunner extends AbstractRunner {
85      }
86  
87      private static class JUnitProgressMonitor implements CmisTestProgressMonitor {
88          public void startGroup(CmisTestGroup group) {
89              System.out.println(group.getName() + " (" + group.getTests().size() + " tests)");
90          }
91  
92          public void endGroup(CmisTestGroup group) {
93          }
94  
95          public void startTest(CmisTest test) {
96              System.out.println("  " + test.getName());
97          }
98  
99          public void endTest(CmisTest test) {
100         }
101 
102         public void message(String msg) {
103             System.out.println(msg);
104         }
105     }
106 }