11package tester ;
22
33//import java.lang.annotation.Annotation;
4- import java .lang .reflect .*;
5- import java .util .*;
6- import java .io .*;
4+ import java .io .BufferedReader ;
5+ import java .io .File ;
6+ import java .io .FileReader ;
7+ import java .io .InputStream ;
8+ import java .io .InputStreamReader ;
9+ import java .io .PrintWriter ;
10+ import java .io .StringWriter ;
11+ import java .lang .reflect .Array ;
12+ import java .lang .reflect .Constructor ;
13+ import java .lang .reflect .Method ;
14+ import java .util .ArrayList ;
15+ import java .util .Comparator ;
16+ import java .util .Set ;
17+ import java .util .regex .Matcher ;
18+ import java .util .regex .Pattern ;
719
820//import org.apache.log4j.Logger;
921
2436 * <P>Displays the data even if no tests are present.</P>
2537 *
2638 * @author Viera K. Proulx, Weston Jossey, Shayne Caswell, Sachin Venugopalan
39+ * Virag Shah
2740 * @since 21 March 2008, 11 June 2008, 24 June 2008, 16 October 2008, 11
2841 * November 2008, 23 November 2008, 12 December 2008, 20 January 2009,
2942 * 18 May 2009, 19 October 2009, 10 November 2009, 16 November 2009,
3043 * 5 February 2010, 15 March 2010, 12 May 2010, 5 October 2010,
31- * 18 February 2011, 5 July 2011, 12 January 2012, 17 June 2012
44+ * 18 February 2011, 5 July 2011, 12 January 2012, 17 June 2012,
45+ * 20 September 2012
3246 */
3347public class Tester {
3448 // private static final Logger logger = Logger.getLogger(Tester.class);
3549
36- /** A <code>String</code> that reports the current tester version */
37- private String version = "Tester Prima v.1.5.1 - 17 June 2012\n " +
38- "-----------------------------------" ;
50+ /** A <code>String</code> that reports the current tester version */
51+ private static String version ;
3952
4053 /** A <code>String</code> that records the results for all failed tests */
4154 protected StringBuilder failedResults = new StringBuilder (
@@ -62,11 +75,41 @@ public class Tester {
6275
6376 /** start with no tests and no failures */
6477 public Tester () {
65- Inspector .TOLERANCE = 0.001 ;
66- this .numberOfTests = 0 ;
67- this .errors = 0 ;
68- this .warnings = 0 ;
69- this .testname = "" ;
78+ Inspector .TOLERANCE = 0.001 ;
79+ this .numberOfTests = 0 ;
80+ this .errors = 0 ;
81+ this .warnings = 0 ;
82+ this .testname = "" ;
83+ }
84+
85+ /** Read the current version of tester from the pom.xml file **/
86+ static {
87+ try {
88+ InputStream inputStream = Tester .class .getClassLoader ().getResourceAsStream ("META-INF/maven/ccs.neu.edu/tester/pom.xml" );
89+ BufferedReader br ;
90+
91+ if (inputStream == null )
92+ br = new BufferedReader (new FileReader (new File ("pom.xml" )));
93+ else
94+ br = new BufferedReader (new InputStreamReader (inputStream , "UTF-8" ));
95+
96+ String line ;
97+ StringBuilder sb = new StringBuilder ();
98+
99+ while ((line = br .readLine ()) != null ) {
100+ sb .append (line .trim ());
101+ }
102+
103+ Pattern p = Pattern .compile ("<version>(.*?)</version>" );
104+ Matcher m = p .matcher (sb );
105+ m .find ();
106+
107+ version = "Tester Prima v." + m .group (1 ) + "\n -----------------------------------" ;
108+
109+ } catch (Exception e ) {
110+ System .out .println ("** Failed to read tester version from pom.xml file. **" );
111+ e .printStackTrace ();
112+ }
70113 }
71114
72115 /*--------------------------------------------------------------------*/
@@ -136,7 +179,7 @@ protected void runAnyTests(Object f, boolean full, boolean printall) {
136179 this .numberOfTests = 0 ; // number of tests run
137180 boolean failed = false ; // any tests failed?
138181
139- System .out .println (this . version );
182+ System .out .println (version );
140183 // print the name of the 'Examples' class
141184 System .out .println ("Tests defined in the class: " + f .getClass ().getName () +
142185 ":\n ---------------------------" );
0 commit comments