surefire-2.10/0000755000175000017500000000000011645102475012031 5ustar tonytonysurefire-2.10/maven-surefire-plugin/0000755000175000017500000000000011645102474016254 5ustar tonytonysurefire-2.10/maven-surefire-plugin/pom.xml0000644000175000017500000002503611640163725017600 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire 2.10 ../pom.xml org.apache.maven.plugins maven-surefire-plugin maven-plugin Maven Surefire Plugin Joakim Erdfelt joakim@erdfelt.com Maven User List users-subscribe@maven.apache.org users-unsubscribe@maven.apache.org users@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-users http://www.mail-archive.com/users@maven.apache.org/ http://old.nabble.com/Maven---Users-f178.html http://markmail.org/list/org.apache.maven.users Maven Developer List dev-subscribe@maven.apache.org dev-unsubscribe@maven.apache.org dev@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-dev http://www.mail-archive.com/dev@maven.apache.org/ http://old.nabble.com/Maven-Developers-f179.html http://markmail.org/list/org.apache.maven.dev Maven Commits List commits-subscribe@maven.apache.org commits-unsubscribe@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-commits http://www.mail-archive.com/commits@maven.apache.org http://old.nabble.com/Maven---Commits-f15575.html http://markmail.org/list/org.apache.maven.commits Maven Announcements List announce@maven.apache.org announce-subscribe@maven.apache.org announce-unsubscribe@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-announce/ http://www.mail-archive.com/announce@maven.apache.org http://old.nabble.com/Maven-Announcements-f15617.html http://markmail.org/list/org.apache.maven.announce Maven Issues List issues-subscribe@maven.apache.org issues-unsubscribe@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-issues/ http://www.mail-archive.com/issues@maven.apache.org http://old.nabble.com/Maven---Issues-f15573.html http://markmail.org/list/org.apache.maven.issues Maven Notifications List notifications-subscribe@maven.apache.org notifications-unsubscribe@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-notifications/ http://www.mail-archive.com/notifications@maven.apache.org http://old.nabble.com/Maven---Notifications-f15574.html http://markmail.org/list/org.apache.maven.notifications 2.0.9 apache.website scp://people.apache.org/www/maven.apache.org/plugins/maven-surefire-plugin Surefire Failsafe org.apache.maven maven-plugin-api org.apache.maven.surefire surefire-booter org.apache.maven.surefire maven-surefire-common org.codehaus.plexus plexus-utils org.apache.maven maven-artifact org.apache.maven maven-project org.apache.maven maven-core org.apache.maven maven-toolchain maven-compiler-plugin 1.4 1.4 org.apache.maven.plugins maven-plugin-plugin 2.8 generated-helpmojo helpmojo org.apache.maven.plugins maven-site-plugin scp://people.apache.org/www/maven.apache.org/plugins/${project.artifactId}-${project.version} maven-surefire-plugin org.apache.maven.surefire surefire-shadefire ${project.version} maven-assembly-plugin build-site package single true site-source src/assembly/site-source.xml site-site pre-site single true site-source src/assembly/site-source.xml org.apache.maven.plugins maven-plugin-plugin 2.7 1.4 jdk1.3 maven-compiler-plugin false 1.4 ci enableCiProfile true maven-docck-plugin 1.0 check surefire-2.10/maven-surefire-plugin/src/0000755000175000017500000000000011645102474017043 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/site/0000755000175000017500000000000011645102474020007 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/site/site.xml0000644000175000017500000000440511605550556021504 0ustar tonytony surefire-2.10/maven-surefire-plugin/src/site/apt/0000755000175000017500000000000011645102474020573 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/site/apt/usage.apt.vm0000644000175000017500000003064111605575204023033 0ustar tonytony ------ Usage ------ Brett Porter Allan Ramirez Stephen Connolly ------ 2011-06-27 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Usage #{if}(${project.artifactId}=="maven-surefire-plugin") Best practice is to define the version of the Surefire plugin that you want to use in either your <<>> or a parent <<>> +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} [...] +---+ #{else} To use the ${thisPlugin} Plugin, you need to add the following configuration to your <<>> +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} integration-test verify [...] +---+ #{end} #{if}(${project.artifactId}=="maven-surefire-plugin") The ${thisPlugin} Plugin can be invoked by calling the <<>> phase of the build lifecycle. +---+ mvn test +---+ #{else} The ${thisPlugin} Plugin can be invoked by calling the <<>> phase of the build lifecycle. +---+ mvn verify +---+ #{end} * Using different testing providers Tests in your test source directory can be any combination of the following: * TestNG * JUnit (3.8 or 4.x) * POJO Which providers are available is controlled simply by the inclusion of the appropriate dependencies (ie, junit:junit for JUnit, org.testng:testng 4.7+ for TestNG). Since this is required to compile the test classes anyway, no additional configuration is required. Note that any normal Surefire integration works identically no matter which providers are in use - so you can still produce a Cobertura report and a Surefire results report on your project web site for your TestNG tests, for example. The POJO provider above allows you to write tests that do not depend on JUnit. They behave in the same way, running all <<>> methods that are public in the class, but the API dependency is not required. To perform assertions, the JDK 1.4 <<>> keyword can be used, or you can use <<>>. See {{{./examples/pojo-test.html} using POJO tests}} for more information. All of the providers support the Surefire Plugin parameter configurations. However, there are additional options available if you are running TestNG tests (including if you are using TestNG to execute your JUnit tests, which occurs by default if both are present in Surefire). See {{{./examples/testng.html} Using TestNG}} for more information. #{if}(${project.artifactId}=="maven-failsafe-plugin") * Using jetty and ${project.artifactId} You need to bind one of <<>>, <<>> or <<>> to the <<>> phase with <<>> set to true, bind <<>> to the <<>> phase, bind <<>> to the <<>> phase and finally bind <<>> to the <<>> phase. Here is an example: +---+ [...] [...] [...] ${project.groupId} ${project.artifactId} ${project.version} integration-test integration-test verify verify org.mortbay.jetty maven-jetty-plugin 6.1.16 [...] [...] 10 8005 STOP / [...] [...] [...] start-jetty pre-integration-test run-exploded 0 true stop-jetty post-integration-test stop [...] [...] [...] [...] [...] +---+ You then invoke maven with a phase of <<>> or later in order to run the integration tests. DO NOT directly invoke any of the phases: <<>>, <<>>, or <<>> as these are too long to type and they will likely leave a jetty container running. +---+ mvn verify +---+ Note: during test development, you will likely run a jetty instance in the background. to help running the integration tests, it can be handy to bind <<>> to the <<>> phase before <<>> to flush out any running jetty instance before starting the integration test jetty instance, e.g. +---+ [...] [...] [...] org.mortbay.jetty maven-jetty-plugin 6.1.16 [...] [...] start-jetty pre-integration-test stop run-exploded [...] [...] [...] [...] [...] [...] +---+ * Reporting integration test results The ${thisPlugin} Plugin uses the exact same format as the ${thatPlugin} Plugin, so to generate a report you just add a second Surefire Report Plugin report set using the ${thisPlugin} reports directory, e.g. +---+ [...] ${project.groupId} maven-surefire-report-plugin ${project.version} integration-tests failsafe-report-only [...] +---+ * Running integration tests multiple times If you need to run your integration tests multiple times, just use multiple executions of the <<>> goal. You will need to specify a different summary file for each execution, and then configure the <<>> goal with the multiple summary files in order to fail the build when any one execution has failures, e.g. +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} integration-test-red-bevels integration-test red target/failsafe-reports/failsafe-summary-red-bevels.xml integration-test-no-bevels integration-test none target/failsafe-reports/failsafe-summary-no-bevels.xml verify verify target/failsafe-reports/failsafe-summary-red-bevels.xml target/failsafe-reports/failsafe-summary-no-bevels.xml [...] +---+ * Using in multi-module projects The recommendations for using the ${thisPlugin} Plugin listed at the top of this page are fine for 95% of use cases. When you are defining a shared definition of the ${thisPlugin} Plugin in a parent pom, it is considered best practice to define an execution id in order to allow child projects to override the configuration. Thus you might have the following in your parent <<>> +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} integration-test integration-test verify [...] +---+ The child projects can then trigger usage of the ${thisPlugin} Plugin with +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} [...] +---+ For very complex builds, it may be better to separate the executions for the <<>> and <<>> goals. +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} integration-test integration-test verify verify [...] +---+ #{end}surefire-2.10/maven-surefire-plugin/src/site/apt/index.apt.vm0000644000175000017500000001351511605550556023042 0ustar tonytony ------ Introduction ------ Stephen Connolly Allan Ramirez ------ 2011-06-27 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Maven ${thisPlugin} Plugin #{if}(${project.artifactId}=="maven-surefire-plugin") The Surefire Plugin is used during the <<>> phase of the build lifecycle to execute the unit tests of an application. It generates reports in 2 different file formats: #{else} The Failsafe Plugin is designed to run integration tests while the Surefire Plugins is designed to run unit tests. The name (failsafe) was chosen both because it is a synonym of surefire and because it implies that when it fails, it does so in a safe way. The Maven lifecycle has four phases for running integration tests: * <<>> for setting up the integration test environment. * <<>> for running the integration tests. * <<>> for tearing down the integration test environment. * <<>> for checking the results of the integration tests. [] If you use the Surefire Plugin for running tests, then when you have a test failure, the build will stop at the <<>> phase and your integration test environment will not have been torn down correctly. The Failsafe Plugin is used during the <<>> and <<>> phases of the build lifecycle to execute the integration tests of an application. The Failsafe Plugin will not fail the build during the <<>> phase thus enabling the <<>> phase to execute. NOTE: when running integration tests, you should invoke maven with the (shorter to type too) +---+ mvn verify +---+ rather than trying to invoke the <<>> phase directly, as otherwise the <<>> phase will not be executed. The Failsafe Plugin generates reports in 2 different file formats: #{end} * Plain text files (*.txt) * XML files (*.xml) [] By default, these files are generated at <<<$\{basedir\}/target/${thisPlugin.toLowerCase()}-reports>>>. For an HTML format of the report, please see the {{{http://maven.apache.org/plugins/maven-surefire-report-plugin/}Maven Surefire Report Plugin}}. * Goals Overview #{if}(${project.artifactId}=="maven-surefire-plugin") The Surefire Plugin has only 1 goal: * {{{./test-mojo.html}surefire:test}} runs the unit tests of an application. [] #{else} #{end} The Failsafe Plugin has only 2 goals: * {{{./integration-test-mojo.html}failsafe:integration-test}} runs the integration tests of an application. * {{{./verify-mojo.html}failsafe:verify}} verifies that the integration tests of an application passed. [] * Usage General instructions on how to use the ${thisPlugin} Plugin can be found on the {{{./usage.html}usage page}}. Some more specific use cases are described in the examples given below. #{if}(${project.artifactId}=="maven-surefire-plugin") Last but not least, users occasionally contribute additional examples, tips or errata to the {{{http://docs.codehaus.org/display/MAVENUSER/Surefire+Plugin}plugin's wiki page}}.#{end} In case you still have questions regarding the plugin's usage, please have a look at the {{{./faq.html}FAQ}} and feel free to contact the {{{./mail-lists.html}user mailing list}}. The posts to the mailing list are archived and could already contain the answer to your question as part of an older thread. Hence, it is also worth browsing/searching the {{{./mail-lists.html}mail archive}}. If you feel like the plugin is missing a feature or has a defect, you can fill a feature request or bug report in our {{{./issue-tracking.html}issue tracker}}. When creating a new issue, please provide a comprehensive description of your concern. Especially for fixing bugs it is crucial that the developers can reproduce your problem. For this reason, entire debug logs, POMs or most preferably little demo projects attached to the issue are very much appreciated. Of course, patches are welcome, too. Contributors can check out the project from our {{{./source-repository.html}source repository}} and will find supplementary information in the {{{http://maven.apache.org/guides/development/guide-helping.html}guide to helping with Maven}}. * Examples The following examples show how to use the ${thisPlugin} Plugin in more advanced use-cases: * {{{./examples/testng.html}Using TestNG}} * {{{./examples/junit.html}Using JUnit}} * {{{./examples/pojo-test.html}Using POJO Tests}} * {{{./examples/skipping-test.html}Skipping Tests}} * {{{./examples/inclusion-exclusion.html}Inclusions and Exclusions of Tests}} * {{{./examples/single-test.html}Running a Single Test}} * {{{./examples/class-loading.html}Class Loading Issues}} * {{{./examples/debugging.html}Debugging Tests}} * {{{./examples/system-properties.html}Using System Properties}} * {{{./examples/configuring-classpath.html}Configuring the Classpath}} * {{{./examples/providers.html}Selecting providers}} [] surefire-2.10/maven-surefire-plugin/src/site/apt/developing.apt.vm0000644000175000017500000000605011602066444024056 0ustar tonytony ------ Developing surefire ------ Kristian Rosenvold ------ 2011-03-07 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Developer Center When working with surefire, it is necessary to understand a few things: * Multi-Module project The plugin is built as part of a multi-module plugin. The generated 'project information' will suggest that you check out (e.g.) http://svn.apache.org/repos/asf/maven/surefire/trunk/${project.artifactId}. In fact, you need to check out (e.g.) http://svn.apache.org/repos/asf/maven/surefire/trunk and build from there. * JDK Versions The surefire booter is capable of booting all the way back to jdk1.3. Specifically this means surefire-api, surefire-booter, common-junit3 and surefire-junit3 are source/target 1.3. The plugin itself is 1.4 and several providers are 1.5. * Provider Isolation Classes in the SUT (Subject Under Test), override any classes within the surefire providers. This means providers using any third party dependencies (other than the test framework itself), should shade these classes to a different package. * Common provider modules The surefire-providers module contains common-junitXX modules. These modules depend on the XX version of JUnit and can access the JUnit API's at the correct JUnit version level. Unit tests can also be written that will run with the correct JUnit version. At build time, all of the relevant parts of these "common" modules are just shaded into the providers jar files. * Shadefire "Shadefire" is the first module to be run in the surefire build. This creates as shaded version of the JUnit provider, and this provider is thereafter used to build surefire itself (As of any release after 2.8). This is because the SUT overrides the provider, and the shadefire provider has been relocated to avoid this overriding when surefire is building itself. * Deploying/releasing surefire Surefire depends on a previous version of itself, which is too advanced for maven 2.2.x dependency resolution, and maven 3.x is required to build surefire. Until a 3.x site plugin is released the site for surefire has to be deployed with mvn 2.2.1 (using -N option).surefire-2.10/maven-surefire-plugin/src/site/apt/examples/0000755000175000017500000000000011645102474022411 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/site/apt/examples/single-test.apt.vm0000644000175000017500000000544611605550556026013 0ustar tonytony ------ Running a Single Test ------ Allan Ramirez Olivier Lamy ------ 2011-02-26 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Running a Single Test #{if}(${project.artifactId}=="maven-surefire-plugin") During development, you may run a single test class repeatedly. To run this through Maven, set the <<>> property to a specific test case. +---+ mvn -Dtest=TestCircle test +---+ The value for the <<>> parameter is the name of the test class (without the extension; we'll strip off the extension if you accidentally provide one). #{else} During development, you may run a single test class repeatedly. To run this through Maven, set the <<>> property to a specific test case. +---+ mvn -Dit.test=ITCircle verify +---+ The value for the <<>> parameter is the name of the test class (without the extension; we'll strip off the extension if you accidentally provide one). #{end} You may also use patterns to run a number of tests: #{if}(${project.artifactId}=="maven-surefire-plugin") +---+ mvn -Dtest=TestCi*le test +---+ #{else} +---+ mvn -Dit.test=ITCi*le verify +---+ #{end} And you may use multiple names/patterns, separated by commas: #{if}(${project.artifactId}=="maven-surefire-plugin") +---+ mvn -Dtest=TestSquare,TestCi*le test +---+ #{else} +---+ mvn -Dit.test=ITSquare,ITCi*le verify +---+ #{end} Running a set of methods in a Single Test Class With version 2.7.3, you can run only n tests in a single Test Class. << NOTE : it's supported for junit 4.x and TestNG. >> You must use the following syntax #{if}(${project.artifactId}=="maven-surefire-plugin") +---+ mvn -Dtest=TestCircle#mytest test +---+ #{else} +---+ mvn -Dit.test=ITCircle#mytest verify +---+ #{end} You can use patterns too #{if}(${project.artifactId}=="maven-surefire-plugin") +---+ mvn -Dtest=TestCircle#test* test +---+ #{else} +---+ mvn -Dit.test=ITCircle#test* verify +---+ #{end} surefire-2.10/maven-surefire-plugin/src/site/apt/examples/providers.apt.vm0000644000175000017500000000474011602065600025552 0ustar tonytony ------ Selecting providers ------ Kristian Rosenvold ------ 2010-12-04 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Selecting providers * Selecting a provider Surefire normally automatically selects which test-framework provider to use based on the version of TestNG/JUnit present in your project's classpath. In some cases it may be desirable to manually override such a selection. This can be done by adding the required provider as a dependency to the surefire-plugin. The following example shows how to force the junit 4.7 provider: +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} org.apache.maven.surefire surefire-junit47 ${project.version} [...] +---+ The providers supplied with surefire are surefire-junit3, surefire-junit4, surefire-junit47 and surefire-testng. Please note that forcing a provider still requires that the test framework is properly set up on your project classpath. You can also specify multiple providers as dependencies, and they will all be run and produce a common report. This may be especially handy with external providers, since there are few use-cases for combining the included providers. surefire-2.10/maven-surefire-plugin/src/site/apt/examples/debugging.apt.vm0000644000175000017500000000573311605575550025510 0ustar tonytony ------ Debugging Tests ------ Dan Fabulich ------ 2010-01-09 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Debugging Tests Sometimes you need to debug the tests exactly as Maven ran them. Here's how! Forked Tests By default, Maven runs your tests in a separate ("forked") process. You can use the <<>> property to debug your forked tests remotely, like this: #{if}(${project.artifactId}=="maven-surefire-plugin") +---+ mvn -Dmaven.${thisPlugin.toLowerCase()}.debug test +---+ #{else} +---+ mvn -Dmaven.${thisPlugin.toLowerCase()}.debug verify +---+ #{end} The tests will automatically pause and await a remote debugger on port 5005. You can then attach to the running tests using Eclipse. You can setup a "Remote Java Application" launch configuration via the menu command "Run" > "Open Debug Dialog..." If you need to configure a different port, you may pass a more detailed value. For example, the command below will use port 8000 instead of port 5005. #{if}(${project.artifactId}=="maven-surefire-plugin") +---+ mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djava.compiler=NONE" test +---+ #{else} +---+ mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djava.compiler=NONE" verify +---+ #{end} Non-forked Tests You can force Maven not to fork tests by configuring the <<>> configuration parameter. #{if}(${project.artifactId}=="maven-surefire-plugin") +---+ mvn -DforkMode=never test +---+ #{else} +---+ mvn -DforkMode=never verify +---+ #{end} Then all you need to do is debug Maven itself. Since Maven 2.0.8, Maven has shipped with a "mvnDebug" shell script that you can use to launch Maven with convenient debugging options: #{if}(${project.artifactId}=="maven-surefire-plugin") +---+ mvnDebug -DforkMode=never test +---+ #{else} +---+ mvnDebug -DforkMode=never verify +---+ #{end} Then you can attach Eclipse to Maven itself, which may be easier/more convenient than debugging the forked executable.surefire-2.10/maven-surefire-plugin/src/site/apt/examples/class-loading.apt.vm0000644000175000017500000002063111602114264026253 0ustar tonytony ------ Classloading and Forking ------ Dan Fabulich ------ 2010-01-09 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Classloading and Forking in Maven Surefire This page discusses classloading and forking under Maven Surefire which is a shared component used by both the Surefire and Failsafe Maven plugins, with an eye towards troubleshooting problems. * Executive Summary If you're having problems, you'll probably want to tinker with these three settings: <<>>, <<>>, and <<>>. * What problem does the Maven Surefire project solve? Initially, the problem seems simple enough. Just launch Java with a classpath, like this: +---+ java -classpath foo.jar:bar.jar MyApp +---+ But there's a problem here: on some operating systems (Windows), there's a limit on how long you can make your command line, and therefore a limit on how long you can make your classpath. The limit is different on different versions of Windows; in some versions only a few hundred characters are allowed, in others a few thousand, but the limit can be pretty severe in either case. * Update for Maven Surefire 2.8.2 It turns out setting the CLASSPATH as an environment variable may remove most of the practical length limitations, as documented in http://jira.codehaus.org/browse/SUREFIRE-727. This means most of the length-related problems in this article may be outdated. * How do people solve this problem in general? There are two "tricks" you can use to workaround this problem; both of them can cause other problems in some cases. 1. <>: One workaround is to use an isolated classloader. Instead of launching MyApp directly, we can launch some other app (a "booter") with a much shorter classpath. We can then create a new java.lang.ClassLoader (usually a java.net.URLClassLoader) with your classpath configured. The booter can then load up MyApp from the classloader; when MyApp refers to other classes, they will be automatically loaded from our isolated classloader. The problem with using an isolated classloader is that your classpath isn't correct, and some apps can detect this and object. For example, the system property <<>> won't include your jars; if your app notices this, it could cause a problem. There's another similar problem with using an isolated classloader: any class may call the static method <<>> and attempt to load classes out of that classloader, instead of using the default classloader. Classes often do this if they need to create classloaders of their own. Unfortunately, Java-based web application servers like Jetty, Tomcat, BEA WebLogic and IBM WebSphere are very likely to try to escape the confines of an isolated classloader. 2. <>: Another workaround is to use a "manifest-only jar." In this case, you create a temporary jar that's almost completely empty, except for a META-INF/MANIFEST.MF file. Java manifests can contain attributes that the Java VM will honor as directives; for example, you can have a "Class-Path" attribute, which contains a list of other jars to add to the classpath. So then you can run your code like this: +---+ java -classpath booter.jar MyApp +---+ This is a bit more realistic, because in this case the system classloader, the thread context classloader and the default classloader are all the same; there's no possibility of "escaping" the classloader. But this is still a weird simulation of a "normal" classpath, and it's still possible for apps to notice this. Again, <<>> may not be what you'd expect ("why does it contain only one jar?"). Additionally, it's possible to query the system classloader to get the list of jars back out of it; your app may be confused if it finds only our <<>> there! * Advantages/Disadvantages of each solution If your app tries to interrogate its own classloader for a list of jars, it may work better under an isolated classloader than it would with a manifest-only jar. However, if your app tries to escape its default classloader, it may not work under an isolated classloader at all. One advantage of using an isolated classloader is that it's the only way to use an isolated classloader without forking a separate process, running all of the tests in the same process as Maven itself. But that itself can be pretty risky, especially if Maven is running embedded in your IDE! Finally, of course, you could just try to wire up a plain old Java classpath and hope it's short enough. The worst case there is that your classpath might work on some machines and not others. Windows boxes would behave differently from Linux boxes; users with short user names might have more success than users with long user names, etc. For this reason, we chose not to make the basic classpath the default, though we do provide it as an option (mostly as a last resort). * What does Maven Surefire do? Surefire provides a mechanism for using multiple strategies. The main parameter that determines this is called <<>>. If <<>> is <<>>, then we use a manifest-only JAR; otherwise, we use an isolated classloader. If you want to use a basic plain old Java classpath, you can set <<>> which only has an effect when <<>>. The default value for <<>> changed between Surefire 2.3 and Surefire 2.4, which was a pretty significant change. In Surefire 2.3, <<>> was <<>> by default, and we used an isolated classloader. In Surefire 2.4, <<>> is <<>> by default. No value works for everyone, but we think this default is an improvement; a bunch of hard-to-diagnose bugs get better when we <<>>. Unfortunately, if <<>> is set incorrectly for your app, you're going to have a problem on your hands that can be quite difficult to diagnose. You might even be forced to read a long doc page like this one. ;-) If you're having problems loading classes, try setting <<>> to see if that helps. You can do that with the POM snippet below, or by setting <<<-Dsurefire.useSystemClassLoader=false>>>. If that doesn't work, try setting <<>> back to <<>> and setting <<>> to <<>>. +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} false [...] +---+ * Debugging Classpath Problems If you've read this far, you're probably fully equipped to diagnose problems that may occur during classloading. Here's some general tips to try: * Run mvn with --debug (aka -X) to get more detailed output * Check your <<>>. If <<>>, it's impossible to use the system classloader or a plain old Java classpath; we have to use an isolated classloader. * If you're using the defaults, <<>> and <<>>. In that case, look at the generated manifest-only Surefire booter JAR. Open it up (it's just a zip) and read its manifest. * Run mvn with -Dmaven.${thisPlugin.toLowerCase()}.debug, and attach to the running process with a debugger.surefire-2.10/maven-surefire-plugin/src/site/apt/examples/skipping-test.apt.vm0000644000175000017500000000602011602115375026334 0ustar tonytony ------ Skipping Test ------ Johnny Ruiz Brett Porter Allan Ramirez ------ July 2006 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Skipping Tests To skip running the tests for a particular project, set the <> property to <>. +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} true [...] +---+ You can also skip the tests via command line by executing the following command: +---+ mvn install -DskipTests +---+ #{if}(${project.artifactId}=="maven-failsafe-plugin") Since <<>> is also followed by the ${thatPlugin} Plugin, this will have the effect of not running any tests. If, instead, you want to skip only the integration tests being run by the ${thisPlugin} Plugin, you would use the <<>> property +---+ mvn install -DskipITs +---+ #{end} If you absolutely must, you can also use the <<>> property to skip compiling the tests. <<>> is honored by Surefire, Failsafe and the Compiler Plugin. +---+ mvn install -Dmaven.test.skip=true +---+ Skipping by default If you want to skip tests by default but want the ability to re-enable tests from the command line, you need to go via a properties section in the pom: +---+ [...] true [...] ${project.groupId} ${project.artifactId} ${project.version} ${skipTests} [...] +---+ This will allow you to run with tests disabled by default and to run them with this command: +---+ mvn install -DskipTests=false +---+ The same can be done with the "skip" parameter and other booleans on the plugin. surefire-2.10/maven-surefire-plugin/src/site/apt/examples/configuring-classpath.apt.vm0000644000175000017500000001073311602114264030027 0ustar tonytony ------ Configuring the Classpath ------ Pascal Lambert ------ 2010-01-09 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html The Default Classpath The surefire plugin builds the test classpath in the following order: #{if}(${project.artifactId}=="maven-surefire-plugin") [[1]] The {{{../test-mojo.html#testClassesDirectory}test-classes}} directory [[2]] The {{{../test-mojo.html#classesDirectory}classes}} directory #{else} [[1]] The {{{../integration-test-mojo.html#testClassesDirectory}test-classes}} directory [[2]] The {{{../integration-test-mojo.html#classesDirectory}classes}} directory #{end} [[3]] The project dependencies [[4]] Additional classpath elements Additional Classpath Elements If you need to put more stuff in your classpath when ${thisPlugin} executes (e.g some funky resources or a container specific JAR), we normally recommend you add it to your classpath as a dependency. Consider deploying shared jars to a private remote repository for your organization. But, if you must, you can use the <<>> element to add custom resources/jars to your classpath. This will be treated as an absolute file system path, so you may want use $\{basedir\} or another property combined with a relative path. Note that additional classpath elements are added to the end of the classpath, so you cannot use these to override project dependencies or resources. +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} path/to/additional/resources path/to/additional/jar [...] +---+ Removing Dependency Classpath Elements Dependencies can be removed from the test classpath using the parameters <<>> and <<>>. A list of specific dependencies can be removed from the classpath by specifying the groupId:artifactId to be removed. +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} org.apache.commons:commons-email [...] +---+ Dependencies under a certain scope can be removed from the classpath using <<>>. The valid values for the dependency scope exclude are defined by <<>>. * <> - system, provided, compile * <> - compile, runtime * <> - system, provided, compile, runtime, test +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} runtime [...] +---+ surefire-2.10/maven-surefire-plugin/src/site/apt/examples/inclusion-exclusion.apt.vm0000644000175000017500000001065411602114264027551 0ustar tonytony ------ Inclusions and Exclusions of Tests ------ Allan Ramirez ------ 2010-01-09 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Inclusions and Exclusions of Tests * Inclusions By default, the ${thisPlugin} Plugin will automatically include all test classes with the following wildcard patterns: #{if}(${project.artifactId}=="maven-surefire-plugin") * <"**/Test*.java"> - includes all of its subdirectories and all java filenames that start with "Test". * <"**/*Test.java"> - includes all of its subdirectories and all java filenames that end with "Test". * <"**/*TestCase.java"> - includes all of its subdirectories and all java filenames that end with "TestCase". #{else} * <"**/IT*.java"> - includes all of its subdirectories and all java filenames that start with "IT". * <"**/*IT.java"> - includes all of its subdirectories and all java filenames that end with "IT". * <"**/*ITCase.java"> - includes all of its subdirectories and all java filenames that end with "ITCase". #{end} [] If the test classes does not go with the naming convention, then configure ${thisPlugin} Plugin and specify the tests you want to include. +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} Sample.java [...] +---+ * Exclusions There are certain times when some tests are causing the build to fail. Excluding them is one of the best workarounds to continue the build. Exclusions can be done by configuring the <> property of the plugin. #{if}(${project.artifactId}=="maven-surefire-plugin") +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} **/TestCircle.java **/TestSquare.java [...] +---+ #{else} +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} **/CircleIT.java **/SquareIT.java [...] +---+ #{end} * Regular expression support An include/exclude pattern can be an ant-style path expression, but regular expressions are also supported through this syntax: +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} %regex[.*[Cat|Dog].*Test.*] [...] +---+ Note the syntax %regex[expr], where expr is the actual expression and the rest is just wrapping. Also note that regex matches are done over .class files and not .java files.surefire-2.10/maven-surefire-plugin/src/site/apt/examples/junit.apt.vm0000644000175000017500000001626611602115375024701 0ustar tonytony ------ Using JUnit ------ Kristian Rosenvold ------ 2010-10-10 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Using JUnit * Configuring JUnit To get started with JUnit, you need to add the required version of JUnit to your project: +---+ [...] junit junit 4.8.1 test [...] +---+ This is the only step that is required to get started - you can now create tests in your test source directory (eg, <<>>). * Different Generations of JUnit support Surefire supports three different generations of JUnit: JUnit 3.8.x, JUnit 4.x (serial provider) and JUnit 4.7 (junit-core provider with parallel support). The provider is selected based on the JUnit version in your project and the configuration parameters (for parallel). * Upgrade check for JUnit 4.x As of Surefire version 2.7, the algorithm for choosing which tests to run has changed. From 2.7 and on, only valid JUnit tests are run for all versions of JUnit, where older versions of the plugin would also run invalid tests that satisfied the naming convention. When upgrading from a Surefire version prior to 2.7, the build can be run with the flag -Dsurefire.junit4.upgradecheck. This will perform a check and notify you of any invalid tests that will not be run with this version of Surefire (and the build fails). This is only meant to be used as a tool when upgrading to check that all expected tests will be run. It is a transitional feature that will be removed in a future version of surefire. * How is the provider chosen ? If nothing is configured, surefire detects which junit version to use by the following algorithm: +---+ if the JUnit version in the project >= 4.7 and the parallel attribute has ANY value use junit47 provider if JUnit >= 4.0 is present use junit4 provider else use junit3.8.1 +---+ Please note that the "else" part of this algorithm is also a FAQ response: You depend on the appropriate version of JUnit being present in the project dependencies, or surefire may choose the wrong provider. If, for instance, one of your dependencies pulls in JUnit 3.8.1 you risk that surefire chooses the 3.8.1 provider, which will not support annotations or any of the 4.x features. Use mvn dependency:tree, pom dependency ordering and/or and exclusion of transitive dependencies to fix this problem. ** Manually specifying a provider You can also manually force a specific provider by adding it as a dependency to ${thisPlugin} itself: +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} org.apache.maven.surefire surefire-junit47 ${project.version} [...] +---+ When using this technique there is no check that the proper test-frameworks are present on your project's classpath. Failing to add the proper test-frameworks will result in a build failure. * Running tests in parallel From JUnit 4.7 and onwards you can run your tests in parallel. To do this, you must set the <<>> parameter, and may change the <<>> or <<>> attribute. For example: +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} methods 10 [...] +---+ If your tests specify any value for the "parallel" attribute and your project uses JUnit 4.7+, your request will be routed to the concurrent JUnit provider, which uses the JUnit JUnitCore testrunner. This is particularly useful for slow tests that can have high concurrency. As of surefire 2.7, no additional dependencies are needed to use the full set of options with parallel. * Using custom listeners and reporters JUnit4/4.7 provider provides support for attaching custom RunListeners to uour tests. You can configure multiple custom listeners like this: +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} listener com.mycompany.MyResultListener,com.mycompany.MyResultListener2 [...] +---+ * Using a security manager (JUnit3 only) As long as forkMode!=never and you use JUnit3, you can run your tests with a java security manager active. The classname of the security manager must be sent as a system property variable to the JUnit3 provider. JUnit4 uses mechanisms internally that are not compatible with the tested security managers and is not supported by surefire. +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} java.lang.SecurityManager [...] +---+ * Using a security manager (All providers) Alternatively you can define a policy file that allows all providers to run with surefire and send them using the argLine parameter and two system properties; +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} -Djava.security.manager -Djava.security.policy=${basedir}/src/test/resources/java.policy [...] +---+ The disadvantage of this solution is that the policy changes will affect the tests too, which make the security environment less realistic. For more information on JUnit, see the {{{http://www.junit.org}JUnit web site}}. surefire-2.10/maven-surefire-plugin/src/site/apt/examples/system-properties.apt.vm0000644000175000017500000000722011605550556027263 0ustar tonytony ------ Using System Properties ------ Allan Ramirez Dan Tran ------ 2010-01-09 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Using System Properties There are two ways to add a list of system properties to ${thisPlugin}: * systemPropertyVariables This configuration is the replacement of the deprecated <<>>. It can accept any value from Maven's properties that can be converted <>. +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} propertyValue \${project.build.directory} [...] [...] +---+ * systemProperties ( deprecated ) +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} propertyName propertyValue [...] [...] +---+ Take note that only <> properties can be passed as system properties. Any attempt to pass any other Maven variable type (i.e. <<>> or a <<>> variable) will cause the variable expression to be passed literally (unevaluated). So having the example below: +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} buildDir \${project.build.outputDirectory} [...] +---+ will literally pass <<$\{project.build.outputDirectory\}>> because the value of that expression is a <<>>, not a <<>>. To inherit the "systemProperties" collection from the parent configuration, you will need to specify combine.children="append" on the systemProperties node in the child pom: +---+ [...] +---+ surefire-2.10/maven-surefire-plugin/src/site/apt/examples/pojo-test.apt.vm0000644000175000017500000000342511602114264025461 0ustar tonytony ------ Using POJO tests ------ Christian Gruber ------ May 2008 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Defining a POJO Test POJO tests look very much like JUnit or TestNG tests, though they do not require dependencies on these artifacts. A test class should be named <<<**/*Test>>> and should contain <<>> methods which will each be executed by surefire. Validating assertions can be done using the JDK 1.4 <<>> keyword. Simultaneous test execution is not possible with POJO tests. Fixture can be setup before and after each <<>> method by implementing a set-up and a tear-down method. These methods must match these signatures to be recognized and executed before and after each test method. +---+ public void setUp(); public void tearDown(); +---+ These fixture methods can also throw any exception and will still be valid. surefire-2.10/maven-surefire-plugin/src/site/apt/examples/testng.apt.vm0000644000175000017500000001507211605550556025055 0ustar tonytony ------ Using TestNG ------ Brett Porter ------ 2010-01-09 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Using TestNG * Configuring TestNG To get started with TestNG, include the following dependency in your project (replacing the version with the one you wish to use): +---+ [...] org.testng testng 5.12.1 test [...] +---+ If you are using an older version of TestNG (\<= 5.11), the dependency would instead look like this: +---+ [...] org.testng testng 5.8 test jdk15 [...] +---+ <> if you are using JDK 1.4 Javadoc annotations for your TestNG tests, replace the classifier <<>> with <<>> above. #{if}(${project.artifactId}=="maven-surefire-plugin") This is the only step that is required to get started - you can now create tests in your test source directory (eg, <<>>. As long as they are named using the defaults such as <<<*Test.java>>> they will be run by ${thisPlugin} as TestNG tests. #{else} This is the only step that is required to get started - you can now create tests in your test source directory (eg, <<>>. As long as they are named using the defaults such as <<<*IT.java>>> they will be run by ${thisPlugin} as TestNG tests. #{end} If you'd like to use a different naming scheme, you can change the <<>> parameter, as discussed in the {{{./inclusion-exclusion.html}Inclusions and Exclusions of Tests}} example. * Using Suite XML Files Another alternative is to use TestNG suite XML files. This allows flexible configuration of the tests to be run. These files are created in the normal way, and then added to the ${thisPlugin} Plugin configuration: +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} testng.xml [...] +---+ This configuration will override the includes and excludes patterns and run all tests in the suite files. * Specifying Test Parameters Your TestNG test can accept parameters with the @Parameters annotation. You can also pass parameters from Maven into your TestNG test, by specifying them as system properties, like this: +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} firefox [...] +---+ For more information about setting system properties in ${thisPlugin} tests, see {{{./system-properties.html}System Properties}}. * Using Groups TestNG allows you to group your tests. You can then execute one or more specific groups. To do this with ${thisPlugin}, use the <<>> parameter, for example: +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} functest,perftest [...] +---+ Likewise, the <<>> parameter can be used to run all but a certain set of groups. * Running tests in parallel TestNG allows you to run your tests in parallel, including JUnit tests. To do this, you must set the <<>> parameter, and may change the <<>> parameter if the default of 5 is not sufficient. For example: +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} methods 10 [...] +---+ This is particularly useful for slow tests that can have high concurrency, or to quickly and roughly assess the independance and thread safety of your tests and code. * Using custom listeners and reporters TestNG provides support for attaching custom listeners, reporters, annotation transformers and method interceptors to your tests. By default, TestNG attaches a few basic listeners to generate HTML and XML reports. You can configure multiple custom listeners like this: +---+ [...] ${project.groupId} ${project.artifactId} ${project.version} usedefaultlisteners false listener com.mycompany.MyResultListener,com.mycompany.MyAnnotationTransformer,com.mycompany.MyMethodInterceptor reporter listenReport.Reporter [...] +---+ For more information on TestNG, see the {{{http://www.testng.org}TestNG web site}}. surefire-2.10/maven-surefire-plugin/src/site/apt/api.apt.vm0000644000175000017500000000510511602114264022465 0ustar tonytony ------ Provider API ------ Kristian Rosenvold ------ 2010-12-09 ------ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Maven Surefire Provider API As of version 2.7 of surefire, there is a proposed public api available for external providers to use surefire features. The key features of surefire are forking, reporting and directory/classpath scanning. The remaining features are implemented in the providers. Please note that this API is still subject to change until otherwise declared, even in minor revisions. This would mostly happen to facilitate needs in new providers. * Requirements for a provider There are three things any provider must fulfill: * A provider must implement the org.apache.maven.surefire.providerapi.SurefireProvider interface. * A provider contains a META-INF/services file entry named org.apache.maven.surefire.providerapi.SurefireProvider ( as per {{{http://download.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html}ServiceLoader}}). This file contains the name of the actual provider class. * The actual provider class contains a one-arg constructor that accepts an instance of org.apache.maven.surefire.providerapi.ProviderParameters. This interface delivers all the surefire feature to the provider implementation, please see the javadoc of this interface for options. There are 4 well-known providers within surefire that are also implemented this way, so examples can be found by looking at the surefire source code itself. surefire-junit47 is the showcase implementation. The javadoc on the intefaces mentioned in this article should otherwise be sufficient to write a provider. Providers are added as dependencies to the surefire/failsafe plugins. surefire-2.10/maven-surefire-plugin/src/site/fml/0000755000175000017500000000000011645102474020565 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/site/fml/faq.fml0000644000175000017500000000415411605576241022043 0ustar tonytony What is the difference between maven-failsafe-plugin and maven-surefire-plugin?

maven-surefire-plugin is designed for running unit tests and if any of the tests fail then it will fail the build immediately.

maven-failsafe-plugin is designed for running integration tests, and decouples failing the build if there are test failures from actually running the tests.

How can I reuse my test code in other modules?

Visit this link for your reference, Attaching tests

surefire-2.10/maven-surefire-plugin/src/main/0000755000175000017500000000000011645102474017767 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/main/java/0000755000175000017500000000000011645102474020710 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/main/java/org/0000755000175000017500000000000011645102474021477 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/main/java/org/apache/0000755000175000017500000000000011645102474022720 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/main/java/org/apache/maven/0000755000175000017500000000000011645102474024026 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/main/java/org/apache/maven/test/0000755000175000017500000000000011645102474025005 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/main/java/org/apache/maven/test/SurefirePlugin.java0000644000175000017500000000226510567521075030624 0ustar tonytonypackage org.apache.maven.test; /* * 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. */ /** * Run tests using Surefire * * @author Jason van Zyl * @version $Id: SurefirePlugin.java 510866 2007-02-23 08:13:49Z brett $ * @see org.apache.maven.plugin.surefire.SurefirePlugin * @deprecated use org.apache.maven.plugins.surefire.SurefirePlugin instead */ public class SurefirePlugin extends org.apache.maven.plugin.surefire.SurefirePlugin { } surefire-2.10/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/0000755000175000017500000000000011645102474025324 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/0000755000175000017500000000000011645102474027150 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.javasurefire-2.10/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.ja0000644000175000017500000010511311604702065032425 0ustar tonytonypackage org.apache.maven.plugin.surefire; /* * 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. */ import java.io.File; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactResolver; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugin.surefire.booterclient.ChecksumCalculator; import org.apache.maven.project.MavenProject; import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.toolchain.ToolchainManager; import org.codehaus.plexus.util.StringUtils; /** * Run tests using Surefire. * * @author Jason van Zyl * @version $Id: SurefirePlugin.java 1143207 2011-07-05 21:37:57Z pgier $ * @requiresDependencyResolution test * @goal test * @phase test * @threadSafe * @noinspection JavaDoc */ public class SurefirePlugin extends AbstractSurefireMojo implements SurefireReportParameters { /** * Set this to "true" to skip running tests, but still compile them. Its use is NOT RECOMMENDED, but quite * convenient on occasion. * * @parameter default-value="false" expression="${skipTests}" * @since 2.4 */ private boolean skipTests; /** * This old parameter is just like skipTests, but bound to the old property "maven.test.skip.exec". * * @parameter expression="${maven.test.skip.exec}" * @since 2.3 * @deprecated Use skipTests instead. */ private boolean skipExec; /** * Set this to "true" to bypass unit tests entirely. Its use is NOT RECOMMENDED, especially if you enable it using * the "maven.test.skip" property, because maven.test.skip disables both running the tests and compiling the tests. * Consider using the skipTests parameter instead. * * @parameter default-value="false" expression="${maven.test.skip}" */ private boolean skip; /** * Set this to "true" to ignore a failure during testing. Its use is NOT RECOMMENDED, but quite convenient on * occasion. * * @parameter default-value="false" expression="${maven.test.failure.ignore}" */ private boolean testFailureIgnore; /** * The base directory of the project being tested. This can be obtained in your unit test via * System.getProperty("basedir"). * * @parameter default-value="${basedir}" */ private File basedir; /** * The directory containing generated test classes of the project being tested. This will be included at the * beginning of the test classpath. * * * @parameter default-value="${project.build.testOutputDirectory}" */ private File testClassesDirectory; /** * The directory containing generated classes of the project being tested. This will be included after the test * classes in the test classpath. * * @parameter default-value="${project.build.outputDirectory}" */ private File classesDirectory; /** * The Maven Project Object. * * @parameter default-value="${project}" * @readonly */ private MavenProject project; /** * List of dependencies to exclude from the test classpath. Each dependency string must follow the format * groupId:artifactId. For example: org.acme:project-a * * @parameter * @since 2.6 */ private List classpathDependencyExcludes; /** * A dependency scope to exclude from the test classpath. The scope can be one of the following scopes: *

*

    *
  • compile - system, provided, compile *
  • runtime - compile, runtime *
  • test - system, provided, compile, runtime, test *
* * @parameter default-value="" * @since 2.6 */ private String classpathDependencyScopeExclude; /** * Additional elements to be appended to the classpath. * * @parameter * @since 2.4 */ private List additionalClasspathElements; /** * Base directory where all reports are written to. * * @parameter default-value="${project.build.directory}/surefire-reports" */ private File reportsDirectory; /** * The test source directory containing test class sources. * * @parameter default-value="${project.build.testSourceDirectory}" * @required * @since 2.2 */ private File testSourceDirectory; /** * Specify this parameter to run individual tests by file name, overriding the includes/excludes * parameters. Each pattern you specify here will be used to create an include pattern formatted like * **/${test}.java, so you can just type "-Dtest=MyTest" to run a single test called * "foo/MyTest.java".
* This parameter overrides the includes/excludes parameters, and the TestNG suiteXmlFiles * parameter. *

* since 2.7.3 You can execute a limited number of method in the test with adding #myMethod or #my*ethod. Si type * "-Dtest=MyTest#myMethod" supported for junit 4.x and testNg * * @parameter expression="${test}" */ private String test; /** * A list of <include> elements specifying the tests (by pattern) that should be included in testing. When not * specified and when the test parameter is not specified, the default includes will be
* <includes>
*  <include>**/Test*.java</include>
*  <include>**/*Test.java</include>
*  <include>**/*TestCase.java</include>
* </includes>
*
This parameter is ignored if the TestNG suiteXmlFiles parameter is specified. * * @parameter */ private List includes; /** * A list of <exclude> elements specifying the tests (by pattern) that should be excluded in testing. When not * specified and when the test parameter is not specified, the default excludes will be
* <excludes>
*  <exclude>**/*$*</exclude>
* </excludes>
*
(which excludes all inner classes).
* This parameter is ignored if the TestNG suiteXmlFiles parameter is specified. * * @parameter */ private List excludes; /** * ArtifactRepository of the localRepository. To obtain the directory of localRepository in unit tests use * System.getProperty("localRepository"). * * @parameter expression="${localRepository}" * @required * @readonly */ private ArtifactRepository localRepository; /** * List of System properties to pass to the JUnit tests. * * @parameter * @deprecated Use systemPropertyVariables instead. */ private Properties systemProperties; /** * List of System properties to pass to the JUnit tests. * * @parameter * @since 2.5 */ private Map systemPropertyVariables; /** * List of System properties, loaded from a file, to pass to the JUnit tests. * * @parameter * @since 2.8.2 */ private File systemPropertiesFile; /** * List of properties for configuring all TestNG related configurations. This is the new preferred method of * configuring TestNG. * * @parameter * @since 2.4 */ private Properties properties; /** * Map of plugin artifacts. * * @parameter expression="${plugin.artifactMap}" * @required * @readonly */ private Map pluginArtifactMap; /** * Map of project artifacts. * * @parameter expression="${project.artifactMap}" * @required * @readonly */ private Map projectArtifactMap; /** * Option to print summary of test suites or just print the test cases that have errors. * * @parameter expression="${surefire.printSummary}" default-value="true" */ private boolean printSummary; /** * Selects the formatting for the test report to be generated. Can be set as "brief" or "plain". * * @parameter expression="${surefire.reportFormat}" default-value="brief" */ private String reportFormat; /** * Add custom text into report filename: TEST-testClassName-reportNameSuffix.xml, * testClassName-reportNameSuffix.txt and testClassName-reportNameSuffix-output.txt. * File TEST-testClassName-reportNameSuffix.xml has changed attributes 'testsuite'--'name' * and 'testcase'--'classname' - reportNameSuffix is added to the attribute value. * * @parameter expression="${surefire.reportNameSuffix}" default-value="" */ private String reportNameSuffix; /** * Option to generate a file test report or just output the test report to the console. * * @parameter expression="${surefire.useFile}" default-value="true" */ private boolean useFile; /** * Set this to "true" to redirect the unit test standard output to a file (found in * reportsDirectory/testName-output.txt). * * @parameter expression="${maven.test.redirectTestOutputToFile}" default-value="false" * @since 2.3 */ private boolean redirectTestOutputToFile; /** * Set this to "true" to cause a failure if there are no tests to run. Defaults to "false". * * @parameter expression="${failIfNoTests}" * @since 2.4 */ private Boolean failIfNoTests; /** * Option to specify the forking mode. Can be "never", "once" or "always". "none" and "pertest" are also accepted * for backwards compatibility. "always" forks for each test-class. * * @parameter expression="${forkMode}" default-value="once" * @since 2.1 */ private String forkMode; /** * Option to specify the jvm (or path to the java executable) to use with the forking options. For the default, the * jvm will be a new instance of the same VM as the one used to run Maven. JVM settings are not inherited from * MAVEN_OPTS. * * @parameter expression="${jvm}" * @since 2.1 */ private String jvm; /** * Arbitrary JVM options to set on the command line. * * @parameter expression="${argLine}" * @since 2.1 */ private String argLine; /** * Attach a debugger to the forked JVM. If set to "true", the process will suspend and wait for a debugger to attach * on port 5005. If set to some other string, that string will be appended to the argLine, allowing you to configure * arbitrary debuggability options (without overwriting the other options specified through the argLine * parameter). * * @parameter expression="${maven.surefire.debug}" * @since 2.4 */ private String debugForkedProcess; /** * Kill the forked test process after a certain number of seconds. If set to 0, wait forever for the process, never * timing out. * * @parameter expression="${surefire.timeout}" * @since 2.4 */ private int forkedProcessTimeoutInSeconds; /** * Additional environment variables to set on the command line. * * @parameter * @since 2.1.3 */ private Map environmentVariables = new HashMap(); /** * Command line working directory. * * @parameter expression="${basedir}" * @since 2.1.3 */ private File workingDirectory; /** * When false it makes tests run using the standard classloader delegation instead of the default Maven isolated * classloader. Only used when forking (forkMode is not "none").
* Setting it to false helps with some problems caused by conflicts between xml parsers in the classpath and the * Java 5 provider parser. * * @parameter expression="${childDelegation}" default-value="false" * @since 2.1 */ private boolean childDelegation; /** * (TestNG only) Groups for this test. Only classes/methods/etc decorated with one of the groups specified here will * be included in test run, if specified.
* This parameter is ignored if the suiteXmlFiles parameter is specified. * * @parameter expression="${groups}" * @since 2.2 */ private String groups; /** * (TestNG only) Excluded groups. Any methods/classes/etc with one of the groups specified in this list will * specifically not be run.
* This parameter is ignored if the suiteXmlFiles parameter is specified. * * @parameter expression="${excludedGroups}" * @since 2.2 */ private String excludedGroups; /** * (TestNG only) List of <suiteXmlFile> elements specifying TestNG suite xml file locations. Note that * suiteXmlFiles is incompatible with several other parameters of this plugin, like * includes/excludes.
* This parameter is ignored if the test parameter is specified (allowing you to run a single test * instead of an entire suite). * * @parameter * @since 2.2 */ private File[] suiteXmlFiles; /** * Allows you to specify the name of the JUnit artifact. If not set, junit:junit will be used. * * @parameter expression="${junitArtifactName}" default-value="junit:junit" * @since 2.3.1 */ private String junitArtifactName; /** * Allows you to specify the name of the TestNG artifact. If not set, org.testng:testng will be used. * * @parameter expression="${testNGArtifactName}" default-value="org.testng:testng" * @since 2.3.1 */ private String testNGArtifactName; /** * (TestNG/JUnit 4.7 provider only) The attribute thread-count allows you to specify how many threads should be * allocated for this execution. Only makes sense to use in conjunction with the parallel parameter. * * @parameter expression="${threadCount}" * @since 2.2 */ private int threadCount; /** * (JUnit 4.7 provider) Indicates that threadCount is per cpu core. * * @parameter expression="${perCoreThreadCount}" default-value="true" * @since 2.5 */ private boolean perCoreThreadCount; /** * (JUnit 4.7 provider) Indicates that the thread pool will be unlimited. The parallel parameter and * the actual number of classes/methods will decide. Setting this to "true" effectively disables * perCoreThreadCount and threadCount. Defaults to "false". * * @parameter expression="${useUnlimitedThreads}" default-value="false" * @since 2.5 */ private boolean useUnlimitedThreads; /** * (TestNG only) When you use the parallel attribute, TestNG will try to run all your test methods in * separate threads, except for methods that depend on each other, which will be run in the same thread in order to * respect their order of execution. *

* (JUnit 4.7 provider) Supports values "classes"/"methods"/"both" to run in separate threads, as controlled by * threadCount. * * @parameter expression="${parallel}" * @since 2.2 */ private String parallel; /** * Whether to trim the stack trace in the reports to just the lines within the test, or show the full trace. * * @parameter expression="${trimStackTrace}" default-value="true" * @since 2.2 */ private boolean trimStackTrace; /** * Resolves the artifacts needed. * * @component */ private ArtifactResolver artifactResolver; /** * Creates the artifact. * * @component */ private ArtifactFactory artifactFactory; /** * The remote plugin repositories declared in the POM. * * @parameter expression="${project.pluginArtifactRepositories}" * @since 2.2 */ private List remoteRepositories; /** * For retrieval of artifact's metadata. * * @component */ private ArtifactMetadataSource metadataSource; private Properties originalSystemProperties; /** * systemPropertyVariables + systemProperties */ private Properties internalSystemProperties = new Properties(); /** * Flag to disable the generation of report files in xml format. * * @parameter expression="${disableXmlReport}" default-value="false" * @since 2.2 */ private boolean disableXmlReport; /** * Option to pass dependencies to the system's classloader instead of using an isolated class loader when forking. * Prevents problems with JDKs which implement the service provider lookup mechanism by using the system's * classloader. * * @parameter expression="${surefire.useSystemClassLoader}" default-value="true" * @since 2.3 */ private boolean useSystemClassLoader; /** * By default, Surefire forks your tests using a manifest-only JAR; set this parameter to "false" to force it to * launch your tests with a plain old Java classpath. (See * http://maven.apache.org/plugins/maven-surefire-plugin/examples/class-loading.html for a more detailed explanation * of manifest-only JARs and their benefits.) *

* Beware, setting this to "false" may cause your tests to fail on Windows if your classpath is too long. * * @parameter expression="${surefire.useManifestOnlyJar}" default-value="true" * @since 2.4.3 */ private boolean useManifestOnlyJar; /** * By default, Surefire enables JVM assertions for the execution of your test cases. To disable the assertions, set * this flag to "false". * * @parameter expression="${enableAssertions}" default-value="true" * @since 2.3.1 */ private boolean enableAssertions; /** * The current build session instance. * * @parameter expression="${session}" * @required * @readonly */ private MavenSession session; /** * (TestNG only) Define the factory class used to create all test instances. * * @parameter expression="${objectFactory}" * @since 2.5 */ private String objectFactory; /** * @parameter default-value="${session.parallel}" * @readonly * @noinspection UnusedDeclaration */ private Boolean parallelMavenExecution; /** * Defines the order the tests will be run in. Supported values are "alphabetical", "reversealphabetical", "random", * "hourly" (alphabetical on even hours, reverse alphabetical on odd hours) and "filesystem". *

*

* Odd/Even for hourly is determined at the time the of scanning the classpath, meaning it could change during a * multi-module build. * * @parameter default-value="filesystem" * @since 2.7 */ private String runOrder; /** * @component */ private ToolchainManager toolchainManager; protected void handleSummary( Summary summary ) throws MojoExecutionException, MojoFailureException { assertNoException( summary ); assertNoFailureOrTimeout( summary ); writeSummary( summary ); } private void assertNoException( Summary summary ) throws MojoExecutionException { if ( !summary.isErrorFree() ) { Exception cause = summary.getFirstException(); throw new MojoExecutionException( cause.getMessage(), cause ); } } private void assertNoFailureOrTimeout( Summary summary ) throws MojoExecutionException { if ( summary.isFailureOrTimeout() ) { throw new MojoExecutionException( "Failure or timeout" ); } } private void writeSummary( Summary summary ) throws MojoFailureException { RunResult result = summary.getResultOfLastSuccessfulRun(); SurefireHelper.reportExecution( this, result, getLog() ); } protected boolean isSkipExecution() { return isSkip() || isSkipTests() || isSkipExec(); } protected String getPluginName() { return "surefire"; } protected String[] getDefaultIncludes() { return new String[]{"**/Test*.java", "**/*Test.java", "**/*TestCase.java"}; } // now for the implementation of the field accessors public boolean isSkipTests() { return skipTests; } public void setSkipTests( boolean skipTests ) { this.skipTests = skipTests; } /** * @noinspection deprecation */ public boolean isSkipExec() { return skipExec; } /** * @noinspection deprecation */ public void setSkipExec( boolean skipExec ) { this.skipExec = skipExec; } public boolean isSkip() { return skip; } public void setSkip( boolean skip ) { this.skip = skip; } public boolean isTestFailureIgnore() { return testFailureIgnore; } public void setTestFailureIgnore( boolean testFailureIgnore ) { this.testFailureIgnore = testFailureIgnore; } public File getBasedir() { return basedir; } public void setBasedir( File basedir ) { this.basedir = basedir; } public File getTestClassesDirectory() { return testClassesDirectory; } public void setTestClassesDirectory( File testClassesDirectory ) { this.testClassesDirectory = testClassesDirectory; } public File getClassesDirectory() { return classesDirectory; } public void setClassesDirectory( File classesDirectory ) { this.classesDirectory = classesDirectory; } public MavenProject getProject() { return project; } public void setProject( MavenProject project ) { this.project = project; } public List getClasspathDependencyExcludes() { return classpathDependencyExcludes; } public void setClasspathDependencyExcludes( List classpathDependencyExcludes ) { this.classpathDependencyExcludes = classpathDependencyExcludes; } public String getClasspathDependencyScopeExclude() { return classpathDependencyScopeExclude; } public void setClasspathDependencyScopeExclude( String classpathDependencyScopeExclude ) { this.classpathDependencyScopeExclude = classpathDependencyScopeExclude; } public List getAdditionalClasspathElements() { return additionalClasspathElements; } public void setAdditionalClasspathElements( List additionalClasspathElements ) { this.additionalClasspathElements = additionalClasspathElements; } public File getReportsDirectory() { return reportsDirectory; } public void setReportsDirectory( File reportsDirectory ) { this.reportsDirectory = reportsDirectory; } public File getTestSourceDirectory() { return testSourceDirectory; } public void setTestSourceDirectory( File testSourceDirectory ) { this.testSourceDirectory = testSourceDirectory; } public String getTest() { if ( StringUtils.isBlank( test ) ) { return null; } int index = test.indexOf( '#' ); if ( index >= 0 ) { return test.substring( 0, index ); } return test; } /** * @since 2.7.3 */ public String getTestMethod() { if ( StringUtils.isBlank( test ) ) { return null; } int index = this.test.indexOf( '#' ); if ( index >= 0 ) { return this.test.substring( index + 1, this.test.length() ); } return null; } public void setTest( String test ) { this.test = test; } public List getIncludes() { return includes; } public void setIncludes( List includes ) { this.includes = includes; } public List getExcludes() { return excludes; } public void setExcludes( List excludes ) { this.excludes = excludes; } public ArtifactRepository getLocalRepository() { return localRepository; } public void setLocalRepository( ArtifactRepository localRepository ) { this.localRepository = localRepository; } /** * @noinspection deprecation */ public Properties getSystemProperties() { return systemProperties; } /** * @noinspection deprecation */ public void setSystemProperties( Properties systemProperties ) { this.systemProperties = systemProperties; } public Map getSystemPropertyVariables() { return systemPropertyVariables; } public void setSystemPropertyVariables( Map systemPropertyVariables ) { this.systemPropertyVariables = systemPropertyVariables; } public File getSystemPropertiesFile() { return systemPropertiesFile; } public void setSystemPropertiesFile( File systemPropertiesFile ) { this.systemPropertiesFile = systemPropertiesFile; } public Properties getProperties() { return properties; } public void setProperties( Properties properties ) { this.properties = properties; } public Map getPluginArtifactMap() { return pluginArtifactMap; } public void setPluginArtifactMap( Map pluginArtifactMap ) { this.pluginArtifactMap = pluginArtifactMap; } public Map getProjectArtifactMap() { return projectArtifactMap; } public void setProjectArtifactMap( Map projectArtifactMap ) { this.projectArtifactMap = projectArtifactMap; } public boolean isPrintSummary() { return printSummary; } public void setPrintSummary( boolean printSummary ) { this.printSummary = printSummary; } public String getReportFormat() { return reportFormat; } public void setReportFormat( String reportFormat ) { this.reportFormat = reportFormat; } public String getReportNameSuffix() { return reportNameSuffix; } public void setReportNameSuffix( String reportNameSuffix ) { this.reportNameSuffix = reportNameSuffix; } public boolean isUseFile() { return useFile; } public void setUseFile( boolean useFile ) { this.useFile = useFile; } public boolean isRedirectTestOutputToFile() { return redirectTestOutputToFile; } public void setRedirectTestOutputToFile( boolean redirectTestOutputToFile ) { this.redirectTestOutputToFile = redirectTestOutputToFile; } public Boolean getFailIfNoTests() { return failIfNoTests; } public void setFailIfNoTests( Boolean failIfNoTests ) { this.failIfNoTests = failIfNoTests; } public String getForkMode() { return forkMode; } public void setForkMode( String forkMode ) { this.forkMode = forkMode; } public String getJvm() { return jvm; } public void setJvm( String jvm ) { this.jvm = jvm; } public String getArgLine() { return argLine; } public void setArgLine( String argLine ) { this.argLine = argLine; } public String getDebugForkedProcess() { return debugForkedProcess; } public void setDebugForkedProcess( String debugForkedProcess ) { this.debugForkedProcess = debugForkedProcess; } public int getForkedProcessTimeoutInSeconds() { return forkedProcessTimeoutInSeconds; } public void setForkedProcessTimeoutInSeconds( int forkedProcessTimeoutInSeconds ) { this.forkedProcessTimeoutInSeconds = forkedProcessTimeoutInSeconds; } public Map getEnvironmentVariables() { return environmentVariables; } public void setEnvironmentVariables( Map environmentVariables ) { this.environmentVariables = environmentVariables; } public File getWorkingDirectory() { return workingDirectory; } public void setWorkingDirectory( File workingDirectory ) { this.workingDirectory = workingDirectory; } public boolean isChildDelegation() { return childDelegation; } public void setChildDelegation( boolean childDelegation ) { this.childDelegation = childDelegation; } public String getGroups() { return groups; } public void setGroups( String groups ) { this.groups = groups; } public String getExcludedGroups() { return excludedGroups; } public void setExcludedGroups( String excludedGroups ) { this.excludedGroups = excludedGroups; } public File[] getSuiteXmlFiles() { return suiteXmlFiles; } public void setSuiteXmlFiles( File[] suiteXmlFiles ) { this.suiteXmlFiles = suiteXmlFiles; } public String getJunitArtifactName() { return junitArtifactName; } public void setJunitArtifactName( String junitArtifactName ) { this.junitArtifactName = junitArtifactName; } public String getTestNGArtifactName() { return testNGArtifactName; } public void setTestNGArtifactName( String testNGArtifactName ) { this.testNGArtifactName = testNGArtifactName; } public int getThreadCount() { return threadCount; } public void setThreadCount( int threadCount ) { this.threadCount = threadCount; } public boolean getPerCoreThreadCount() { return perCoreThreadCount; } public void setPerCoreThreadCount( boolean perCoreThreadCount ) { this.perCoreThreadCount = perCoreThreadCount; } public boolean getUseUnlimitedThreads() { return useUnlimitedThreads; } public void setUseUnlimitedThreads( boolean useUnlimitedThreads ) { this.useUnlimitedThreads = useUnlimitedThreads; } public String getParallel() { return parallel; } public void setParallel( String parallel ) { this.parallel = parallel; } public boolean isTrimStackTrace() { return trimStackTrace; } public void setTrimStackTrace( boolean trimStackTrace ) { this.trimStackTrace = trimStackTrace; } public ArtifactResolver getArtifactResolver() { return artifactResolver; } public void setArtifactResolver( ArtifactResolver artifactResolver ) { this.artifactResolver = artifactResolver; } public ArtifactFactory getArtifactFactory() { return artifactFactory; } public void setArtifactFactory( ArtifactFactory artifactFactory ) { this.artifactFactory = artifactFactory; } public List getRemoteRepositories() { return remoteRepositories; } public void setRemoteRepositories( List remoteRepositories ) { this.remoteRepositories = remoteRepositories; } public ArtifactMetadataSource getMetadataSource() { return metadataSource; } public void setMetadataSource( ArtifactMetadataSource metadataSource ) { this.metadataSource = metadataSource; } public Properties getOriginalSystemProperties() { return originalSystemProperties; } public void setOriginalSystemProperties( Properties originalSystemProperties ) { this.originalSystemProperties = originalSystemProperties; } public Properties getInternalSystemProperties() { return internalSystemProperties; } public void setInternalSystemProperties( Properties internalSystemProperties ) { this.internalSystemProperties = internalSystemProperties; } public boolean isDisableXmlReport() { return disableXmlReport; } public void setDisableXmlReport( boolean disableXmlReport ) { this.disableXmlReport = disableXmlReport; } public boolean isUseSystemClassLoader() { return useSystemClassLoader; } public void setUseSystemClassLoader( boolean useSystemClassLoader ) { this.useSystemClassLoader = useSystemClassLoader; } public boolean isUseManifestOnlyJar() { return useManifestOnlyJar; } public void setUseManifestOnlyJar( boolean useManifestOnlyJar ) { this.useManifestOnlyJar = useManifestOnlyJar; } public boolean isEnableAssertions() { return enableAssertions; } public void setEnableAssertions( boolean enableAssertions ) { this.enableAssertions = enableAssertions; } public MavenSession getSession() { return session; } public void setSession( MavenSession session ) { this.session = session; } public String getObjectFactory() { return objectFactory; } public void setObjectFactory( String objectFactory ) { this.objectFactory = objectFactory; } public ToolchainManager getToolchainManager() { return toolchainManager; } public void setToolchainManager( ToolchainManager toolchainManager ) { this.toolchainManager = toolchainManager; } public boolean isMavenParallel() { return parallelMavenExecution != null && parallelMavenExecution.booleanValue(); } public String getRunOrder() { return runOrder; } public void setRunOrder( String runOrder ) { this.runOrder = runOrder; } protected void addPluginSpecificChecksumItems( ChecksumCalculator checksum ) { } } surefire-2.10/maven-surefire-plugin/src/assembly/0000755000175000017500000000000011645102474020662 5ustar tonytonysurefire-2.10/maven-surefire-plugin/src/assembly/site-source.xml0000644000175000017500000000121311605576575023660 0ustar tonytony site-source zip false true ${basedir}/src/site false / surefire-2.10/surefire-integration-tests/0000755000175000017500000000000011645102474017335 5ustar tonytonysurefire-2.10/surefire-integration-tests/pom.xml0000644000175000017500000001461011640163725020655 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire 2.10 ../pom.xml org.apache.maven.surefire surefire-integration-tests Maven Surefire Integration Tests UTF-8 false 5.7 2 2.8 org.apache.maven.shared maven-verifier 1.2 org.apache.maven maven-settings 2.0.6 test net.sourceforge.htmlunit htmlunit 2.8 test commons-io commons-io 2.0.1 org.apache.maven maven-artifact maven-compiler-plugin 1.5 1.5 maven-surefire-plugin true maven-failsafe-plugin ${surefire.build.version} surefire.version ${project.version} testng.version ${testng.version} maven.home ${maven.home} maven.settings.file ${project.basedir}/../surefire-setup-integration-tests/target/private/it-settings.xml maven.repo.local ${project.basedir}/../surefire-setup-integration-tests/target/it-repo maven.test.tmpdir ${project.build.directory} integration-test verify maven-enforcer-plugin require-maven-2.1.0 enforce [2.1.0,) maven-deploy-plugin true parallel maven-failsafe-plugin ${surefire.build.version} classes ${surefire.threadcount} junit junit 4.8.2 test ${project.version} surefire-2.10/surefire-integration-tests/src/0000755000175000017500000000000011645102474020124 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/0000755000175000017500000000000011645102474021103 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/java/0000755000175000017500000000000011645102474022024 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/java/org/0000755000175000017500000000000011645102474022613 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/java/org/apache/0000755000175000017500000000000011645102474024034 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/0000755000175000017500000000000011645102474025142 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474026766 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/0000755000175000017500000000000011645102474027565 5ustar tonytony././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TwoTestCasesIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TwoTestCasesIT.0000644000175000017500000001200211540712701032400 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import org.apache.maven.surefire.its.misc.ReportTestSuite; import java.io.File; import java.util.HashSet; import java.util.List; import java.util.Set; /** * Test running two test cases; confirms reporting works correctly * * @author Dan Fabulich */ public class TwoTestCasesIT extends AbstractSurefireIntegrationTestClass { public void testTwoTestCases() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/junit-twoTestCases" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 2, 0, 0, 0, testDir ); } /** * Runs two tests encapsulated in a suite */ public void testTwoTestCaseSuite() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/junit-twoTestCaseSuite" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); List reports = HelperAssertions.extractReports( ( new File[]{ testDir } ) ); Set classNames = extractClassNames( reports ); assertContains( classNames, "junit.twoTestCaseSuite.BasicTest" ); assertContains( classNames, "junit.twoTestCaseSuite.TestTwo" ); assertEquals( "wrong number of classes", 2, classNames.size() ); IntegrationTestSuiteResults results = HelperAssertions.parseReportList( reports ); HelperAssertions.assertTestSuiteResults( 2, 0, 0, 0, results ); } private void assertContains( Set set, String expected ) { if ( set.contains( expected ) ) { return; } fail( "Set didn't contain " + expected ); } private Set extractClassNames( List reports ) { HashSet classNames = new HashSet(); for ( ReportTestSuite suite : reports ) { classNames.add( suite.getFullClassName() ); } return classNames; } public void testJunit4Suite() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/junit4-twoTestCaseSuite" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); List reports = HelperAssertions.extractReports( ( new File[]{ testDir } ) ); Set classNames = extractClassNames( reports ); assertContains( classNames, "twoTestCaseSuite.BasicTest" ); assertContains( classNames, "twoTestCaseSuite.Junit4TestTwo" ); assertEquals( "wrong number of classes", 2, classNames.size() ); IntegrationTestSuiteResults results = HelperAssertions.parseReportList( reports ); HelperAssertions.assertTestSuiteResults( 2, 0, 0, 0, results ); } public void testTestNGSuite() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-twoTestCaseSuite" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); List reports = HelperAssertions.extractReports( ( new File[]{ testDir } ) ); Set classNames = extractClassNames( reports ); assertContains( classNames, "testng.two.TestNGTestTwo" ); assertContains( classNames, "testng.two.TestNGSuiteTest" ); assertEquals( "wrong number of classes", 2, classNames.size() ); IntegrationTestSuiteResults results = HelperAssertions.parseReportList( reports ); HelperAssertions.assertTestSuiteResults( 2, 0, 0, 0, results ); } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TimeoutForkedTestIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TimeoutForkedTe0000644000175000017500000000337211533524371032567 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; /** * Test * * @author Dan Fabulich */ public class TimeoutForkedTestIT extends SurefireVerifierTestClass { public TimeoutForkedTestIT() { super( "/timeout-forked" ); } public void testTimeoutForked() throws Exception { try { addGoal( "-DsleepLength=10000" ); addGoal( "-DforkTimeout=1" ); executeTest(); verifyErrorFreeLog(); fail( "Build didn't fail, but it should have" ); } catch ( VerificationException ignore ) { } // SUREFIRE-468 test that had to be reverted due to SUREFIRE-705 //assertFalse( getSurefireReportsFile( "TEST-timeoutForked.BasicTest.xml" ).exists() ); // assertFalse( getSurefireReportsFile( "timeoutForked.BasicTest.txt" ).exists() ); } } ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit44TestMethodPatternIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit44TestMeth0000644000175000017500000000217511531766477032411 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using -Dtest=mtClass#myMethod * * @author Olivier Lamy */ public class JUnit44TestMethodPatternIT extends AsbtractTestMethodPattern { public JUnit44TestMethodPatternIT() { super( "/junit44-method-pattern" ); } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/DefaultConfigurationIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/DefaultConfigur0000644000175000017500000000277311556213260032577 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test basic default configuration, runs the JUnit 3 test in the src/test directory. * * @author Dan Fabulich */ public class DefaultConfigurationIT extends SurefireVerifierTestClass { public DefaultConfigurationIT() { super("/default-configuration"); } public void testDefaultConfiguration() throws Exception { executeTest( ); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/EnvironmentVariableIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/EnvironmentVari0000644000175000017500000000326611540712701032637 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test basic default configuration, runs the JUnit 3 test in the src/test directory. * * @author Dan Fabulich */ public class EnvironmentVariableIT extends AbstractSurefireIntegrationTestClass { public void testEnvironmentVariable() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/junit44-environment" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractTestSingleMethod.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractTestSin0000644000175000017500000000247211532036337032571 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using -Dtest=mtClass#myMethod * * @author Olivier Lamy */ public abstract class AbstractTestSingleMethod extends SurefireVerifierTestClass { public AbstractTestSingleMethod(String projectResource) { super( projectResource ); } public void testSingleMethod() throws Exception { executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgGroupThreadParallelIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgGrou0000644000175000017500000000326311540712701032505 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test TestNG groups, together with TestNG parallelism * * @author Dan Fabulich */ public class CheckTestNgGroupThreadParallelIT extends AbstractSurefireIntegrationTestClass { public void testTestNgGroupThreadParallel() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-group-thread-parallel" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 3, 0, 0, 0, testDir ); } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire685CommaSeparatedIncludesIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire685Comm0000644000175000017500000000250111515322635032350 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * SUREFIRE-685 Asserts that only the specified tests are run with comma separated includes * * @author Kristian Rosenvold */ public class Surefire685CommaSeparatedIncludesIT extends SurefireVerifierTestClass { public Surefire685CommaSeparatedIncludesIT() { super( "/surefire-685-commaseparatedIncludes" ); } public void testBuildFailingWhenErrors() throws Exception { executeTest(); assertTestSuiteResults( 2, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit44TestSingleMethodIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit44TestSing0000644000175000017500000000217111531766477032410 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using -Dtest=mtClass#myMethod * * @author Olivier Lamy */ public class JUnit44TestSingleMethodIT extends AbstractTestSingleMethod { public JUnit44TestSingleMethodIT() { super( "/junit44-single-method" ); } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/WorkingDirectoryIsInvalidPropertyIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/WorkingDirector0000644000175000017500000000177211560324726032635 0ustar tonytonypackage org.apache.maven.surefire.its; import java.io.File; import java.io.IOException; import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; /** * Test when the configured working directory is an invalid property, SUREFIRE-715 */ public class WorkingDirectoryIsInvalidPropertyIT extends AbstractSurefireIntegrationTestClass { private File testDir; public void setUp() throws IOException { testDir = ResourceExtractor.simpleExtractResources( getClass(), "/working-directory-is-invalid-property" ); } public void testWorkingDirectory() throws Exception { Verifier verifier = new Verifier( testDir.getAbsolutePath() ); try { executeGoal( verifier, "test" ); } catch ( VerificationException e ) { } verifier.verifyTextInLog( "workingDirectory cannot be null" ); verifier.resetStreams(); } }././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire674BuildFailingWhenErrorsIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire674Buil0000644000175000017500000000304511506466561032361 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import junit.framework.Assert; import org.apache.maven.it.VerificationException; /** * SUREFIRE-674 Asserts that the build fails when tests have errors * * @author Kristian Rosenvold */ public class Surefire674BuildFailingWhenErrorsIT extends SurefireVerifierTestClass { public Surefire674BuildFailingWhenErrorsIT() { super( "/surefire-674-buildFailingWhenErrors" ); } public void testBuildFailingWhenErrors() throws Exception { try { executeTest(); Assert.fail( "The verifier should throw an exception" ); } catch ( VerificationException ignore ) { } verifyTextInLog( "BUILD FAILURE" ); } }././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/IntegrationTestSuiteResults.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/IntegrationTest0000644000175000017500000000335311367751466032653 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ public class IntegrationTestSuiteResults { private int total, errors, failures, skipped; public IntegrationTestSuiteResults( int total, int errors, int failures, int skipped ) { this.total = total; this.errors = errors; this.failures = failures; this.skipped = skipped; } public int getTotal() { return total; } public void setTotal( int total ) { this.total = total; } public int getErrors() { return errors; } public void setErrors( int errors ) { this.errors = errors; } public int getFailures() { return failures; } public void setFailures( int failures ) { this.failures = failures; } public int getSkipped() { return skipped; } public void setSkipped( int skipped ) { this.skipped = skipped; } } ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire224WellFormedXmlFailuresIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire224Well0000644000175000017500000000573111540712701032350 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.surefire.its.misc.HelperAssertions; import org.apache.maven.surefire.its.misc.ReportTestCase; import org.apache.maven.surefire.its.misc.ReportTestSuite; import java.io.File; import java.util.List; /** * Test Surefire-224 (XML test reports are not well-formed when failure message contains quotes) * * @author Dan Fabulich */ public class Surefire224WellFormedXmlFailuresIT extends SurefireVerifierTestClass { public Surefire224WellFormedXmlFailuresIT() { super( "/surefire-224-wellFormedXmlFailures" ); } public void testWellFormedXmlFailures() throws Exception { executeTest( ); assertTestSuiteResults( 4, 0, 4, 0 ); ReportTestSuite suite = (ReportTestSuite) HelperAssertions.extractReports( ( new File[]{ getTestDir() } ) ).get( 0 ); List testCases = suite.getTestCases(); assertEquals( "Wrong number of test case objects", 4, testCases.size() ); ReportTestCase testQuote = null, testLower = null, testGreater = null, testU0000 = null; for ( ReportTestCase current : testCases ) { if ( "testQuote".equals( current.getName() ) ) { testQuote = current; } else if ( "testLower".equals( current.getName() ) ) { testLower = current; } else if ( "testGreater".equals( current.getName() ) ) { testGreater = current; } else if ( "testU0000".equals( current.getName() ) ) { testU0000 = current; } } assertEquals( "Wrong error message", "\"", testQuote.getFailure().get( "message" ) ); assertEquals( "Wrong error message", "<", testLower.getFailure().get( "message" ) ); assertEquals( "Wrong error message", ">", testGreater.getFailure().get( "message" ) ); // SUREFIRE-456 we have to doubly-escape non-visible control characters like \u0000 assertEquals( "Wrong error message", "�", testU0000.getFailure().get( "message" ) ); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgSuiteXmlSingleIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgSuit0000644000175000017500000000340111540712701032507 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.surefire.its.misc.HelperAssertions; import org.apache.maven.surefire.its.misc.ReportTestSuite; import java.io.File; import java.util.List; /** * Use -Dtest to run a single TestNG test, overriding the suite XML parameter. * * @author Dan Fabulich */ public class CheckTestNgSuiteXmlSingleIT extends SurefireVerifierTestClass { public CheckTestNgSuiteXmlSingleIT() { super( "/testng-twoTestCaseSuite" ); } public void testTestNGSuite() throws Exception { addGoal( "-Dtest=TestNGTestTwo" ); executeTest(); verifyErrorFreeLog(); List reports = HelperAssertions.extractReports( ( new File[]{ getTestDir() } ) ); IntegrationTestSuiteResults results = HelperAssertions.parseReportList( reports ); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, results ); } } ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AggregateReportIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AggregateReport0000644000175000017500000000460011540712701032564 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; import java.util.List; /** * Test report aggregation * * @author Dan Fabulich */ public class AggregateReportIT extends AbstractSurefireIntegrationTestClass { public void testAggregateReport() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/aggregate-report" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = this.getInitialGoals(); goals.add( "org.apache.maven.plugins:maven-surefire-report-plugin:" + getSurefireVersion() + ":report" ); executeGoals( verifier, goals ); //DGF even though the build will succeed, the log will contain errors (from the failure) //verifier.verifyErrorFreeLog(); verifier.resetStreams(); File surefireReportHtml = new File( testDir, "target/site/surefire-report.html" ); assertTrue( "surefire report missing: " + surefireReportHtml.getAbsolutePath(), surefireReportHtml.exists() ); // TODO HtmlUnit tests on the surefire report File[] testDirs = new File[2]; testDirs[0] = new File( testDir, "child1" ); testDirs[1] = new File( testDir, "child2" ); IntegrationTestSuiteResults suite = HelperAssertions.parseTestResults( testDirs ); HelperAssertions.assertTestSuiteResults( 2, 0, 1, 0, suite ); } } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkConsoleOutputWithErrorsIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkConsoleOutp0000644000175000017500000000306311565275451032615 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import java.io.File; /** * Asserts proper behaviour of console output when forking * SUREFIRE-639 * SUREFIRE-651 * * @author Kristian Rosenvold */ public class ForkConsoleOutputWithErrorsIT extends SurefireVerifierTestClass { public ForkConsoleOutputWithErrorsIT() { super( "/fork-consoleOutputWithErrors" ); } public void testXmlFileContainsConsoleOutput() throws Exception { failNever(); execute( "test" ); final File surefireReportsFile = getSurefireReportsFile( "TEST-forkConsoleOutput.Test2.xml" ); assertContainsText( surefireReportsFile, "sout: Will Fail soon" ); assertContainsText( surefireReportsFile, "serr: Will Fail now" ); } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ResultCountingIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ResultCountingI0000644000175000017500000000532311540712701032603 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Verifies that the providers get the result summary at the bottom of the run correctly, in different forkmodes * SUREFIRE-613 Asserts proper test counts when running in parallel * * @author Kristian Rosenvold */ public class ResultCountingIT extends AbstractSurefireIntegrationTestClass { public void testCountingWithJunit481ForkNever() throws Exception { assertForkMode( "never" ); } public void testCountingWithJunit481ForkOnce() throws Exception { assertForkMode( "once" ); } public void testCountingWithJunit481ForkAlways() throws Exception { assertForkMode( "always" ); } private void assertForkMode( String forkMode ) throws IOException, VerificationException { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/result-counting" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); String[] opts = { "-fn" }; verifier.setCliOptions( new ArrayList( Arrays.asList( opts ) ) ); List goals = getGoals( forkMode ); this.executeGoals( verifier, goals ); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 36, 23, 4, 2, testDir ); verifier.verifyTextInLog( "Tests run: 36, Failures: 4, Errors: 23, Skipped: 2" ); } private List getGoals( String forkMode ) { List goals = this.getInitialGoals(); goals.add( "test" ); goals.add( "-DforkMode=" + forkMode ); return goals; } }././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestFailIfNoTestsIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestFailIf0000644000175000017500000000472311532046117032442 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import java.io.File; import java.util.List; /** * Test failIfNoTests * * @author Dan Fabulich */ public class CheckTestFailIfNoTestsIT extends AbstractSurefireIntegrationTestClass { public void testFailIfNoTests() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/default-configuration-noTests" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = this.getInitialGoals(); goals.add( "test" ); goals.add( "-DfailIfNoTests" ); try { executeGoals( verifier, goals ); verifier.resetStreams(); verifier.verifyErrorFreeLog(); fail( "Build didn't fail, but it should" ); } catch ( VerificationException e ) { // as expected } finally { verifier.resetStreams(); } } public void testDontFailIfNoTests() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/default-configuration-noTests" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); File reportsDir = new File( testDir, "target/surefire-reports" ); assertFalse( "Unexpected reports directory", reportsDir.exists() ); } } ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgReportTestIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgRepo0000644000175000017500000000314511565265037032511 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import java.io.File; import org.apache.maven.surefire.its.misc.HelperAssertions; import junit.framework.Assert; /** * Test surefire-report on TestNG test * * @author Dan Fabulich */ public class CheckTestNgReportTestIT extends SurefireVerifierTestClass { public CheckTestNgReportTestIT() { super( "/testng-simple" ); } public void testTestNgReport() throws Exception { execute( getSurefireReportGoal() ); verifyErrorFreeLog(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, getTestDir() ); File reportHtml = new File( getTestDir(), "target/site/surefire-report.html" ); Assert.assertTrue( "surefire-report is missing", reportHtml.exists() ); } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/PlexusConflictIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/PlexusConflictI0000644000175000017500000000436711540712701032567 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; import java.util.List; /** * Test library using a conflicting version of plexus-utils * * @author Dan Fabulich */ public class PlexusConflictIT extends AbstractSurefireIntegrationTestClass { public void testPlexusConflict() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/plexus-conflict" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } public void testPlexusConflictIsolatedClassLoader() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/plexus-conflict" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = this.getInitialGoals(); goals.add( "test" ); goals.add( "-Dsurefire.useSystemClassLoader=false" ); executeGoals( verifier, goals ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } }././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgBeforeMethodIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgBefo0000644000175000017500000000322411540712701032441 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test @BeforeMethod annotation on TestNg suite * * @author Dan Fabulich */ public class CheckTestNgBeforeMethodIT extends AbstractSurefireIntegrationTestClass { public void testTestNgBeforeMethod() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-beforeMethod" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgExecuteErrorIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgExec0000644000175000017500000000345311556104214032457 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import java.io.File; import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; /** * Test for checking that the output from a forked suite is properly captured even if the suite encounters a severe error. * * @author Dan Fabulich */ public class CheckTestNgExecuteErrorIT extends AbstractSurefireIntegrationTestClass { public void testExecuteError() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-execute-error" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); try { this.executeGoal( verifier, "test" ); } catch ( VerificationException e ) { } // expected verifier.resetStreams(); verifier.verifyTextInLog( "at org.apache.maven.surefire.testng.TestNGExecutor.run" ); } } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire141PluggableProvidersIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire141Plug0000644000175000017500000000423011532046117032345 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import java.io.File; import java.util.ArrayList; import java.util.Arrays; /** * SUREFIRE-613 Asserts proper test counts when running in parallel * * @author Kristian Rosenvold */ public class Surefire141PluggableProvidersIT extends AbstractSurefireIntegrationTestClass { public void testPaallelBuildResultCount() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/surefire-141-pluggableproviders/test-provider" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "install" ); verifier.resetStreams(); testDir = ResourceExtractor.simpleExtractResources( getClass(), "/surefire-141-pluggableproviders/test" ); verifier = new Verifier( testDir.getAbsolutePath() ); String[] opts = { "-e" }; verifier.setCliOptions( new ArrayList( Arrays.asList( opts ) ) ); this.executeGoal( verifier, "install" ); verifier.verifyTextInLog( "Using configured provider org.apache.maven.surefire.testprovider.TestProvider" ); verifier.verifyTextInLog( "Using configured provider org.apache.maven.surefire.junit.JUnit3Provider" ); verifier.verifyErrorFreeLog(); } }././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgListenerReporterIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgList0000644000175000017500000000411711540712701032503 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test simple TestNG listener and reporter * * @author Dan Fabulich */ public class CheckTestNgListenerReporterIT extends AbstractSurefireIntegrationTestClass { public void testTestNgListenerReporter() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-listener-reporter" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); File targetDir = new File( testDir, "target" ); assertFileExists( new File( targetDir, "resultlistener-output.txt" ) ); assertFileExists( new File( targetDir, "suitelistener-output.txt" ) ); assertFileExists( new File( targetDir, "reporter-output.txt" ) ); } private void assertFileExists( File file ) { assertTrue( "File doesn't exist: " + file.getAbsolutePath(), file.exists() ); } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit4RunListenerIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit4RunListen0000644000175000017500000000465311573232612032477 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import java.io.File; /** * JUnit4 RunListener Integration Test. * * @author Matthew Gilliard */ public class JUnit4RunListenerIT extends SurefireVerifierTestClass { public JUnit4RunListenerIT() { super( "/junit4-runlistener" ); } public void testJUnit4RunListener() throws Exception { addGoal( "-Dprovider=surefire-junit4" ); addGoal( "-DjunitVersion=4.4" ); executeTest(); verifyErrorFreeLog(); assertResults(); verifyTextInLog( "testRunStarted null" ); verifyTextInLog( "testFinished simpleTest" ); verifyTextInLog( "testRunFinished org.junit.runner.Result" ); } private void assertResults() { assertTestSuiteResults( 1, 0, 0, 0 ); final File targetDir = getSubFile( "target" ); assertFileExists( new File( targetDir, "runlistener-output-1.txt" ) ); assertFileExists( new File( targetDir, "runlistener-output-2.txt" ) ); } public void testRunlistenerJunitCoreProvider() throws Exception { addGoal( "-Dprovider=surefire-junit47" ); addGoal( "-DjunitVersion=4.8.1" ); executeTest(); verifyErrorFreeLog(); assertResults(); verifyTextInLog( "testRunStarted null" ); verifyTextInLog( "testFinished simpleTest" ); verifyTextInLog( "testRunFinished org.junit.runner.Result" ); } private void assertFileExists( final File file ) { assertTrue( "File doesn't exist: " + file.getAbsolutePath(), file.exists() ); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit48TestSingleMethodIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit48TestSing0000644000175000017500000000217111531766477032414 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using -Dtest=mtClass#myMethod * * @author Olivier Lamy */ public class JUnit48TestSingleMethodIT extends AbstractTestSingleMethod { public JUnit48TestSingleMethodIT() { super( "/junit48-single-method" ); } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Junit4VersionsIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Junit4VersionsI0000644000175000017500000000424311506466561032540 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Basic suite test using all known versions of JUnit 4.x * * @author Dan Fabulich */ public class Junit4VersionsIT extends SurefireVerifierTestClass { public Junit4VersionsIT() { super( "/junit4" ); } public void test40() throws Exception { runJUnitTest( "4.0" ); } public void test41() throws Exception { runJUnitTest( "4.1" ); } public void test42() throws Exception { runJUnitTest( "4.2" ); } public void test43() throws Exception { runJUnitTest( "4.3" ); } public void test431() throws Exception { runJUnitTest( "4.3.1" ); } public void test44() throws Exception { runJUnitTest( "4.4" ); } public void test45() throws Exception { runJUnitTest( "4.5" ); } public void test46() throws Exception { runJUnitTest( "4.6" ); } public void test47() throws Exception { runJUnitTest( "4.7" ); } public void runJUnitTest( String version ) throws Exception { addGoal( "-DjunitVersion=" + version ); executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire510TestClassPathForkModesIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire510Test0000644000175000017500000000272511510162741032362 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * SUREFIRE-621 Asserts proper test counts when running junit 3 tests in parallel * * @author Kristian Rosenvold */ public class Surefire510TestClassPathForkModesIT extends SurefireVerifierTestClass { public Surefire510TestClassPathForkModesIT() { super( "/surefire-510-testClassPath" ); } public void testForkAlways() throws Exception { forkAlways(); execute( "test" ); verifyTextInLog( "tcp is set" ); } public void testForkOnce() throws Exception { forkOnce(); execute( "test" ); verifyTextInLog( "tcp is set" ); } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/IncludesExcludesIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/IncludesExclude0000644000175000017500000000371711553513575032606 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; /** * Test include/exclude patterns. * * @author Benjamin Bentmann * @version $Id: IncludesExcludesIT.java 1095316 2011-04-20 08:21:17Z krosenvold $ */ public class IncludesExcludesIT extends SurefireVerifierTestClass { public IncludesExcludesIT() { super( "/includes-excludes" ); } /** * Test surefire inclusions/exclusions */ public void testIncludesExcludes() throws Exception { testWithProfile( "-Psimple" ); } public void testRegexIncludesExcludes() throws Exception { testWithProfile( "-Pregex" ); } public void testPathBasedIncludesExcludes() throws Exception { testWithProfile( "-Ppath" ); } private void testWithProfile( String profile ) throws VerificationException { addGoal( profile ); execute( "test" ); assertPresent( getTargetFile( "testTouchFile.txt" ) ); assertPresent( getTargetFile( "defaultTestTouchFile.txt" ) ); verifyErrorFreeLog(); assertTestSuiteResults( 2, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeTestNGIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeTestNGI0000644000175000017500000000207411625457076032430 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test forkMode * * @author Marvin Froeder */ public class ForkModeTestNGIT extends ForkModeIT { protected String getProject() { return "/fork-mode-testng"; } } ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire733AllOverrridesCapturedIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire733AllO0000644000175000017500000000237011556535446032315 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; /** * @author Kristian Rosenvold */ public class Surefire733AllOverrridesCapturedIT extends SurefireVerifierTestClass { public Surefire733AllOverrridesCapturedIT() { super( "/surefire-733-allOverridesCaptured" ); } public void testLogOutput() throws VerificationException { executeTest(); verifyTextInLog( "abc" ); } } ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire44InnerClassTestIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire44Inner0000644000175000017500000000244511506466561032453 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test JUnit test that contains inner classes * * @author Dan Fabulich */ public class Surefire44InnerClassTestIT extends SurefireVerifierTestClass { public Surefire44InnerClassTestIT() { super( "/junit-innerClass" ); } public void testInnerClass() throws Exception { executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit4ForkAlwaysStaticInitPollutionIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit4ForkAlway0000644000175000017500000000252611532036337032451 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test JUnit 4 tests marked with "Ignore" attribute * * @author Dan Fabulich */ public class JUnit4ForkAlwaysStaticInitPollutionIT extends SurefireVerifierTestClass { public JUnit4ForkAlwaysStaticInitPollutionIT() { super( "/junit4-forkAlways-staticInit" ); } public void testJunit4Ignore() throws Exception { this.executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 2, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire621TestCountingJunit3InParallelIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire621Test0000644000175000017500000000256011506466561032376 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * SUREFIRE-621 Asserts proper test counts when running junit 3 tests in parallel * * @author Kristian Rosenvold */ public class Surefire621TestCountingJunit3InParallelIT extends SurefireVerifierTestClass { public Surefire621TestCountingJunit3InParallelIT() { super( "/surefire-621-testCounting-junit3-in-parallel" ); } public void testJunit3ParallelBuildResultCount() throws Exception { failNever(); execute( "install" ); assertTestSuiteResults( 6, 0, 0, 0 ); } }././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/PojoSimpleIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/PojoSimpleIT.ja0000644000175000017500000000301711540712701032412 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test support for POJO tests. * * @author Benjamin Bentmann */ public class PojoSimpleIT extends AbstractSurefireIntegrationTestClass { public void testit() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/pojo-simple" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); executeGoal( verifier, "test" ); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 2, 0, 1, 0, testDir ); } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire377TestNgAndJUnitTogetherIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire377Test0000644000175000017500000000256211506466561032410 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * SUREFIRE-377 (When JUnit and TestNG tests are in same project, only one set gets run). * * @author Dan Fabulich */ public class Surefire377TestNgAndJUnitTogetherIT extends SurefireVerifierTestClass { public Surefire377TestNgAndJUnitTogetherIT() { super( "/testng-junit-together" ); } public void testTestNgAndJUnitTogether() throws Exception { executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 2, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgVersionsIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgVers0000644000175000017500000000772611540712701032520 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; import java.util.List; /** * Basic suite test using all known versions of TestNG. Used for regression testing Surefire against old versions. * To check new versions of TestNG work with current versions of Surefire, instead run the full test suite with * -Dtestng.version=5.14.2 (for example) * * @author Dan Fabulich */ public class CheckTestNgVersionsIT extends AbstractSurefireIntegrationTestClass { public void test47() throws Exception { runTestNgTest( "4.7" ); } // DGF SUREFIRE-375 + MAVENUPLOAD-1024 // The 5.0 and 5.0.1 jars on central are malformed public void XXXtest50() throws Exception { runTestNgTest( "5.0" ); } public void XXXtest501() throws Exception { runTestNgTest( "5.0.1" ); } public void test502() throws Exception { runTestNgTest( "5.0.2" ); } public void test51() throws Exception { runTestNgTest( "5.1" ); } public void test55() throws Exception { runTestNgTest( "5.5" ); } public void test56() throws Exception { runTestNgTest( "5.6" ); } public void test57() throws Exception { runTestNgTest( "5.7" ); } public void test58() throws Exception { runTestNgTest( "5.8" ); } public void test59() throws Exception { runTestNgTest( "5.9" ); } public void test510() throws Exception { runTestNgTest( "5.10" ); } public void test511() throws Exception { runTestNgTest( "5.11" ); } public void test512() throws Exception { runTestNgTest( "5.12.1" ); } public void test513() throws Exception { runTestNgTest( "5.13" ); } public void test5131() throws Exception { runTestNgTest( "5.13.1" ); } public void test514() throws Exception { runTestNgTest( "5.14" ); } public void test5141() throws Exception { runTestNgTest( "5.14.1" ); } public void test5142() throws Exception { runTestNgTest( "5.14.2" ); } public void test60() throws Exception { runTestNgTest( "6.0" ); } public void runTestNgTest( String version ) throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-simple" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List arguments = this.getInitialGoals( version ); arguments.add( "test" ); executeGoals( verifier, arguments ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); IntegrationTestSuiteResults suite = HelperAssertions.parseTestResults( testDir ); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, suite ); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire613TestCountInParallelIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire613Test0000644000175000017500000000303411513341365032364 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * SUREFIRE-613 Asserts proper test counts when running in parallel * * @author Kristian Rosenvold */ public class Surefire613TestCountInParallelIT extends SurefireVerifierTestClass { public Surefire613TestCountInParallelIT() { super( "/surefire-613-testCount-in-parallel" ); } public void testPaallelBuildResultCount() throws Exception { failNever(); execute( "test" ); verifyTextInLog( "testAllok to stdout" ); verifyTextInLog( "testAllok to stderr" ); verifyTextInLog( "testWithException1 to stdout" ); verifyTextInLog( "testWithException1 to stderr" ); assertTestSuiteResults( 30, 8, 4, 17 ); } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AdditionalClasspathIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AdditionalClass0000644000175000017500000000320511540712701032540 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test additionalClasspathElements * * @author Dan Fabulich */ public class AdditionalClasspathIT extends AbstractSurefireIntegrationTestClass { public void testAdditionalClasspath() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/additional-classpath" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } } ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire570MultipleReportDirectoriesIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire570Mult0000644000175000017500000000416011537460112032367 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import java.io.File; /** * Test Surefire-570 Multiple report directories * * @author Kristian Rosenvold */ public class Surefire570MultipleReportDirectoriesIT extends SurefireVerifierTestClass { public Surefire570MultipleReportDirectoriesIT() { super( "/surefire-570-multipleReportDirectories" ); } public void testReportWithAggregate() throws Exception { failNever(); executeTest(); // Hmm. This shouldn't be necessary but is another bug reset(); addGoal( "-Daggregate=true" ); execute( "surefire-report:report" ); File siteFile = getSiteFile( "surefire-report.html" ); assertContainsText( siteFile, "MyModule1ClassTest" ); assertContainsText( siteFile, "MyModule2ClassTest" ); assertContainsText( siteFile, "MyDummyClassM1Test" ); } public void testReportWithoutAggregate() throws Exception { failNever(); executeTest(); // Hmm. This shouldn't be necessary but is another bug reset(); execute( "surefire-report:report" ); File siteFile = getSiteFile( "module1", "surefire-report.html" ); assertContainsText( siteFile, "MyModule1ClassTest" ); assertContainsText( siteFile, "MyDummyClassM1Test" ); } } ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit47RedirectOutputIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit47Redirect0000644000175000017500000000410211561577407032404 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import java.io.IOException; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; public class JUnit47RedirectOutputIT extends SurefireVerifierTestClass { public JUnit47RedirectOutputIT() { super("/junit47-redirect-output"); } public void testPrintSummaryTrueWithRedirect() throws Exception { redirectToFile( true ); addGoal( "clean" ); executeTest(); checkReports(); } public void testClassesParallel() throws Exception { redirectToFile( true ); addGoal( "clean" ); addGoal( "-Dparallel=classes" ); executeTest( ); checkReports(); } private void checkReports() throws IOException { String report = StringUtils.trimToNull( FileUtils.readFileToString( getSurefireReportsFile( "junit47ConsoleOutput.Test1-output.txt" ) ) ); assertNotNull( report ); String report2 = StringUtils.trimToNull( FileUtils.readFileToString( getSurefireReportsFile( "junit47ConsoleOutput.Test2-output.txt" ) ) ); assertNotNull(report2); assertFalse( getSurefireReportsFile("junit47ConsoleOutput.Test3-output.txt").exists()); } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/RunOrderIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/RunOrderIT.java0000644000175000017500000001123111603272271032420 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; import java.io.IOException; import java.util.Calendar; import java.util.List; /** * Verifies the runOrder setting and its effect * * @author Kristian Rosenvold */ public class RunOrderIT extends AbstractSurefireIntegrationTestClass { private static final String[] TESTS_IN_ALPHABETICAL_ORDER = { "TA", "TB", "TC" }; private static final String[] TESTS_IN_REVERSE_ALPHABETICAL_ORDER = { "TC", "TB", "TA" }; // testing random is left as an exercise to the reader. Patches welcome private File testDir; private Verifier verifier; public void setUp() throws IOException, VerificationException { testDir = ResourceExtractor.simpleExtractResources( getClass(), "/runOrder" ); verifier = new Verifier( testDir.getAbsolutePath() ); } public void tearDown() throws Exception { verifier.resetStreams(); } public void testAlphabetical() throws Exception { executeWithRunOrder( "alphabetical" ); assertTestnamesAppearInSpecificOrder( TESTS_IN_ALPHABETICAL_ORDER ); } public void testReverseAlphabetical() throws Exception { executeWithRunOrder( "reversealphabetical" ); assertTestnamesAppearInSpecificOrder( TESTS_IN_REVERSE_ALPHABETICAL_ORDER ); } public void testHourly() throws Exception { int startHour = Calendar.getInstance().get( Calendar.HOUR_OF_DAY ); executeWithRunOrder( "hourly" ); int endHour = Calendar.getInstance().get( Calendar.HOUR_OF_DAY ); if ( startHour != endHour ) { return; // Race condition, cannot test when hour changed mid-run } String[] testnames = ( ( startHour % 2 ) == 0 ) ? TESTS_IN_ALPHABETICAL_ORDER : TESTS_IN_REVERSE_ALPHABETICAL_ORDER; assertTestnamesAppearInSpecificOrder( testnames ); } public void testNonExistingRunOrder() throws Exception { try { executeTestsWithRunOrder( "nonExistingRunOrder" ); } catch ( VerificationException e ) { } verifier.verifyTextInLog( "There's no RunOrder with the name nonExistingRunOrder." ); } private void executeWithRunOrder( String runOrder ) throws IOException, VerificationException { executeTestsWithRunOrder( runOrder ); verifier.verifyErrorFreeLog(); HelperAssertions.assertTestSuiteResults( 3, 0, 0, 0, testDir ); } private void executeTestsWithRunOrder( String runOrder ) throws VerificationException { List goals = getInitialGoals(); goals.add( "-DrunOrder=" + runOrder ); goals.add( "test" ); executeGoals( verifier, goals ); } private void assertTestnamesAppearInSpecificOrder( String[] testnames ) throws VerificationException { if ( !testnamesAppearInSpecificOrder( testnames ) ) { throw new VerificationException( "Response does not contain expected item" ); } } private boolean testnamesAppearInSpecificOrder( String[] testnames ) throws VerificationException { int i = 0; for ( String line : getLog() ) { if ( line.startsWith( testnames[i] ) ) { if ( i == testnames.length - 1 ) { return true; } ++i; } } return false; } private List getLog() throws VerificationException { return verifier.loadFile( verifier.getBasedir(), verifier.getLogFileName(), false ); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire42NotExtendingTestCaseIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire42NotEx0000644000175000017500000000247411506466561032435 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test JUnit test that contains inner classes * * @author Dan Fabulich */ public class Surefire42NotExtendingTestCaseIT extends SurefireVerifierTestClass { public Surefire42NotExtendingTestCaseIT() { super( "/junit-notExtendingTestCase" ); } public void testInnerClass() throws Exception { executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgJdk14IT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgJdk10000644000175000017500000000320311540712701032354 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test TestNG running in the JDK 1.4 JavaDoc style * * @author Dan Fabulich */ public class CheckTestNgJdk14IT extends AbstractSurefireIntegrationTestClass { public void testTestNgJdk14() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-jdk14" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkModeIT.java0000644000175000017500000001045511573712231032376 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.List; /** * Test forkMode * * @author Dan Fabulich */ public class ForkModeIT extends AbstractSurefireIntegrationTestClass { public void testForkModeAlways() throws Exception { String[] pids = doTest( "always" ); assertDifferentPids( pids ); } public void testForkModePerTest() throws Exception { String[] pids = doTest( "pertest" ); assertDifferentPids( pids ); } public void testForkModeNever() throws Exception { String[] pids = doTest( "never" ); assertSamePids( pids ); } public void testForkModeNone() throws Exception { String[] pids = doTest( "none" ); assertSamePids( pids ); } public void testForkModeOnce() throws Exception { String[] pids = doTest( "once" ); // DGF It would be nice to assert that "once" was different // from "never" ... but there's no way to check the PID of // Maven itself. No matter, "once" is tested by setting // argLine, which can't be done except by forking. assertSamePids( pids ); } private void assertSamePids( String[] pids ) { assertEquals( "pid 1 didn't match pid 2", pids[0], pids[1] ); assertEquals( "pid 1 didn't match pid 3", pids[0], pids[2] ); } private void assertDifferentPids( String[] pids ) { if ( pids[0].equals( pids[1] ) ) { fail( "pid 1 matched pid 2: " + pids[0] ); } if ( pids[0].equals( pids[2] ) ) { fail( "pid 1 matched pid 3: " + pids[0] ); } if ( pids[1].equals( pids[2] ) ) { fail( "pid 2 matched pid 3: " + pids[0] ); } } private String[] doTest( String forkMode ) throws IOException, VerificationException { File testDir = ResourceExtractor.simpleExtractResources( getClass(), getProject() ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = this.getInitialGoals(); goals.add( "test" ); goals.add( "-DforkMode=" + forkMode ); executeGoals( verifier, goals ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 3, 0, 0, 0, testDir ); File targetDir = new File( testDir, "target" ); String[] pids = new String[3]; for ( int i = 1; i <= pids.length; i++ ) { File pidFile = new File( targetDir, "test" + i + "-pid" ); String pid = slurpFile( pidFile ); pids[i - 1] = pid; } return pids; } protected String getProject() { return "/fork-mode"; } private String slurpFile( File textFile ) throws IOException { StringBuffer sb = new StringBuffer(); BufferedReader reader = new BufferedReader( new FileReader( textFile ) ); for ( String line = reader.readLine(); line != null; line = reader.readLine() ) { sb.append( line ); } reader.close(); return sb.toString(); } } surefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/0000755000175000017500000000000011645102474030520 5ustar tonytony././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/TestSuiteXmlParser.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/TestSuiteX0000644000175000017500000002103011540712701032512 0ustar tonytonypackage org.apache.maven.surefire.its.misc; /* * 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. */ import org.apache.maven.surefire.its.misc.ReportTestCase; import org.apache.maven.surefire.its.misc.ReportTestSuite; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import java.io.File; import java.io.IOException; import java.text.NumberFormat; import java.text.ParseException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.StringTokenizer; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; /** * @version $Id$ */ public class TestSuiteXmlParser extends DefaultHandler { private ReportTestSuite defaultSuite; private ReportTestSuite currentSuite; private Map classesToSuites; private final NumberFormat numberFormat = NumberFormat.getInstance(); /** * @noinspection StringBufferField */ private StringBuffer currentElement; private ReportTestCase testCase; public Collection parse( String xmlPath ) throws ParserConfigurationException, SAXException, IOException { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); classesToSuites = new HashMap(); saxParser.parse( new File( xmlPath ), this ); if ( currentSuite != defaultSuite ) { // omit the defaultSuite if it's empty and there are alternatives if ( defaultSuite.getNumberOfTests() == 0 ) { classesToSuites.remove( defaultSuite.getFullClassName() ); } } return classesToSuites.values(); } /** {@inheritDoc} */ public void startElement( String uri, String localName, String qName, Attributes attributes ) throws SAXException { try { if ( "testsuite".equals( qName ) ) { currentSuite = defaultSuite = new ReportTestSuite(); try { Number time = numberFormat.parse( attributes.getValue( "time" ) ); defaultSuite.setTimeElapsed( time.floatValue() ); } catch ( NullPointerException npe ) { System.err.println( "WARNING: no time attribute found on testsuite element" ); } //check if group attribute is existing if ( attributes.getValue( "group" ) != null && !"".equals( attributes.getValue( "group" ) ) ) { String packageName = attributes.getValue( "group" ); String name = attributes.getValue( "name" ); defaultSuite.setFullClassName( packageName + "." + name ); } else { String fullClassName = attributes.getValue( "name" ); defaultSuite.setFullClassName( fullClassName ); } classesToSuites.put( defaultSuite.getFullClassName(), defaultSuite ); } else if ( "testcase".equals( qName ) ) { currentElement = new StringBuffer(); testCase = new ReportTestCase(); testCase.setName( attributes.getValue( "name" ) ); String fullClassName = attributes.getValue( "classname" ); // if the testcase declares its own classname, it may need to belong to its own suite if ( fullClassName != null ) { currentSuite = (ReportTestSuite) classesToSuites.get( fullClassName ); if ( currentSuite == null ) { currentSuite = new ReportTestSuite(); currentSuite.setFullClassName( fullClassName ); classesToSuites.put( fullClassName, currentSuite ); } } testCase.setFullClassName( currentSuite.getFullClassName() ); testCase.setClassName( currentSuite.getName() ); testCase.setFullName( currentSuite.getFullClassName() + "." + testCase.getName() ); String timeAsString = attributes.getValue( "time" ); Number time = new Integer( 0 ); if ( timeAsString != null ) { time = numberFormat.parse( timeAsString ); } testCase.setTime( time.floatValue() ); if ( currentSuite != defaultSuite ) { currentSuite.setTimeElapsed( time.floatValue() + currentSuite.getTimeElapsed() ); } } else if ( "failure".equals( qName ) ) { testCase.addFailure( attributes.getValue( "message" ), attributes.getValue( "type" ) ); currentSuite.setNumberOfFailures( 1 + currentSuite.getNumberOfFailures() ); } else if ( "error".equals( qName ) ) { testCase.addFailure( attributes.getValue( "message" ), attributes.getValue( "type" ) ); currentSuite.setNumberOfErrors( 1 + currentSuite.getNumberOfErrors() ); } else if ( "skipped".equals( qName ) ) { testCase.addFailure( "skipped", "skipped" ); // TODO extract real reasons currentSuite.setNumberOfSkipped( 1 + currentSuite.getNumberOfSkipped() ); } } catch ( ParseException e ) { throw new SAXException( e.getMessage(), e ); } } /** {@inheritDoc} */ public void endElement( String uri, String localName, String qName ) throws SAXException { if ( "testcase".equals( qName ) ) { currentSuite.getTestCases().add( testCase ); } else if ( "failure".equals( qName ) ) { Map failure = testCase.getFailure(); failure.put( "detail", parseCause( currentElement.toString() ) ); } else if ( "error".equals( qName ) ) { Map error = testCase.getFailure(); error.put( "detail", parseCause( currentElement.toString() ) ); } else if ( "time".equals( qName ) ) { try { Number time = numberFormat.parse( currentElement.toString() ); defaultSuite.setTimeElapsed( time.floatValue() ); } catch ( ParseException e ) { throw new SAXException( e.getMessage(), e ); } } // TODO extract real skipped reasons } /** {@inheritDoc} */ public void characters( char[] ch, int start, int length ) throws SAXException { String s = new String( ch, start, length ); if ( !"".equals( s.trim() ) ) { currentElement.append( s ); } } private List parseCause( String detail ) { String fullName = testCase.getFullName(); String name = fullName.substring( fullName.lastIndexOf( "." ) + 1 ); return parseCause( detail, name ); } private List parseCause( String detail, String compareTo ) { StringTokenizer stringTokenizer = new StringTokenizer( detail, "\n" ); List parsedDetail = new ArrayList( stringTokenizer.countTokens() ); while ( stringTokenizer.hasMoreTokens() ) { String lineString = stringTokenizer.nextToken().trim(); parsedDetail.add( lineString ); if ( lineString.indexOf( compareTo ) >= 0 ) { break; } } return parsedDetail; } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/SurefireReportParser.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/SurefireRe0000644000175000017500000000711011557340256032521 0ustar tonytonypackage org.apache.maven.surefire.its.misc; /* * 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. */ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Locale; import org.codehaus.plexus.util.DirectoryScanner; import org.codehaus.plexus.util.StringUtils; import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; /** * @version $Id$ */ public class SurefireReportParser { private final List reportsDirectories; private final List testSuites = new ArrayList(); public SurefireReportParser( List reportsDirectoriesFiles, Locale locale ) { this.reportsDirectories = reportsDirectoriesFiles; } public List parseXMLReportFiles() { List xmlReportFileList = new ArrayList(); for ( int i = 0; i < reportsDirectories.size(); i++ ) { File reportsDirectory = (File) reportsDirectories.get( i ); if ( !reportsDirectory.exists() ) { continue; } String[] xmlReportFiles = getIncludedFiles( reportsDirectory, "*.xml", "*.txt, testng-failed.xml, testng-failures.xml, testng-results.xml" ); for ( int j = 0; j < xmlReportFiles.length; j++ ) { File xmlReport = new File( reportsDirectory, xmlReportFiles[j] ); xmlReportFileList.add( xmlReport ); } } TestSuiteXmlParser parser = new TestSuiteXmlParser(); for ( int index = 0; index < xmlReportFileList.size(); index++ ) { Collection suites; File currentReport = (File) xmlReportFileList.get( index ); try { suites = parser.parse( currentReport.getAbsolutePath() ); } catch ( ParserConfigurationException e ) { throw new RuntimeException( "Error setting up parser for JUnit XML report", e ); } catch ( SAXException e ) { throw new RuntimeException( "Error parsing JUnit XML report " + currentReport, e ); } catch ( IOException e ) { throw new RuntimeException( "Error reading JUnit XML report " + currentReport, e ); } testSuites.addAll( suites ); } return testSuites; } private String[] getIncludedFiles( File directory, String includes, String excludes ) { DirectoryScanner scanner = new DirectoryScanner(); scanner.setBasedir( directory ); scanner.setIncludes( StringUtils.split( includes, "," ) ); scanner.setExcludes( StringUtils.split( excludes, "," ) ); scanner.scan(); return scanner.getIncludedFiles(); } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/Surefire763EnvironmentForkMode.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/Surefire760000644000175000017500000000277611625457076032431 0ustar tonytonypackage org.apache.maven.surefire.its.misc; /* * 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. */ import org.apache.maven.surefire.its.SurefireVerifierTestClass; /** * SUREFIRE-674 Asserts that the build fails when tests have errors * * @author Kristian Rosenvold */ public class Surefire763EnvironmentForkMode extends SurefireVerifierTestClass { public Surefire763EnvironmentForkMode() { super( "/environment-variables" ); } public void okWhenUseSystemClassLoader() throws Exception { addGoal( "-DuseSystemClassLoader=true" ); executeTest(); } public void okeWhenDontUseSystemClassLoader() throws Exception { addGoal( "-DuseSystemClassLoader=false" ); executeTest(); } }././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/ReportTestSuite.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/ReportTest0000644000175000017500000000723311540712701032555 0ustar tonytonypackage org.apache.maven.surefire.its.misc; /* * 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. */ import java.util.ArrayList; import java.util.List; /** * @version $Id$ */ public class ReportTestSuite { private List testCases = new ArrayList(); private int numberOfErrors; private int numberOfFailures; private int numberOfSkipped; private Integer numberOfTests; private String name; private String fullClassName; private String packageName; private float timeElapsed; public List getTestCases() { return this.testCases; } public int getNumberOfErrors() { return numberOfErrors; } public void setNumberOfErrors( int numberOfErrors ) { this.numberOfErrors = numberOfErrors; } public int getNumberOfFailures() { return numberOfFailures; } public void setNumberOfFailures( int numberOfFailures ) { this.numberOfFailures = numberOfFailures; } public int getNumberOfSkipped() { return numberOfSkipped; } public void setNumberOfSkipped( int numberOfSkipped ) { this.numberOfSkipped = numberOfSkipped; } public int getNumberOfTests() { if ( numberOfTests != null ) { return numberOfTests.intValue(); } if ( testCases != null ) { return testCases.size(); } return 0; } public void setNumberOfTests( int numberOfTests ) { this.numberOfTests = new Integer( numberOfTests ); } public String getName() { return name; } public void setName( String name ) { this.name = name; } public String getFullClassName() { return fullClassName; } public void setFullClassName( String fullClassName ) { this.fullClassName = fullClassName; int lastDotPosition = fullClassName.lastIndexOf( "." ); name = fullClassName.substring( lastDotPosition + 1, fullClassName.length() ); if ( lastDotPosition < 0 ) { /* no package name */ packageName = ""; } else { packageName = fullClassName.substring( 0, lastDotPosition ); } } public String getPackageName() { return packageName; } public void setPackageName( String packageName ) { this.packageName = packageName; } public float getTimeElapsed() { return this.timeElapsed; } public void setTimeElapsed( float timeElapsed ) { this.timeElapsed = timeElapsed; } public void setTestCases( List testCases ) { this.testCases = testCases; } /** {@inheritDoc} */ public String toString() { return fullClassName + " [" + getNumberOfTests() + "/" + getNumberOfFailures() + "/" + getNumberOfErrors() + "/" + getNumberOfSkipped() + "]"; } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/Surefire740TruncatedCommaIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/Surefire740000644000175000017500000000332711565265037032415 0ustar tonytonypackage org.apache.maven.surefire.its.misc; /* * 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. */ import java.io.File; import org.apache.maven.surefire.its.SurefireVerifierTestClass; /** * Test Surefire-740 Truncated comma with non us locale * * @author Kristian Rosenvold */ public class Surefire740TruncatedCommaIT extends SurefireVerifierTestClass { public Surefire740TruncatedCommaIT() { super( "/surefire-740-comma-truncated" ); } public void testRussianLocaleReport() throws Exception { addEnvVar( "MAVEN_OPTS", "-Duser.language=ru -Duser.country=RU" ); failNever(); execute( getSurefireReportGoal() ); File siteFile = getSiteFile( "surefire-report.html" ); System.out.println( "siteFile.getAbsolutePath() = " + siteFile.getAbsolutePath() ); assertTrue( "Expecting file", siteFile.exists()); assertContainsText( siteFile, "027" ); // Avoid asserting with the "," or "." ;) } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/HelperAssertions.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/HelperAsse0000644000175000017500000001000411540712701032463 0ustar tonytonypackage org.apache.maven.surefire.its.misc; /* * 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. */ import org.apache.maven.surefire.its.IntegrationTestSuiteResults; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Locale; import junit.framework.Assert; @SuppressWarnings( { "JavaDoc" } ) public class HelperAssertions { /** * assert that the reports in the specified testDir have the right summary statistics */ public static void assertTestSuiteResults( int total, int errors, int failures, int skipped, File testDir ) { IntegrationTestSuiteResults suite = parseTestResults( new File[]{ testDir } ); assertTestSuiteResults( total, errors, failures, skipped, suite ); } public static void assertTestSuiteResults( int total, int errors, int failures, int skipped, IntegrationTestSuiteResults actualSuite ) { Assert.assertEquals( "wrong number of tests", total, actualSuite.getTotal() ); Assert.assertEquals( "wrong number of errors", errors, actualSuite.getErrors() ); Assert.assertEquals( "wrong number of failures", failures, actualSuite.getFailures() ); Assert.assertEquals( "wrong number of skipped", skipped, actualSuite.getSkipped() ); } public static IntegrationTestSuiteResults parseTestResults( File testDir ) { return parseTestResults( new File[]{ testDir } ); } public static IntegrationTestSuiteResults parseTestResults( File[] testDirs ) { List reports = extractReports( testDirs ); return parseReportList( reports ); } /** * Converts a list of ReportTestSuites into an IntegrationTestSuiteResults object, suitable for summary assertions */ public static IntegrationTestSuiteResults parseReportList( List reports ) { Assert.assertTrue( "No reports!", reports.size() > 0 ); int total = 0, errors = 0, failures = 0, skipped = 0; for ( int i = 0; i < reports.size(); i++ ) { ReportTestSuite suite = (ReportTestSuite) reports.get( i ); total += suite.getNumberOfTests(); errors += suite.getNumberOfErrors(); failures += suite.getNumberOfFailures(); skipped += suite.getNumberOfSkipped(); } return new IntegrationTestSuiteResults( total, errors, failures, skipped ); } public static List extractReports( File[] testDirs ) { List reportsDirs = new ArrayList(); for ( int i = 0; i < testDirs.length; i++ ) { File testDir = testDirs[i]; File reportsDir = new File( testDir, "target/surefire-reports" ); Assert.assertTrue( "Reports directory is missing: " + reportsDir.getAbsolutePath(), reportsDir.exists() ); reportsDirs.add( reportsDir ); } SurefireReportParser parser = new SurefireReportParser( reportsDirs, Locale.getDefault() ); List reports; try { reports = parser.parseXMLReportFiles(); } catch ( Exception e ) { throw new RuntimeException( "Couldn't parse XML reports", e ); } return reports; } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/ReportTestCase.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/misc/ReportTest0000644000175000017500000000431511540712701032553 0ustar tonytonypackage org.apache.maven.surefire.its.misc; /* * 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. */ import java.util.HashMap; import java.util.Map; /** * @version $Id$ */ public class ReportTestCase { private String fullClassName; private String className; private String fullName; private String name; private float time; private Map failure; public String getName() { return name; } public void setName( String name ) { this.name = name; } public String getFullClassName() { return fullClassName; } public void setFullClassName( String name ) { this.fullClassName = name; } public String getClassName() { return className; } public void setClassName( String name ) { this.className = name; } public float getTime() { return time; } public void setTime( float time ) { this.time = time; } public Map getFailure() { return failure; } public String getFullName() { return fullName; } public void setFullName( String fullName ) { this.fullName = fullName; } public void addFailure( String message, String type ) { failure = new HashMap(); failure.put( "message", message ); failure.put( "type", type ); } /** {@inheritDoc} */ public String toString() { return fullName; } } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/NoRunnableTestsInClassIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/NoRunnableTests0000644000175000017500000000252011513156632032574 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * SUREFIRE-621 Asserts proper test counts when running junit 3 tests in parallel * * @author Kristian Rosenvold */ public class NoRunnableTestsInClassIT extends SurefireVerifierTestClass { public NoRunnableTestsInClassIT() { super( "/norunnableTests" ); } public void testJunit3ParallelBuildResultCount() throws Exception { failNever(); execute( "test" ); verifyTextInLog( "No tests found in junit.norunnabletests.BasicTest" ); } }././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire376TestNgAfterSuiteFailure.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire376Test0000644000175000017500000000246711506466561032413 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test Surefire-376 (TestNG @AfterSuite failures are ignored) * * @author Dan Fabulich */ public class Surefire376TestNgAfterSuiteFailure extends SurefireVerifierTestClass { public Surefire376TestNgAfterSuiteFailure() { super( "/testng-afterSuiteFailure" ); } public void testAfterSuiteFailure() throws Exception { executeTest(); assertTestSuiteResults( 2, 0, 1, 0 ); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgBeforeMethodFailureIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgBefo0000644000175000017500000000375511540712701032452 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test failures in @BeforeMethod annotation on TestNg suite * * @author Dan Fabulich */ public class CheckTestNgBeforeMethodFailureIT extends AbstractSurefireIntegrationTestClass { public void testTestNgBeforeMethodFailure() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-beforeMethodFailure" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); try { this.executeGoal( verifier, "test" ); verifier.resetStreams(); verifier.verifyErrorFreeLog(); fail( "Build didn't fail, but it should" ); } catch ( VerificationException e ) { // as expected } finally { verifier.resetStreams(); } HelperAssertions.assertTestSuiteResults( 2, 0, 1, 1, testDir ); } } ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckSingleTestIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckSingleTest0000644000175000017500000000764511540712701032535 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; import java.util.List; /** * Test running a single test with -Dtest=BasicTest * * @author Dan Fabulich */ public class CheckSingleTestIT extends AbstractSurefireIntegrationTestClass { public void testSingleTest() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/default-configuration" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = this.getInitialGoals(); goals.add( "test" ); goals.add( "-Dtest=BasicTest" ); executeGoals( verifier, goals ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } public void testSingleTestDotJava() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/default-configuration" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = this.getInitialGoals(); goals.add( "test" ); goals.add( "-Dtest=BasicTest.java" ); executeGoals( verifier, goals ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } public void testSingleTestNonExistent() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/default-configuration" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = this.getInitialGoals(); goals.add( "test" ); goals.add( "-Dtest=DoesNotExist" ); try { executeGoals( verifier, goals ); verifier.verifyErrorFreeLog(); fail( "Build should have failed" ); } catch ( VerificationException e ) { // as expected } finally { verifier.resetStreams(); } File reportsDir = new File( testDir, "target/surefire-reports" ); assertFalse( "Unexpected reports directory", reportsDir.exists() ); } public void testSingleTestNonExistentOverride() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/default-configuration" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = this.getInitialGoals(); goals.add( "test" ); goals.add( "-Dtest=DoesNotExist" ); goals.add( "-DfailIfNoTests=false" ); executeGoals( verifier, goals ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); File reportsDir = new File( testDir, "target/surefire-reports" ); assertFalse( "Unexpected reports directory", reportsDir.exists() ); } } ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire257NotRerunningTestsIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire257NotR0000644000175000017500000000264211565265037032347 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test Surefire-257 Verifies that surefire does not re-run tests in site build * * @author Kristian Rosenvold */ public class Surefire257NotRerunningTestsIT extends SurefireVerifierTestClass { public Surefire257NotRerunningTestsIT() { super( "/surefire-257-rerunningTests" ); } public void testShouldNotRerun() throws Exception { addGoal( getSurefireReportGoal() ); execute( getSurefireReportGoal() ); verifyTextInLog( "Skipping execution of surefire because it has already been run for this configuration" ); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/WorkingDirectoryMissingIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/WorkingDirector0000644000175000017500000000324211367751466032641 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import java.io.File; import java.io.IOException; /** * Test when the configured working directory does not exist, SUREFIRE-607 * * @author Stephen Connolly */ public class WorkingDirectoryMissingIT extends AbstractSurefireIntegrationTestClass { private File testDir; public void setUp() throws IOException { testDir = ResourceExtractor.simpleExtractResources( getClass(), "/working-directory-missing" ); } public void testWorkingDirectory() throws Exception { Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); } } ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit44HamcrestIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit44Hamcrest0000644000175000017500000000245011506466561032407 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using JUnit4.4 (including Hamcrest extensions) * * @author Dan Fabulich */ public class JUnit44HamcrestIT extends SurefireVerifierTestClass { public JUnit44HamcrestIT() { super( "/junit44-hamcrest" ); } public void testJUnit44Hamcrest() throws Exception { executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AsbtractTestMethodPattern.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AsbtractTestMet0000644000175000017500000000247511532036337032570 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using -Dtest=mtClass#myMethod * * @author Olivier Lamy */ public abstract class AsbtractTestMethodPattern extends SurefireVerifierTestClass { public AsbtractTestMethodPattern(String projectResource) { super( projectResource ); } public void testMethodPattern() throws Exception { executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 2, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire673MockitoIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire673Mock0000644000175000017500000000241211506466561032353 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * SUREFIRE-673 Asserts that a given mockito build works as it should (classloader problem in 2.7) * * @author Kristian Rosenvold */ public class Surefire673MockitoIT extends SurefireVerifierTestClass { public Surefire673MockitoIT() { super( "/surefire-673-mockito" ); } public void testBuildFailingWhenErrors() throws Exception { executeTest(); verifyErrorFreeLog(); } }././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/UmlautDirIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/UmlautDirIT.jav0000644000175000017500000000530711540712701032431 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.FileUtils; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; import java.io.IOException; import java.util.List; /** * Test a directory with an umlaut * * @author Dan Fabulich */ public class UmlautDirIT extends AbstractSurefireIntegrationTestClass { File testDir; public void testUmlaut() throws Exception { Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } public void testUmlautIsolatedClassLoader() throws Exception { Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = this.getInitialGoals(); goals.add( "test" ); goals.add( "-DuseSystemClassLoader=false" ); executeGoals( verifier, goals ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } public void setUp() throws IOException { String tempDirPath = System.getProperty( "maven.test.tmpdir", System.getProperty( "java.io.tmpdir" ) ); File tempDir = new File( tempDirPath ); File targetDir = new File( "target" ).getAbsoluteFile(); if ( targetDir.exists() && targetDir.isDirectory() ) { tempDir = targetDir; } testDir = new File( tempDir, "/junit-pathWith\u00DCmlaut" ); FileUtils.deleteDirectory( testDir ); testDir = ResourceExtractor.extractResourcePath( getClass(), "/junit-pathWithUmlaut", testDir, true ); } } ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire408ManualProviderSelectionIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire408Manu0000644000175000017500000000261211506151575032354 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * SUREFIRE-613 Asserts proper test counts when running in parallel * * @author Kristian Rosenvold */ public class Surefire408ManualProviderSelectionIT extends SurefireVerifierTestClass { public Surefire408ManualProviderSelectionIT( ) { super( "/surefire-408-manual-provider-selection" ); } public void testPaallelBuildResultCount() throws Exception { showErrorStackTraces(); executeTest(); verifyTextInLog( "Using configured provider org.apache.maven.surefire.junit.JUnit3Provider" ); } }././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgTestSingleMethodIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgTestSingl0000644000175000017500000000216611531766477032573 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using -Dtest=mtClass#myMethod * * @author Olivier Lamy */ public class TestNgTestSingleMethodIT extends AbstractTestSingleMethod { public TestNgTestSingleMethodIT() { super( "/testng-single-method" ); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgPathWithSpacesIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgPath0000644000175000017500000000323211540712701032461 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test TestNG test in a directory with spaces * * @author Dan Fabulich */ public class CheckTestNgPathWithSpacesIT extends AbstractSurefireIntegrationTestClass { public void testTestNgTestWithSpaces() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-path with spaces" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Junit47concurrencyIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Junit47concurre0000644000175000017500000000250611515322672032520 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Basic suite test using all known versions of JUnit 4.x * * @author Kristian Rosenvold */ public class Junit47concurrencyIT extends SurefireVerifierTestClass { public Junit47concurrencyIT() { super( "/concurrentjunit47" ); } public void test47() throws Exception { // todo: Align with others addGoal( "-DjunitVersion=4.7" ); executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); } }././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractSurefireIntegrationTestClass.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractSurefir0000644000175000017500000000670311557340256032625 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import junit.framework.TestCase; import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; import java.util.ArrayList; import java.util.List; /** * Base class of all integration test cases. Mainly used to pickup surefire version * from system property * * @author Dan T. Tran */ public abstract class AbstractSurefireIntegrationTestClass extends TestCase { private final String surefireVersion = System.getProperty( "surefire.version" ); private final String testNgVersion = System.getProperty( "testng.version" ); protected List getInitialGoals() { return getInitialGoals( testNgVersion ); } protected List getInitialGoals( String testNgVersion ) { List goals = new ArrayList(); goals.add( "-Dsurefire.version=" + surefireVersion ); if ( testNgVersion != null ) { goals.add( "-DtestNgVersion=" + testNgVersion ); ArtifactVersion v = new DefaultArtifactVersion( testNgVersion ); try { if ( VersionRange.createFromVersionSpec( "(,5.12.1)" ).containsVersion( v ) ) { goals.add( "-DtestNgClassifier=jdk15" ); } } catch ( InvalidVersionSpecificationException e ) { throw new RuntimeException( e.getMessage(), e ); } } return goals; } protected void executeGoal( Verifier verifier, String goal ) throws VerificationException { List goals = getInitialGoals(); goals.add( goal ); executeGoals( verifier, goals ); } @SuppressWarnings( { "unchecked" } ) protected void executeGoals( Verifier verifier, List goals ) throws VerificationException { if ( !verifier.getCliOptions().contains( "-s" ) ) { String settingsPath = System.getProperty( "maven.settings.file" ); if ( settingsPath.indexOf( ' ' ) >= 0 ) { settingsPath = '"' + settingsPath + '"'; } verifier.getCliOptions().add( "-s" ); verifier.getCliOptions().add( settingsPath ); } verifier.executeGoals( goals ); } protected String getSurefireVersion() { return surefireVersion; } } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgTestMethodPatternBeforeIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgTestMetho0000644000175000017500000000221611546571210032550 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using -Dtest=mtClass#myMethod* * * @author Olivier Lamy */ public class TestNgTestMethodPatternBeforeIT extends AsbtractTestMethodPattern { public TestNgTestMethodPatternBeforeIT() { super( "/testng-method-pattern-before" ); } } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/UseIsolatedClassLoaderIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/UseIsolatedClas0000644000175000017500000000245211506466561032545 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test useSystemClassLoader option * * @author Dan Fabulich */ public class UseIsolatedClassLoaderIT extends SurefireVerifierTestClass { public UseIsolatedClassLoaderIT() { super( "/isolated-classloader" ); } public void testUseSystemClassLoader() throws Exception { this.executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire500PuzzlingErrorIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire500Puzz0000644000175000017500000000274111531760250032412 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import java.io.File; /** * SUREFIRE-500 Asserts correct error handling for the "odd" surefire-500 (and 625) issues. * * @author Kristian Rosenvold */ public class Surefire500PuzzlingErrorIT extends SurefireVerifierTestClass { public Surefire500PuzzlingErrorIT() { super( "/surefire-500-puzzling-error" ); } public void testBuildFailingWhenErrors() throws Exception { failNever(); executeTest(); File surefireReportsFile = getSurefireReportsFile( "surefire500.ExplodingTest.txt" ); assertContainsText( surefireReportsFile, "java.lang.NoClassDefFoundError: whoops!" ); } }././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit48TestMethodPatternIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnit48TestMeth0000644000175000017500000000217511531766477032415 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using -Dtest=mtClass#myMethod * * @author Olivier Lamy */ public class JUnit48TestMethodPatternIT extends AsbtractTestMethodPattern { public JUnit48TestMethodPatternIT() { super( "/junit48-method-pattern" ); } } surefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ArgLineIT.java0000644000175000017500000000315311540712701032202 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test passing an argLine parameter * * @author Dan Fabulich */ public class ArgLineIT extends AbstractSurefireIntegrationTestClass { public void testArgLine() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/argLine-parameter" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire260TestWithIdenticalNamesIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire260Test0000644000175000017500000000441011532036337032362 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import java.io.File; import java.net.URI; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlAnchor; import com.gargoylesoftware.htmlunit.html.HtmlDivision; import com.gargoylesoftware.htmlunit.html.HtmlPage; /** * Test Surefire-570 Multiple report directories * * @author Kristian Rosenvold */ public class Surefire260TestWithIdenticalNamesIT extends SurefireVerifierTestClass { public Surefire260TestWithIdenticalNamesIT() { super( "/surefire-260-testWithIdenticalNames" ); } public void testWithIdenticalNames() throws Exception { failNever(); executeTest(); reset(); execute("surefire-report:report" ); File siteFile = getSiteFile( "surefire-report.html" ); final URI uri = siteFile.toURI(); final WebClient webClient = new WebClient(); webClient.setJavaScriptEnabled( true ); final HtmlPage page = webClient.getPage( uri.toURL() ); final HtmlAnchor a = (HtmlAnchor) page.getByXPath( "//a[contains(@href, 'surefire260_TestB_testDup')]" ).get( 0 ); final HtmlDivision content = (HtmlDivision) page.getElementById( "surefire260_TestB_testDuperror" ); assertTrue( content.getAttribute( "style" ).contains( "none" ) ); a.click(); assertFalse( content.getAttribute( "style" ).contains( "none" ) ); webClient.closeAllWindows(); } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ClassPathOrderIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ClassPathOrderI0000644000175000017500000000321011540712701032465 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test for checking the order of class path elements * * @author Dan Fabulich */ public class ClassPathOrderIT extends AbstractSurefireIntegrationTestClass { public void testClassPathOrder() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/classpath-order" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 2, 0, 0, 0, testDir ); } } ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire628ConsoleOutputBeforeAndAfterClassIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire628Cons0000644000175000017500000000305411556104214032354 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Asserts that console output always goes somewhere ;) * * @author Kristian Rosenvold */ public class Surefire628ConsoleOutputBeforeAndAfterClassIT extends SurefireVerifierTestClass { public Surefire628ConsoleOutputBeforeAndAfterClassIT() { super( "/surefire-628-consoleoutputbeforeandafterclass" ); } public void testJunit3ParallelBuildResultCount() throws Exception { failNever(); executeTest(); verifyTextInLog( "628Test1" ); verifyTextInLog( "Before628Test1" ); verifyTextInLog( "After628Test1" ); verifyTextInLog( "628Test2" ); verifyTextInLog( "Before628Test2" ); verifyTextInLog( "After628Test2" ); } }././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire146ForkPerTestNoSetupIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire146Fork0000644000175000017500000000246711506466561032370 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test Surefire-146 (forkMode=pertest fails to call setUp) * * @author Dan Fabulich */ public class Surefire146ForkPerTestNoSetupIT extends SurefireVerifierTestClass { public Surefire146ForkPerTestNoSetupIT() { super( "/surefire-146-forkPerTestNoSetup" ); } public void testForkPerTestNoSetup() throws Exception { executeTest(); assertTestSuiteResults( 1, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestFailIfNoTestsForkModeIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestFailIf0000644000175000017500000000626011540712701032436 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; import java.io.IOException; import java.util.List; /** * Test failIfNoTests with various forkModes. * * @author Dan Fabulich */ public class CheckTestFailIfNoTestsForkModeIT extends AbstractSurefireIntegrationTestClass { public void testFailIfNoTestsForkModeAlways() throws Exception { doTest( "always", true ); } public void testFailIfNoTestsForkModeNever() throws Exception { doTest( "never", true ); } public void testFailIfNoTestsForkModeOnce() throws Exception { doTest( "once", true ); } public void testDontFailIfNoTestsForkModeAlways() throws Exception { doTest( "always", false ); } public void testDontFailIfNoTestsForkModeNever() throws Exception { doTest( "never", false ); } public void testDontFailIfNoTestsForkModeOnce() throws Exception { doTest( "once", false ); } private void doTest( String forkMode, boolean failIfNoTests ) throws IOException, VerificationException { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/default-configuration-classWithNoTests" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = this.getInitialGoals(); goals.add( "test" ); goals.add( "-DforkMode=" + forkMode ); goals.add( "-DfailIfNoTests=" + failIfNoTests ); if ( failIfNoTests ) { try { executeGoals( verifier, goals ); verifier.resetStreams(); verifier.verifyErrorFreeLog(); fail( "Build did not fail, but it should have" ); } catch ( VerificationException e ) { // this is what we expected } } else { executeGoals( verifier, goals ); verifier.resetStreams(); verifier.verifyErrorFreeLog(); HelperAssertions.assertTestSuiteResults( 0, 0, 0, 0, testDir ); } } } ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire735ForkFailWithRedirectConsoleOutputIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire735Fork0000644000175000017500000000246511562013564032363 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; /** * @author Kristian Rosenvold */ public class Surefire735ForkFailWithRedirectConsoleOutputIT extends SurefireVerifierTestClass { public Surefire735ForkFailWithRedirectConsoleOutputIT() { super( "/fork-fail" ); } public void testVMStartFail() throws Exception { failNever(); executeTest(); verifyTextInLog( "Invalid maximum heap size: -Xmxxxx712743m" ); } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnitDepIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/JUnitDepIT.java0000644000175000017500000000405611524571361032355 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using JUnit4.4 -dep. junit-dep includes only junit.* classes, and depends explicitly on hamcrest-core * * @author Dan Fabulich */ public class JUnitDepIT extends SurefireVerifierTestClass { public JUnitDepIT() { super( "/junit44-dep" ); } public void testJUnit44Dep() throws Exception { debugLogging(); addGoal( "-Djunit-dep.version=4.4" ); executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); verifyTextInLog( "surefire-junit4" ); // Ahem. Will match on the 4.7 provider too } public void testJUnit44DepWithSneaky381() throws Exception { debugLogging(); activateProfile("provided381"); addGoal( "-Djunit-dep.version=4.4" ); executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); } public void testJUnit47Dep() throws Exception { debugLogging(); addGoal( "-Djunit-dep.version=4.7" ); executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); verifyTextInLog( "surefire-junit47" ); } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractTestCaseIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/AbstractTestCas0000644000175000017500000000335611540712701032543 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test files with "Abstract" in their name that aren't really abstract, * and abstract classes that don't say "Abstract" in their name * * @author Dan Fabulich */ public class AbstractTestCaseIT extends AbstractSurefireIntegrationTestClass { public void testAbstractTestCase() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/default-configuration-abstract" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } } ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire634UnsettableSystemPropertiesWarningIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire634Unse0000644000175000017500000000255611534231136032367 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * SUREFIRE-634 Verifies error message on unsettable system properties * * @author Kristian Rosenvold */ public class Surefire634UnsettableSystemPropertiesWarningIT extends SurefireVerifierTestClass { public Surefire634UnsettableSystemPropertiesWarningIT() { super( "/surefire-634-systemPropertiesWarning" ); } public void testJunit3ParallelBuildResultCount() throws Exception { executeTest(); verifyTextInLog( "java.library.path cannot be set as system property" ); } }././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire162CharsetProviderIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire162Char0000644000175000017500000000370311506466561032334 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.codehaus.plexus.util.FileUtils; import java.io.File; /** * Test charset provider (SUREFIRE-162) * * @author Dan Fabulich */ public class Surefire162CharsetProviderIT extends SurefireVerifierTestClass { public Surefire162CharsetProviderIT() { super( "/surefire-162-charsetProvider" ); } @SuppressWarnings( { "ResultOfMethodCallIgnored" } ) public void testCharsetProvider() throws Exception { Verifier verifier = getVerifier(); File jarFile = new File( verifier.getArtifactPath( "jcharset", "jcharset", "1.2.1", "jar" ) ); jarFile.getParentFile().mkdirs(); FileUtils.copyFile( getSubFile( "repo/jcharset/jcharset/1.2.1/jcharset-1.2.1.jar" ), jarFile ); FileUtils.copyFile( getSubFile( "repo/jcharset/jcharset/1.2.1/jcharset-1.2.1.pom" ), new File( verifier.getArtifactPath( "jcharset", "jcharset", "1.2.1", "pom" ) ) ); executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgTestMethodPatternIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgTestMetho0000644000175000017500000000217311531766477032571 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using -Dtest=mtClass#myMethod* * * @author Olivier Lamy */ public class TestNgTestMethodPatternIT extends AsbtractTestMethodPattern { public TestNgTestMethodPatternIT() { super( "/testng-method-pattern" ); } } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire697NiceSummaryIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire697Nice0000644000175000017500000000272111535235020032333 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * SUREFIRE-697 Asserts proper truncation of long exception messages * Some say testing this is a bit over the top. * * @author Kristian Rosenvold */ public class Surefire697NiceSummaryIT extends SurefireVerifierTestClass { public Surefire697NiceSummaryIT() { super( "/surefire-697-niceSummary" ); } public void testBuildFailingWhenErrors() throws Exception { failNever( ); executeTest(); verifyTextInLog( "testShortMultiline(junit.surefire697.BasicTest): A very short multiline message" ); // Could assert that "Here is line 2" is not present too. } } ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/PlainOldJavaClasspathIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/PlainOldJavaCla0000644000175000017500000000245311506466561032446 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test useManifestOnlyJar option * * @author Dan Fabulich */ public class PlainOldJavaClasspathIT extends SurefireVerifierTestClass { public PlainOldJavaClasspathIT() { super( "/plain-old-java-classpath" ); } public void testPlainOldJavaClasspath() throws Exception { this.executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 1, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/SurefireVerifierTestClass.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/SurefireVerifie0000644000175000017500000002543211565265037032622 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.StringTokenizer; import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; import org.apache.maven.it.util.FileUtils; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import junit.framework.Assert; import junit.framework.TestCase; /** * Contains commonly used featurtes for most tests, encapsulating * common use cases. *

* Also includes thread-safe access to the extracted resource * files, which AbstractSurefireIntegrationTestClass does not. * Thread safe only for running in "classes" mode. * * @author Kristian Rosenvold */ public abstract class SurefireVerifierTestClass extends TestCase { private final File testDir; private final List cliOptions = new ArrayList(); private final List goals; private final Verifier verifier; private final Map envvars = new HashMap( ); private final String testNgVersion = System.getProperty( "testng.version" ); private final String surefireVersion = System.getProperty( "surefire.version" ); protected SurefireVerifierTestClass( String testProject ) { try { testDir = simpleExtractResources( getClass(), testProject ); this.goals = getInitialGoals(); this.verifier = new Verifier( testDir.getAbsolutePath() ); } catch ( VerificationException e ) { throw new RuntimeException( e ); } catch ( IOException e ) { throw new RuntimeException( e ); } } private File simpleExtractResources( Class cl, String resourcePath ) throws IOException { String tempDirPath = System.getProperty( "maven.test.tmpdir", System.getProperty( "java.io.tmpdir" ) ); File tempDir = new File( tempDirPath, this.getClass().getSimpleName() ); File testDir = new File( tempDir, resourcePath ); FileUtils.deleteDirectory( testDir ); return ResourceExtractor.extractResourcePath( cl, resourcePath, tempDir, true ); } protected void reset() { goals.clear(); goals.addAll( getInitialGoals() ); cliOptions.clear(); } protected void addEnvVar(String key, String value){ envvars.put( key, value ); } private List getInitialGoals() { List goals1 = new ArrayList(); goals1.add( "-Dsurefire.version=" + surefireVersion ); if ( testNgVersion != null ) { goals1.add( "-DtestNgVersion=" + testNgVersion ); ArtifactVersion v = new DefaultArtifactVersion( testNgVersion ); try { if ( VersionRange.createFromVersionSpec( "(,5.12.1)" ).containsVersion( v ) ) { goals1.add( "-DtestNgClassifier=jdk15" ); } } catch ( InvalidVersionSpecificationException e ) { throw new RuntimeException( e.getMessage(), e ); } } return goals1; } protected List getInitialGoals( String testNgVersion ) { List goals = new ArrayList(); goals.add( "-Dsurefire.version=" + surefireVersion ); if ( testNgVersion != null ) { goals.add( "-DtestNgVersion=" + testNgVersion ); ArtifactVersion v = new DefaultArtifactVersion( testNgVersion ); try { if ( VersionRange.createFromVersionSpec( "(,5.12.1)" ).containsVersion( v ) ) { goals.add( "-DtestNgClassifier=jdk15" ); } } catch ( InvalidVersionSpecificationException e ) { throw new RuntimeException( e.getMessage(), e ); } } return goals; } /** * Returns a file, referenced from the extracted root (where pom.xml is located) * * @param path The subdirectory under basedir * @return A file */ protected File getSubFile( String path ) { return new File( testDir, path ); } protected void assertPresent( File file ) { verifier.assertFilePresent( file.getAbsolutePath() ); } protected void assertNotPresent( File file ) { verifier.assertFileNotPresent( file.getAbsolutePath() ); } protected void showErrorStackTraces() { cliOptions.add( "-e" ); } protected void debugLogging() { cliOptions.add( "-X" ); } protected void failNever() { cliOptions.add( "-fn" ); } protected SurefireVerifierTestClass addGoal( String goal ) { goals.add( goal ); return this; } protected Verifier executeTest() throws VerificationException { return execute( "test" ); } protected Verifier executeVerify() throws VerificationException { return execute( "verify" ); } protected Verifier execute( String goal ) throws VerificationException { addGoal( goal ); verifier.setCliOptions( cliOptions ); try { verifier.executeGoals( goals, envvars ); return verifier; } finally { verifier.resetStreams(); } } protected File getSurefireReportsFile( String fileName ) { File targetDir = getSubFile( "target/surefire-reports" ); return new File( targetDir, fileName ); } protected File getSiteFile( String fileName ) { File targetDir = getSubFile( "target/site" ); return new File( targetDir, fileName ); } protected File getTargetFile( String fileName ) { File targetDir = getSubFile( "target" ); return new File( targetDir, fileName ); } protected File getSiteFile( String moduleName, String fileName ) { File targetDir = getSubFile( moduleName + "/target/site" ); return new File( targetDir, fileName ); } protected void printSummary( boolean printsummary ) { addGoal( "-DprintSummary=" + printsummary ); } protected void redirectToFile( boolean redirect ) { addGoal( "-Dredirect.to.file=" + redirect ); } protected void forkOnce() { forkMode( "once" ); } protected void forkNever() { forkMode( "never" ); } protected void forkAlways() { forkMode( "always" ); } protected void forkMode( String forkMode ) { addGoal( "-DforkMode=" + forkMode ); } protected void activateProfile( String profile ) { addGoal( "-P" + profile ); } public void assertTestSuiteResults( int total, int errors, int failures, int skipped ) { HelperAssertions.assertTestSuiteResults( total, errors, failures, skipped, testDir ); } public void verifyTextInLog( String text ) throws VerificationException { verifier.verifyTextInLog( text ); } protected void verifyErrorFreeLog() throws VerificationException { verifier.verifyErrorFreeLog(); } protected Verifier getVerifier() { return verifier; } public File getTestDir() { return testDir; } protected boolean assertContainsText( File file, String text ) throws VerificationException { final List list = getVerifier().loadFile( file, false ); for ( String line : list ) { if ( line.contains( text ) ) { return true; } } Assert.fail( "Did not find expected message in log" ); return false; // doh } protected boolean isMaven3X() { return matchesVersionRange( "[3.0,)" ); } private DefaultArtifactVersion getMavenVersion() { try { String v = verifier.getMavenVersion(); // NOTE: If the version looks like "${...}" it has been configured from an undefined expression if ( v != null && v.length() > 0 && !v.startsWith( "${" ) ) { return new DefaultArtifactVersion( v ); } } catch ( VerificationException e ) { throw new RuntimeException( e ); } return null; } /** * This allows fine-grained control over execution of individual test methods * by allowing tests to adjust to the current maven version, or else simply avoid * executing altogether if the wrong version is present. */ private boolean matchesVersionRange( String versionRangeStr ) { VersionRange versionRange; try { versionRange = VersionRange.createFromVersionSpec( versionRangeStr ); } catch ( InvalidVersionSpecificationException e ) { throw (RuntimeException) new IllegalArgumentException( "Invalid version range: " + versionRangeStr ).initCause( e ); } ArtifactVersion version = getMavenVersion(); if ( version != null ) { return versionRange.containsVersion( version ); } else { throw new IllegalStateException( "Cannot determine maven version" ); } } protected String getSurefireVersion() { return surefireVersion; } protected String getSurefireReportGoal() { return "org.apache.maven.plugins:maven-surefire-report-plugin:" + getSurefireVersion() + ":report"; } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/SiblingAggregatorIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/SiblingAggregat0000644000175000017500000000345611540712701032543 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test aggregator as a sibling to child modules; invokes modules as "../child" * * @author Dan Fabulich */ public class SiblingAggregatorIT extends AbstractSurefireIntegrationTestClass { public void testSiblingAggregator() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/sibling-aggregator" ); File aggregatorDir = new File( testDir, "aggregator" ); Verifier verifier = new Verifier( aggregatorDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); File child2Dir = new File( testDir, "child2" ); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, child2Dir ); } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/WorkingDirectoryIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/WorkingDirector0000644000175000017500000001077311557340256032640 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.List; import java.util.Properties; import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; /** * Test working directory configuration, SUREFIRE-416 * * @author Dan Fabulich */ public class WorkingDirectoryIT extends AbstractSurefireIntegrationTestClass { private File testDir; private File childTestDir; private File outFile; public void setUp() throws IOException { testDir = ResourceExtractor.simpleExtractResources( getClass(), "/working-directory" ); childTestDir = new File( testDir, "child" ); File targetDir = new File( childTestDir, "target" ); outFile = new File( targetDir, "out.txt" ); //noinspection ResultOfMethodCallIgnored outFile.delete(); } public void testWorkingDirectory() throws Exception { Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, childTestDir ); verifyOutputDirectory( childTestDir ); } public void verifyOutputDirectory( File childTestDir ) throws IOException { assertTrue( "out.txt doesn't exist: " + outFile.getAbsolutePath(), outFile.exists() ); Properties p = new Properties(); FileInputStream is = new FileInputStream( outFile ); p.load( is ); is.close(); String userDirPath = p.getProperty( "user.dir" ); assertNotNull( "user.dir was null in property file", userDirPath ); File userDir = new File( userDirPath ); // test if not a symlink if ( childTestDir.getCanonicalFile().equals( childTestDir.getAbsoluteFile() ) ) { assertEquals( "wrong user.dir ! symlink ", childTestDir.getAbsolutePath(), userDir.getAbsolutePath() ); } else { assertEquals( "wrong user.dir symlink ", childTestDir.getCanonicalPath(), userDir.getCanonicalPath() ); } } public void testWorkingDirectoryNoFork() throws Exception { Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = this.getInitialGoals(); goals.add( "test" ); goals.add( "-DforkMode=never" ); executeGoals( verifier, goals ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, childTestDir ); verifyOutputDirectory( childTestDir ); } public void testWorkingDirectoryChildOnly() throws Exception { Verifier verifier = new Verifier( childTestDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, childTestDir ); verifyOutputDirectory( childTestDir ); } public void testWorkingDirectoryChildOnlyNoFork() throws Exception { Verifier verifier = new Verifier( childTestDir.getAbsolutePath() ); List goals = this.getInitialGoals(); goals.add( "test" ); goals.add( "-DforkMode=never" ); executeGoals( verifier, goals ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, childTestDir ); verifyOutputDirectory( childTestDir ); } } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgParallelWithAnnotations.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgParallelW0000644000175000017500000000261011506635231032515 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test that TestNG's @Test(threadPoolSize = n, invocationCount=n) causes tests to be run in parallel. * * @author Haikal Saadh * */ public class TestNgParallelWithAnnotations extends SurefireVerifierTestClass { public TestNgParallelWithAnnotations() { super( "/testng-parallel-with-annotations" ); } public void testTestNgGroupThreadParallel () throws Exception { executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 3, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire705ParallelForkTimeoutIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire705Para0000644000175000017500000000332611533524371032340 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; /** * Test * * @author Kristian Rosenvold */ public class Surefire705ParallelForkTimeoutIT extends SurefireVerifierTestClass { public Surefire705ParallelForkTimeoutIT() { super( "/fork-timeout" ); } public void testTimeoutForked() throws Exception { try { addGoal( "-Djunit.version=4.8.1" ); addGoal( "-Djunit.parallel=classes" ); addGoal( "-DtimeOut=1" ); executeTest(); verifyErrorFreeLog(); fail( "Build didn't fail, but it should have" ); } catch ( VerificationException ignore ) { } // assertFalse( getSurefireReportsFile( "TEST-timeoutForked.BasicTest.xml" ).exists() ); // assertFalse( getSurefireReportsFile( "timeoutForked.BasicTest.txt" ).exists() ); } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgTestSingleMethod5149IT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgTestSingl0000644000175000017500000000220511531766477032565 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using -Dtest=mtClass#myMethod * * @author Olivier Lamy */ public class TestNgTestSingleMethod5149IT extends AbstractTestSingleMethod { public TestNgTestSingleMethod5149IT() { super( "/testng-single-method-5-14-9" ); } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ClasspathFilteringIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ClasspathFilter0000644000175000017500000000312211540712701032570 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test additionalClasspathElements * * @author pgier */ public class ClasspathFilteringIT extends AbstractSurefireIntegrationTestClass { public void testAdditionalClasspath() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/classpath-filtering" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire674BuildFailingWhenFailsafeErrorsIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire674Buil0000644000175000017500000000304711556104214032350 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.VerificationException; import junit.framework.Assert; /** * SUREFIRE-674 Asserts that the build fails when tests have errors * * @author Kristian Rosenvold */ public class Surefire674BuildFailingWhenFailsafeErrorsIT extends SurefireVerifierTestClass { public Surefire674BuildFailingWhenFailsafeErrorsIT() { super( "/failsafe-buildfail" ); } public void testBuildFailingWhenErrors() throws Exception { try { executeVerify(); Assert.fail( "The verifier should throw an exception" ); } catch ( VerificationException ignore ) { } verifyTextInLog( "BUILD FAILURE" ); } }././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgSuiteXmlIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/CheckTestNgSuit0000644000175000017500000000447211540712701032520 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; import java.util.Arrays; import java.util.List; /** * Test simple TestNG suite XML file * * @author Dan Fabulich */ public class CheckTestNgSuiteXmlIT extends AbstractSurefireIntegrationTestClass { public void testTestNgSuiteXml() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-suite-xml" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = getInitialGoals(); goals.add( "test" ); executeGoals( verifier, goals ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } public void testTestNgSuiteXmlForkModeAlways() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/testng-suite-xml" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); List goals = getInitialGoals(); goals.addAll( Arrays.asList( new String[]{ "test", "-DforkMode=always" } ) ); executeGoals( verifier, goals ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } } ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgTestMethodPatternAfterIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestNgTestMetho0000644000175000017500000000254611625457076032571 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test project using -Dtest=mtClass#myMethod* * * @author Olivier Lamy */ public class TestNgTestMethodPatternAfterIT extends AsbtractTestMethodPattern { public TestNgTestMethodPatternAfterIT() { super( "/testng-method-pattern-after" ); } public void testMethodPattern() throws Exception { executeTest(); verifyErrorFreeLog(); verifyTextInLog( "Called tearDown" ); assertTestSuiteResults( 2, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ReportersIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ReportersIT.jav0000644000175000017500000000272311510066505032510 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Asserts proper behaviour of console output when forking * SUREFIRE-679 * * @author Kristian Rosenvold */ public class ReportersIT extends SurefireVerifierTestClass { public ReportersIT() { super( "/reporters" ); } public void testRedirectOutputTestNg() throws Exception { redirectToFile( true ); printSummary( true ); execute( "test" ); assertPresent( getSurefireReportsFile( "TestSuite-output.txt" ) ); assertPresent( getSurefireReportsFile( "TEST-TestSuite.xml" ) ); assertPresent( getSurefireReportsFile( "TestSuite.txt" ) ); } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/SystemPropertiesTestIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/SystemPropertie0000644000175000017500000000343111561747754032704 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test system properties * * @author Dan Fabulich */ public class SystemPropertiesTestIT extends SurefireVerifierTestClass { public SystemPropertiesTestIT() { super( "/system-properties" ); } public void testSystemProperties() throws Exception { addGoal( "-DsetOnMavenCommandLine=baz" ); addGoal( "-DsetOnArgLineWorkAround=baz" ); executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 8, 0, 0, 0 ); } public void testSystemPropertiesNoFork() throws Exception { addGoal( "-DforkMode=never" ); addGoal( "-DsetOnArgLineWorkAround=baz" ); addGoal( "-DsetOnMavenCommandLine=baz" ); // DGF fake the argLine, since we're not forking addGoal( "-DsetOnArgLine=bar" ); executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 8, 0, 0, 0 ); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ClasspathScopeFilteringIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ClasspathScopeF0000644000175000017500000000313511540712701032526 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.it.Verifier; import org.apache.maven.it.util.ResourceExtractor; import org.apache.maven.surefire.its.misc.HelperAssertions; import java.io.File; /** * Test additionalClasspathElements * * @author pgier */ public class ClasspathScopeFilteringIT extends AbstractSurefireIntegrationTestClass { public void testAdditionalClasspath() throws Exception { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/classpath-scope-filtering" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); this.executeGoal( verifier, "test" ); verifier.verifyErrorFreeLog(); verifier.resetStreams(); HelperAssertions.assertTestSuiteResults( 1, 0, 0, 0, testDir ); } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkConsoleOutputIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/ForkConsoleOutp0000644000175000017500000000436311506455154032614 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Asserts proper behaviour of console output when forking * SUREFIRE-639 * SUREFIRE-651 * * @author Kristian Rosenvold */ public class ForkConsoleOutputIT extends SurefireVerifierTestClass { public ForkConsoleOutputIT() { super( "/fork-consoleOutput" ); } public void testPrintSummaryTrueWithRedirect() throws Exception { redirectToFile( true ); printSummary( true ); execute( "test" ); assertPresent( getSurefireReportsFile( "forkConsoleOutput.Test1-output.txt" ) ); } public void testPrintSummaryTrueWithoutRedirect() throws Exception { redirectToFile( false ); printSummary( true ); execute( "test" ); assertNotPresent( getSurefireReportsFile( "forkConsoleOutput.Test1-output.txt" ) ); } public void testPrintSummaryFalseWithRedirect() throws Exception { redirectToFile( true ); printSummary( false ); debugLogging(); showErrorStackTraces(); execute( "test" ); assertPresent( getSurefireReportsFile( "forkConsoleOutput.Test1-output.txt" ) ); } public void testPrintSummaryFalseWithoutRedirect() throws Exception { redirectToFile( false ); printSummary( false ); execute( "test" ); assertNotPresent( getSurefireReportsFile( "forkConsoleOutput.Test1-output.txt" ) ); } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Junit4IgnoreIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Junit4IgnoreIT.0000644000175000017500000000304511573227313032346 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * Test JUnit 4 tests marked with "Ignore" attribute * * @author Dan Fabulich */ public class Junit4IgnoreIT extends SurefireVerifierTestClass { public Junit4IgnoreIT() { super( "/junit-ignore"); } public void testJunit4Ignore() throws Exception { executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 3, 0, 0, 3 ); } public void testJunit47ParallelIgnore() throws Exception { addGoal( "-Djunit.version=4.8.1" ); addGoal( "-Dsurefire.parallel=classes" ); executeTest(); verifyErrorFreeLog(); assertTestSuiteResults( 3, 0, 0, 3 ); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire34SecurityManagerIT.javasurefire-2.10/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire34Secur0000644000175000017500000000251311563027314032444 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ /** * SUREFIRE-621 Asserts proper test counts when running junit 3 tests in parallel * * @author Kristian Rosenvold */ public class Surefire34SecurityManagerIT extends SurefireVerifierTestClass { public Surefire34SecurityManagerIT() { super( "/surefire-34-securityManager" ); } public void testSecurityManager() throws Exception { failNever(); executeTest(); execute( "install" ); assertTestSuiteResults( 2, 1, 0, 0 ); } }surefire-2.10/surefire-integration-tests/src/test/resources/0000755000175000017500000000000011645102474023115 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/0000755000175000017500000000000011645102474027556 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/pom.xml0000644000175000017500000000336511535235020031072 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire surefire-697-niceSummary 1.0-SNAPSHOT Tests summary with long/multiline exception messages junit junit 3.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/src/0000755000175000017500000000000011645102474030345 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/src/test/0000755000175000017500000000000011645102474031324 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/src/test/java/0000755000175000017500000000000011645102474032245 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/src/test/java/junit/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/src/test/java/j0000755000175000017500000000000011645102474032417 5ustar tonytony././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/src/test/java/junit/surefire697/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/src/test/java/j0000755000175000017500000000000011645102474032417 5ustar tonytony././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/src/test/java/junit/surefire697/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/src/test/java/j0000644000175000017500000000315111535235020032411 0ustar tonytonypackage junit.surefire697; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { public void testShort(){ throw new RuntimeException( "A very short message" ); } public void testShortMultiline(){ throw new RuntimeException( "A very short multiline message\nHere is line 2" ); } public void testLong(){ throw new RuntimeException( "A very long single line message" + "012345678900123456789001234567890012345678900123456789001234567890" + "012345678900123456789001234567890012345678900123456789001234567890"); } public void testLongMultiLineNoCr(){ throw new RuntimeException( "A very long multi line message" + "012345678900123456789001234567890012345678900123456789001234567890" + "012345678900123456789001234567890012345678900123456789001234567890\n" + "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ" ); } public void testLongMultiLine(){ throw new RuntimeException( "A very long single line message" + "012345678900123456789001234567890012345678900123456789001234567890" + "012345678900123456789001234567890012345678900123456789001234567890\n" + "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ\n" ); } } ././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/src/test/java/junit/surefire697/TestTwo.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-697-niceSummary/src/test/java/j0000644000175000017500000000021711535235020032411 0ustar tonytonypackage junit.surefire697; import junit.framework.TestCase; public class TestTwo extends TestCase { public void testTwo() { } } surefire-2.10/surefire-integration-tests/src/test/resources/junit4/0000755000175000017500000000000011645102474024332 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit4/pom.xml0000644000175000017500000000401211051504420025630 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4 1.0-SNAPSHOT Test for JUnit 4 4.4 junit junit ${junitVersion} test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/junit4/src/0000755000175000017500000000000011645102474025121 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit4/src/test/0000755000175000017500000000000011645102474026100 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit4/src/test/java/0000755000175000017500000000000011645102474027021 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit4/src/test/java/junit4/0000755000175000017500000000000011645102474030236 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4/src/test/java/junit4/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit4/src/test/java/junit4/BasicTest.ja0000644000175000017500000000142011531760250032424 0ustar tonytonypackage junit4; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @Before public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @After public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( "setUp was not called", setUpCalled ); } @AfterClass public static void oneTimeTearDown() { } } surefire-2.10/surefire-integration-tests/src/test/resources/argLine-parameter/0000755000175000017500000000000011645102474026454 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/argLine-parameter/pom.xml0000644000175000017500000000355211051504420027762 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testArgLine 1.0-SNAPSHOT Test for argLine configuration junit junit 3.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} -Dfoo.property="foo foo/foo/bar/1.0" -Dbar.property="bar bar/foo/bar/2.0" surefire-2.10/surefire-integration-tests/src/test/resources/argLine-parameter/src/0000755000175000017500000000000011645102474027243 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/argLine-parameter/src/test/0000755000175000017500000000000011645102474030222 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/argLine-parameter/src/test/java/0000755000175000017500000000000011645102474031143 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/argLine-parameter/src/test/java/argLine/surefire-2.10/surefire-integration-tests/src/test/resources/argLine-parameter/src/test/java/argLine/0000755000175000017500000000000011645102474032524 5ustar tonytony././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/argLine-parameter/src/test/java/argLine/TestSurefireArgLine.javasurefire-2.10/surefire-integration-tests/src/test/resources/argLine-parameter/src/test/java/argLine/0000644000175000017500000000113410766555661032542 0ustar tonytonypackage argLine; import junit.framework.TestCase; public class TestSurefireArgLine extends TestCase { public void testArgLine() { String fooProperty = System.getProperty( "foo.property" ); assertEquals( "incorrect foo.property; " + "Surefire should have passed this in correctly", "foo foo/foo/bar/1.0", fooProperty ); String barProperty = System.getProperty( "bar.property" ); assertEquals( "incorrect bar.property; " + "Surefire should have passed this in correctly", "bar bar/foo/bar/2.0", barProperty ); } } surefire-2.10/surefire-integration-tests/src/test/resources/ant-ignore/0000755000175000017500000000000011645102474025160 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/ant-ignore/pom.xml0000644000175000017500000000370711563142266026506 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire ant-ignore 1.0-SNAPSHOT Test of @Ignore annotation, can be used side-by-side with maven and ant junit junit 4.4 test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/ant-ignore/build.xml0000644000175000017500000000316411563142266027007 0ustar tonytony simple example build file surefire-2.10/surefire-integration-tests/src/test/resources/ant-ignore/ivy.xml0000644000175000017500000000030411563142266026510 0ustar tonytony surefire-2.10/surefire-integration-tests/src/test/resources/ant-ignore/.gitignore0000644000175000017500000000002011563142266027142 0ustar tonytony*.jar TEST* surefire-2.10/surefire-integration-tests/src/test/resources/ant-ignore/src/0000755000175000017500000000000011645102474025747 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/ant-ignore/src/test/0000755000175000017500000000000011645102474026726 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/ant-ignore/src/test/java/0000755000175000017500000000000011645102474027647 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/ant-ignore/src/test/java/antignore/0000755000175000017500000000000011645102474031635 5ustar tonytony././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/ant-ignore/src/test/java/antignore/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/ant-ignore/src/test/java/antignore/Basic0000644000175000017500000000050011563142266032576 0ustar tonytonypackage antignore; import junit.framework.TestCase; import org.junit.Assert; import org.junit.Test; import org.junit.Ignore; public class BasicTest { @Ignore public void testIgnorable() { Assert.fail("you should have ignored me!"); } @Test public void testSomethingElse(){ } } surefire-2.10/surefire-integration-tests/src/test/resources/ant-ignore/src/ivy.xml0000644000175000017500000000030411563142266027277 0ustar tonytony surefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethodFailure/0000755000175000017500000000000011645102474030332 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethodFailure/pom.xml0000644000175000017500000000532411452560655031660 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-beforeMethodFailure 1.0-SNAPSHOT TestNG failure in @BeforeMethod annotation testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} 5.7 jdk15 org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethodFailure/src/0000755000175000017500000000000011645102474031121 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethodFailure/src/test/0000755000175000017500000000000011645102474032100 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethodFailure/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethodFailure/src/test/java0000755000175000017500000000000011645102474032742 5ustar tonytony././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethodFailure/src/test/java/testng/surefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethodFailure/src/test/java0000755000175000017500000000000011645102474032742 5ustar tonytony././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethodFailure/src/test/java/testng/beforeMethodFailure/surefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethodFailure/src/test/java0000755000175000017500000000000011645102474032742 5ustar tonytony././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethodFailure/src/test/java/testng/beforeMethodFailure/TestNGSuiteTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethodFailure/src/test/java0000644000175000017500000000061111557340256032746 0ustar tonytonypackage testng.beforeMethodFailure; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class TestNGSuiteTest { private final boolean beforeMethod = false; @BeforeMethod public void beforeMethod() { Assert.fail(); } @Test public void testBeforeMethod() { Assert.assertTrue( beforeMethod ); } }surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/0000755000175000017500000000000011645102474030304 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/0000755000175000017500000000000011645102474031653 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/pom.0000644000175000017500000000145111516606645032456 0ustar tonytony 4.0.0 org.apache.maven.surefire-257-rerunningTests surefire-257-rerunningTests 0.0.1-SNAPSHOT org.apache.maven.surefire-257-rerunningTests.module2 module2 0.0.1-SNAPSHOT junit junit 3.8.2 jar test ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/0000755000175000017500000000000011645102474032442 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/0000755000175000017500000000000011645102474032442 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/0000755000175000017500000000000011645102474032442 5ustar tonytony././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/test/java/surefire257/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/0000755000175000017500000000000011645102474032442 5ustar tonytony././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/test/java/surefire257/MyModule2ClassTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/0000644000175000017500000000045311516606645032454 0ustar tonytonypackage surefire257; import junit.framework.Assert; import junit.framework.TestCase; import surefire257.MyModule2Class; public class MyModule2ClassTest extends TestCase { public void testGetFooOK() { MyModule2Class mc = new MyModule2Class(); Assert.assertEquals(42, mc.getFoo()); } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/main/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/0000755000175000017500000000000011645102474032442 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/main/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/0000755000175000017500000000000011645102474032442 5ustar tonytony././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/main/java/surefire257/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/0000755000175000017500000000000011645102474032442 5ustar tonytony././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/main/java/surefire257/MyModule2Class.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module2/src/0000644000175000017500000000014011516606645032445 0ustar tonytonypackage surefire257; public class MyModule2Class { public int getFoo() { return 42; } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/pom.xml0000644000175000017500000000213311533765743031632 0ustar tonytony 4.0.0 org.apache.maven.surefire-257-rerunningTests surefire-257-rerunningTests 0.0.1-SNAPSHOT pom org.apache.maven.plugins maven-surefire-plugin ${surefire.version} org.apache.maven.plugins maven-surefire-report-plugin ${surefire.version} true module1 module2 surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/0000755000175000017500000000000011645102474031652 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/pom.0000644000175000017500000000145111516606645032455 0ustar tonytony 4.0.0 org.apache.maven.surefire-257-rerunningTests surefire-257-rerunningTests 0.0.1-SNAPSHOT org.apache.maven.surefire-257-rerunningTests.module1 module1 0.0.1-SNAPSHOT junit junit 3.8.2 jar test ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/0000755000175000017500000000000011645102474032441 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/0000755000175000017500000000000011645102474032441 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/0000755000175000017500000000000011645102474032441 5ustar tonytony././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/test/java/surefire257/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/0000755000175000017500000000000011645102474032441 5ustar tonytony././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/test/java/surefire257/MyModule1ClassTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/0000644000175000017500000000045311516606645032453 0ustar tonytonypackage surefire257; import junit.framework.Assert; import junit.framework.TestCase; import surefire257.MyModule1Class; public class MyModule1ClassTest extends TestCase { public void testGetFooOK() { MyModule1Class mc = new MyModule1Class(); Assert.assertEquals(42, mc.getFoo()); } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/main/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/0000755000175000017500000000000011645102474032441 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/main/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/0000755000175000017500000000000011645102474032441 5ustar tonytony././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/main/java/surefire257/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/0000755000175000017500000000000011645102474032441 5ustar tonytony././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/main/java/surefire257/MyModule1Class.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-257-rerunningTests/module1/src/0000644000175000017500000000014011516606645032444 0ustar tonytonypackage surefire257; public class MyModule1Class { public int getFoo() { return 42; } } surefire-2.10/surefire-integration-tests/src/test/resources/concurrentjunit47/0000755000175000017500000000000011645102474026524 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/concurrentjunit47/pom.xml0000644000175000017500000000423011515322672030040 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit47 1.0-SNAPSHOT Test for JUnit 4.7 4.7 junit junit ${junitVersion} test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} methods 2 surefire-2.10/surefire-integration-tests/src/test/resources/concurrentjunit47/src/0000755000175000017500000000000011645102474027313 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/concurrentjunit47/src/test/0000755000175000017500000000000011645102474030272 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/concurrentjunit47/src/test/java/0000755000175000017500000000000011645102474031213 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/concurrentjunit47/src/test/java/junit47/surefire-2.10/surefire-integration-tests/src/test/resources/concurrentjunit47/src/test/java/junit47/0000755000175000017500000000000011645102474032517 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/concurrentjunit47/src/test/java/junit47/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/concurrentjunit47/src/test/java/junit47/0000644000175000017500000000127011515322672032521 0ustar tonytonypackage concurrentjunit47.src.test.java.junit47; import org.junit.*; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @Before public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @After public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( "setUp was not called", setUpCalled ); } @AfterClass public static void oneTimeTearDown() { } }surefire-2.10/surefire-integration-tests/src/test/resources/norunnableTests/0000755000175000017500000000000011645102474026303 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/norunnableTests/pom.xml0000644000175000017500000000347411513156632027627 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire norunnabletests 1.0-SNAPSHOT Test JUnit classes with inner classes junit junit 4.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} true surefire-2.10/surefire-integration-tests/src/test/resources/norunnableTests/src/0000755000175000017500000000000011645102474027072 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/norunnableTests/src/test/0000755000175000017500000000000011645102474030051 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/norunnableTests/src/test/java/0000755000175000017500000000000011645102474030772 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/norunnableTests/src/test/java/junit/0000755000175000017500000000000011645102474032123 5ustar tonytony././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/norunnableTests/src/test/java/junit/norunnabletests/surefire-2.10/surefire-integration-tests/src/test/resources/norunnableTests/src/test/java/junit/noru0000755000175000017500000000000011645102474033027 5ustar tonytony././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/norunnableTests/src/test/java/junit/norunnabletests/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/norunnableTests/src/test/java/junit/noru0000644000175000017500000000015711513156632033033 0ustar tonytonypackage junit.norunnabletests; import junit.framework.TestCase; public class BasicTest extends TestCase { } surefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/0000755000175000017500000000000011645102474026354 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/pom.xml0000644000175000017500000000371711237311046027673 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire aggregate-report 1.0-SNAPSHOT Test for aggregate-report pom child1 child2 maven-surefire-plugin ${surefire.version} true maven-surefire-report-plugin ${surefire.version} true surefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child2/0000755000175000017500000000000011645102474027521 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child2/pom.xml0000644000175000017500000000320110766555661031047 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire aggregate-child2 1.0-SNAPSHOT child2 for aggregate-reports junit junit 3.8.1 test maven-surefire-report-plugin surefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child2/src/0000755000175000017500000000000011645102474030310 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child2/src/test/0000755000175000017500000000000011645102474031267 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child2/src/test/java/0000755000175000017500000000000011645102474032210 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child2/src/test/java/aggregateReport/surefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child2/src/test/java/ag0000755000175000017500000000000011645102474032520 5ustar tonytony././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child2/src/test/java/aggregateReport/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child2/src/test/java/ag0000644000175000017500000000254711557340256032536 0ustar tonytonypackage aggregateReport; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { private boolean setUpCalled = false; private static boolean tearDownCalled = false; public BasicTest( String name, String extraName ) { super( name ); } public static Test suite() { System.out.println("suite"); TestSuite suite = new TestSuite(); Test test = new BasicTest( "testSetUp", "dummy" ); suite.addTest( test ); return new TestSetup( suite ) { protected void setUp() { //oneTimeSetUp(); } protected void tearDown() { oneTimeTearDown(); } }; } protected void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } protected void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } public void testSetUp() { assertTrue( "setUp was not called", setUpCalled ); } public static void oneTimeTearDown() { assertTrue( "tearDown was not called", tearDownCalled ); } } surefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child1/0000755000175000017500000000000011645102474027520 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child1/pom.xml0000644000175000017500000000320110766555661031046 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire aggregate-child1 1.0-SNAPSHOT child1 for aggregate-reports junit junit 3.8.1 test maven-surefire-report-plugin surefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child1/src/0000755000175000017500000000000011645102474030307 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child1/src/test/0000755000175000017500000000000011645102474031266 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child1/src/test/java/0000755000175000017500000000000011645102474032207 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child1/src/test/java/aggregateReport/surefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child1/src/test/java/ag0000755000175000017500000000000011645102474032517 5ustar tonytony././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child1/src/test/java/aggregateReport/FailingTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/aggregate-report/child1/src/test/java/ag0000644000175000017500000000031310766555661032533 0ustar tonytonypackage aggregateReport; import junit.framework.TestCase; public class FailingTest extends TestCase { public void testFailure() { fail( "This test is supposed to fail" ); } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/0000755000175000017500000000000011645102474032474 5ustar tonytony././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000644000175000017500000000136211515645672032665 0ustar tonytony 4.0.0 org.apache.maven.surefire-report surefire-570-multipleReportDirectories 0.0.1-SNAPSHOT org.apache.maven.surefire-report.module2 module2 0.0.1-SNAPSHOT junit junit 3.8.2 jar test ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/test/java/org/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/test/java/org/apache/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/test/java/org/apache/maven/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/test/java/org/apache/maven/surefire570/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/test/java/org/apache/maven/surefire570/module2/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000026600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/test/java/org/apache/maven/surefire570/module2/MyModule2ClassTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000644000175000017500000000073111515645672032664 0ustar tonytonypackage org.apache.maven.surefire570.module2; import junit.framework.Assert; import junit.framework.TestCase; import org.apache.maven.surefire570.module2.MyModule2Class; public class MyModule2ClassTest extends TestCase { public void testGetFooKO() { MyModule2Class mc = new MyModule2Class(); Assert.assertEquals(18, mc.getFoo()); } public void testGetFooOK() { MyModule2Class mc = new MyModule2Class(); Assert.assertEquals(42, mc.getFoo()); } } ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/test/resources/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/test/resources/surefire-reports/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000032700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/test/resources/surefire-reports/TEST-org.apache.maven.surefireReport.surefireReportTest.MyClassTest.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000644000175000017500000001302611537460112032651 0ustar tonytony junit.framework.AssertionFailedError: expected:<18> but was:<42> at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.failNotEquals(Assert.java:280) at junit.framework.Assert.assertEquals(Assert.java:64) at junit.framework.Assert.assertEquals(va:198) at junit.framework.Assert.assertEquals(Assert.java:204) at org.apache.maven.surefireReport.surefireReportTest.module1.MyDummyClassTest.testGetFooKO(MyClassTest.java:10) ././@LongLink0000000000000000000000000000032200000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/test/resources/surefire-reports/org.apache.maven.surefireReport.surefireReportTest.MyClassTest.txtsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000644000175000017500000000162511515645672032667 0ustar tonytony------------------------------------------------------------------------------- Test set: org.apache.maven.surefireReport.surefireReportTest.module1.MyDummyClassTest ------------------------------------------------------------------------------- Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.049 sec <<< FAILURE! testGetFooKO(org.apache.maven.surefireReport.surefireReportTest.module1.MyDummyClassTest) Time elapsed: 0.01 sec <<< FAILURE! junit.framework.AssertionFailedError: expected:<18> but was:<42> at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.failNotEquals(Assert.java:280) at junit.framework.Assert.assertEquals(Assert.java:64) at junit.framework.Assert.assertEquals(Assert.java:198) at junit.framework.Assert.assertEquals(Assert.java:204) at org.apache.maven.surefireReport.surefireReportTest.module1.MyDummyClassTest.testGetFooKO(MyClassTest.java:10) ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/main/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/main/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/main/java/org/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/main/java/org/apache/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/main/java/org/apache/maven/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/main/java/org/apache/maven/surefire570/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/main/java/org/apache/maven/surefire570/module2/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000026200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module2/src/main/java/org/apache/maven/surefire570/module2/MyModule2Class.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000644000175000017500000000017111515645672032662 0ustar tonytonypackage org.apache.maven.surefire570.module2; public class MyModule2Class { public int getFoo() { return 42; } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/p0000644000175000017500000000716311515645672032675 0ustar tonytony 4.0.0 org.apache.maven.surefire-report surefire-570-multipleReportDirectories 0.0.1-SNAPSHOT pom org.apache.maven.plugins maven-surefire-plugin ${surefire.version} maven-3 ${basedir} org.apache.maven.plugins maven-surefire-report-plugin ${surefire.version} true ${basedir}/target/surefire-reports ${basedir}/src/test/resources/surefire-reports org.apache.maven.plugins maven-surefire-plugin ${surefire.version} org.apache.maven.plugins maven-site-plugin 3.0-beta-3 maven-site-plugin attach-descriptor attach-descriptor org.apache.maven.plugins maven-surefire-report-plugin org.apache.maven.plugins maven-site-plugin org.apache.maven.plugins maven-surefire-report-plugin ${surefire.version} true ${basedir}/target/surefire-reports ${basedir}/src/test/resources/surefire-reports report-only module1 module2 ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000644000175000017500000000136211515645672032665 0ustar tonytony 4.0.0 org.apache.maven.surefire-report surefire-570-multipleReportDirectories 0.0.1-SNAPSHOT org.apache.maven.surefire-report.module1 module1 0.0.1-SNAPSHOT junit junit 3.8.2 jar test ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/test/java/org/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/test/java/org/apache/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/test/java/org/apache/maven/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/test/java/org/apache/maven/surefire570/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000025600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/test/java/org/apache/maven/surefire570/MyModule1ClassTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000644000175000017500000000071111515645672032662 0ustar tonytonypackage org.apache.maven.surefire570; import junit.framework.Assert; import junit.framework.TestCase; import org.apache.maven.surefire570.MyModule1Class; public class MyModule1ClassTest extends TestCase { public void testGetFooKO() { MyModule1Class mc = new MyModule1Class(); Assert.assertEquals(18, mc.getFoo()); } public void testGetFooOK() { MyModule1Class mc = new MyModule1Class(); Assert.assertEquals(42, mc.getFoo()); } } ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/test/resources/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/test/resources/surefire-reports/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000032700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/test/resources/surefire-reports/TEST-org.apache.maven.surefireReport.surefireReportTest.MyClassTest.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000644000175000017500000001300311537460112032644 0ustar tonytony junit.framework.AssertionFailedError: expected:<18> but was:<42> at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.failNotEquals(Assert.java:280) at junit.framework.Assert.assertEquals(Assert.java:64) at junit.framework.Assert.assertEquals(Assert.java:198) at junit.framework.Assert.assertEquals(Assert.java:204) at org.apache.maven.surefireReport.surefireReportTest.module1.MyDummyClassTest.testGetFooKO(MyClassTest.java:10) ././@LongLink0000000000000000000000000000032200000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/test/resources/surefire-reports/org.apache.maven.surefireReport.surefireReportTest.MyClassTest.txtsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000644000175000017500000000162511515645672032667 0ustar tonytony------------------------------------------------------------------------------- Test set: org.apache.maven.surefireReport.surefireReportTest.module1.MyDummyClassTest ------------------------------------------------------------------------------- Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.049 sec <<< FAILURE! testGetFooKO(org.apache.maven.surefireReport.surefireReportTest.module1.MyDummyClassTest) Time elapsed: 0.01 sec <<< FAILURE! junit.framework.AssertionFailedError: expected:<18> but was:<42> at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.failNotEquals(Assert.java:280) at junit.framework.Assert.assertEquals(Assert.java:64) at junit.framework.Assert.assertEquals(Assert.java:198) at junit.framework.Assert.assertEquals(Assert.java:204) at org.apache.maven.surefireReport.surefireReportTest.module1.MyDummyClassTest.testGetFooKO(MyClassTest.java:10) ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/main/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/main/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/main/java/org/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/main/java/org/apache/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/main/java/org/apache/maven/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/main/java/org/apache/maven/surefire570/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000025200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/module1/src/main/java/org/apache/maven/surefire570/MyModule1Class.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-570-multipleReportDirectories/m0000644000175000017500000000016111515645672032661 0ustar tonytonypackage org.apache.maven.surefire570; public class MyModule1Class { public int getFoo() { return 42; } } surefire-2.10/surefire-integration-tests/src/test/resources/isolated-classloader/0000755000175000017500000000000011645102474027213 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/isolated-classloader/pom.xml0000644000175000017500000000343211051504420030516 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire isolated-classloader 1.0-SNAPSHOT Test for useSystemClassLoader=false maven-surefire-plugin ${surefire.version} false junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/isolated-classloader/src/0000755000175000017500000000000011645102474030002 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/isolated-classloader/src/test/0000755000175000017500000000000011645102474030761 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/isolated-classloader/src/test/java/0000755000175000017500000000000011645102474031702 5ustar tonytony././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/isolated-classloader/src/test/java/isolatedClassloader/surefire-2.10/surefire-integration-tests/src/test/resources/isolated-classloader/src/test/java/isola0000755000175000017500000000000011645102474032732 5ustar tonytony././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/isolated-classloader/src/test/java/isolatedClassloader/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/isolated-classloader/src/test/java/isola0000644000175000017500000000250611557340256032743 0ustar tonytonypackage isolatedClassloader; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { private boolean setUpCalled = false; private static boolean tearDownCalled = false; public BasicTest( String name, String extraName ) { super( name ); } public static Test suite() { TestSuite suite = new TestSuite(); Test test = new BasicTest( "testSetUp", "dummy" ); suite.addTest( test ); return new TestSetup( suite ) { protected void setUp() { //oneTimeSetUp(); } protected void tearDown() { oneTimeTearDown(); } }; } protected void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } protected void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } public void testSetUp() { assertTrue( "setUp was not called", setUpCalled ); } public static void oneTimeTearDown() { assertTrue( "tearDown was not called", tearDownCalled ); } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-34-securityManager/0000755000175000017500000000000011645102474030325 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-34-securityManager/pom.xml0000644000175000017500000000436011563027314031643 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire surefire34 1.0-SNAPSHOT Surefire-34-SecurityManager 3.8.1 junit junit ${junitVersion} test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} java.lang.SecurityManager surefire-2.10/surefire-integration-tests/src/test/resources/surefire-34-securityManager/src/0000755000175000017500000000000011645102474031114 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-34-securityManager/src/test/0000755000175000017500000000000011645102474032073 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-34-securityManager/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-34-securityManager/src/test/jav0000755000175000017500000000000011645102474032574 5ustar tonytony././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-34-securityManager/src/test/java/junit4/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-34-securityManager/src/test/jav0000755000175000017500000000000011645102474032574 5ustar tonytony././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-34-securityManager/src/test/java/junit4/SecurityManagerTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-34-securityManager/src/test/jav0000644000175000017500000000137311563027314032600 0ustar tonytonypackage junit4; import java.io.File; import junit.framework.TestCase; public class SecurityManagerTest extends TestCase { private boolean setUpCalled = false; private static boolean tearDownCalled = false; public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } public void testSetUp() { assertTrue( "setUp was not called", setUpCalled ); } public void testWillFailWhenAccessingCurrentDirectory() { File file = new File( "." ); file.isDirectory(); } } surefire-2.10/surefire-integration-tests/src/test/resources/junit48-single-method/0000755000175000017500000000000011645102474027157 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit48-single-method/pom.xml0000644000175000017500000000416111531766477030513 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4 1.0-SNAPSHOT Test for JUnit 4.8.1 4.8.1 junit junit ${junitVersion} test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} BasicTest#testSuccessOne surefire-2.10/surefire-integration-tests/src/test/resources/junit48-single-method/src/0000755000175000017500000000000011645102474027746 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit48-single-method/src/test/0000755000175000017500000000000011645102474030725 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit48-single-method/src/test/java/0000755000175000017500000000000011645102474031646 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit48-single-method/src/test/java/junit4/surefire-2.10/surefire-integration-tests/src/test/resources/junit48-single-method/src/test/java/juni0000755000175000017500000000000011645102474032534 5ustar tonytony././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit48-single-method/src/test/java/junit4/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit48-single-method/src/test/java/juni0000644000175000017500000000156611531766477032563 0ustar tonytonypackage junit4; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @Before public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @After public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( "setUp was not called", setUpCalled ); } @Test public void testSuccessOne() { Assert.assertTrue( true ); } @AfterClass public static void oneTimeTearDown() { } } surefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/0000755000175000017500000000000011645102474027425 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/pom.xml0000644000175000017500000000366111565265037030756 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-fork-mode 1.0-SNAPSHOT Test for forkMode maven-compiler-plugin 1.5 1.5 maven-surefire-plugin ${surefire.version} ${forkMode} junit junit 4.8.2 test surefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/0000755000175000017500000000000011645102474030214 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/test/0000755000175000017500000000000011645102474031173 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/test/java/0000755000175000017500000000000011645102474032114 5ustar tonytony././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/test/java/junit4/surefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/test/java/jun0000755000175000017500000000000011645102474032631 5ustar tonytony././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/test/java/junit4/forkMode/surefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/test/java/jun0000755000175000017500000000000011645102474032631 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/test/java/junit4/forkMode/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/test/java/jun0000644000175000017500000000030711565265037032641 0ustar tonytonypackage junit4.forkMode; import java.io.IOException; import org.junit.Test; public class Test2 { @Test public void test2() throws IOException { Test1.dumpPidFile("test2"); } } ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/test/java/junit4/forkMode/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/test/java/jun0000644000175000017500000000174011565265037032643 0ustar tonytonypackage junit4.forkMode; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.lang.management.ManagementFactory; import org.junit.Test; public class Test1 { @Test public void test1() throws IOException { dumpPidFile("test1"); } public static void dumpPidFile(String name) throws IOException { String fileName = name + "-pid"; File target = new File("target"); if (! (target.exists() && target.isDirectory()) ) { target = new File ("."); } File pidFile = new File(target, fileName); FileWriter fw = new FileWriter(pidFile); // DGF little known trick... this is guaranteed to be unique to the PID // In fact, it usually contains the pid and the local host name! String pid = ManagementFactory.getRuntimeMXBean().getName(); fw.write( pid ); fw.flush(); fw.close(); System.out.println( "pid = " + pid ); } } ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/test/java/junit4/forkMode/Test3.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-fork-mode-always/src/test/java/jun0000644000175000017500000000030611565265037032640 0ustar tonytonypackage junit4.forkMode; import java.io.IOException; import org.junit.Test; public class Test3 { @Test public void test3() throws IOException { Test1.dumpPidFile("test3"); } } surefire-2.10/surefire-integration-tests/src/test/resources/classpath-scope-filtering/0000755000175000017500000000000011645102474030167 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/classpath-scope-filtering/pom.xml0000644000175000017500000000371111375315417031511 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire classpath-scope-filter 1.0-SNAPSHOT Test for classpath scope filter maven-surefire-plugin ${surefire.version} compile org.apache.commons commons-email 1.2 junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/classpath-scope-filtering/src/0000755000175000017500000000000011645102474030756 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/classpath-scope-filtering/src/test/0000755000175000017500000000000011645102474031735 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/classpath-scope-filtering/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/classpath-scope-filtering/src/test/java/0000755000175000017500000000000011645102474032656 5ustar tonytony././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/classpath-scope-filtering/src/test/java/classpathFiltering/surefire-2.10/surefire-integration-tests/src/test/resources/classpath-scope-filtering/src/test/java/0000755000175000017500000000000011645102474032656 5ustar tonytony././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/classpath-scope-filtering/src/test/java/classpathFiltering/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/classpath-scope-filtering/src/test/java/0000644000175000017500000000111311515322672032654 0ustar tonytonypackage classpathFiltering; import junit.framework.TestCase; public class BasicTest extends TestCase { public void testDependencyFilter() { Class testClass = null; String testClassName = "org.apache.commons.mail.Email"; try { testClass = Class.forName( testClassName ); System.out.println( "Able to load class " + testClass ); } catch ( ClassNotFoundException e ) { System.out.println( "Couldn't load " + testClassName ); } assertNull( testClass ); } } surefire-2.10/surefire-integration-tests/src/test/resources/junit-pathWithUmlaut/0000755000175000017500000000000011645102474027224 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-pathWithUmlaut/pom.xml0000644000175000017500000000332511051504420030530 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit-path-with-umlaut 1.0-SNAPSHOT Test path with Ümlaut junit junit 3.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/junit-pathWithUmlaut/src/0000755000175000017500000000000011645102474030013 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-pathWithUmlaut/src/test/0000755000175000017500000000000011645102474030772 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-pathWithUmlaut/src/test/java/0000755000175000017500000000000011645102474031713 5ustar tonytony././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-pathWithUmlaut/src/test/java/umlautTest/surefire-2.10/surefire-integration-tests/src/test/resources/junit-pathWithUmlaut/src/test/java/umlau0000755000175000017500000000000011645102474032757 5ustar tonytony././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-pathWithUmlaut/src/test/java/umlautTest/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-pathWithUmlaut/src/test/java/umlau0000644000175000017500000000247511557340256032775 0ustar tonytonypackage umlautTest; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { private boolean setUpCalled = false; private static boolean tearDownCalled = false; public BasicTest( String name, String extraName ) { super( name ); } public static Test suite() { TestSuite suite = new TestSuite(); Test test = new BasicTest( "testSetUp", "dummy" ); suite.addTest( test ); return new TestSetup( suite ) { protected void setUp() { //oneTimeSetUp(); } protected void tearDown() { oneTimeTearDown(); } }; } protected void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } protected void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } public void testSetUp() { assertTrue( "setUp was not called", setUpCalled ); } public static void oneTimeTearDown() { assertTrue( "tearDown was not called", tearDownCalled ); } } surefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method/0000755000175000017500000000000011645102474027156 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method/pom.xml0000644000175000017500000000544511531766477030520 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4 1.0-SNAPSHOT Test for Testng 5.7 jdk15 testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} BasicTest#testSuccessOne surefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method/src/0000755000175000017500000000000011645102474027745 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method/src/test/0000755000175000017500000000000011645102474030724 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method/src/test/java/0000755000175000017500000000000011645102474031645 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method/src/test/java/testng/surefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method/src/test/java/testn0000755000175000017500000000000011645102474032723 5ustar tonytony././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method/src/test/java/testng/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method/src/test/java/testn0000644000175000017500000000160111531766477032740 0ustar tonytonypackage testng; import org.testng.annotations.*; import org.testng.Assert; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @BeforeTest public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @AfterTest public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( setUpCalled ); } @Test public void testSuccessOne() { Assert.assertTrue( true ); } @Test public void testSuccessTwo() { Assert.assertTrue( true ); } @AfterClass public static void oneTimeTearDown() { } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-740-comma-truncated/0000755000175000017500000000000011645102474030332 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-740-comma-truncated/pom.xml0000644000175000017500000000415011565265037031655 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit-twoTestCases 1.0-SNAPSHOT Test for two test cases junit junit 3.8.1 test org.apache.maven.plugins maven-surefire-report-plugin ${surefire.version} true ${basedir}/persistent-reports org.apache.maven.plugins maven-site-plugin 3.0-beta-3 ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-740-comma-truncated/persistent-reports/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-740-comma-truncated/persistent-0000755000175000017500000000000011645102474032530 5ustar tonytony././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-740-comma-truncated/persistent-reports/TEST-junit.twoTestCases.BasicTest.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-740-comma-truncated/persistent-0000644000175000017500000001237411565265037032547 0ustar tonytony ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-740-comma-truncated/persistent-reports/TEST-junit.twoTestCases.TestTwo.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-740-comma-truncated/persistent-0000644000175000017500000001236311565265037032545 0ustar tonytony surefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method-5-14-9/0000755000175000017500000000000011645102474027710 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method-5-14-9/pom.xml0000644000175000017500000000405011531766477031241 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4 1.0-SNAPSHOT Test for Testng org.testng testng 5.14.9 org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} BasicTest#testSuccessOne surefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method-5-14-9/src/0000755000175000017500000000000011645102474030477 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method-5-14-9/src/test/0000755000175000017500000000000011645102474031456 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method-5-14-9/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method-5-14-9/src/test/jav0000755000175000017500000000000011645102474032157 5ustar tonytony././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method-5-14-9/src/test/java/testng/surefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method-5-14-9/src/test/jav0000755000175000017500000000000011645102474032157 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method-5-14-9/src/test/java/testng/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-single-method-5-14-9/src/test/jav0000644000175000017500000000160111531766477032174 0ustar tonytonypackage testng; import org.testng.annotations.*; import org.testng.Assert; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @BeforeTest public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @AfterTest public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( setUpCalled ); } @Test public void testSuccessOne() { Assert.assertTrue( true ); } @Test public void testSuccessTwo() { Assert.assertTrue( true ); } @AfterClass public static void oneTimeTearDown() { } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-639-redirectTestOutputToFileWhenForking/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-639-redirectTestOutputToFileWhe0000755000175000017500000000000011645102474032630 5ustar tonytony././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-639-redirectTestOutputToFileWhenForking/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-639-redirectTestOutputToFileWhe0000755000175000017500000000000011645102474032630 5ustar tonytony././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-639-redirectTestOutputToFileWhenForking/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-639-redirectTestOutputToFileWhe0000755000175000017500000000000011645102474032630 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-639-redirectTestOutputToFileWhenForking/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-639-redirectTestOutputToFileWhe0000755000175000017500000000000011645102474032630 5ustar tonytony././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-639-redirectTestOutputToFileWhenForking/src/test/java/surefire639/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-639-redirectTestOutputToFileWhe0000755000175000017500000000000011645102474032630 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode/0000755000175000017500000000000011645102474025000 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode/pom.xml0000644000175000017500000000366011051504420026306 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire fork-mode 1.0-SNAPSHOT Test for forkMode maven-compiler-plugin 1.5 1.5 maven-surefire-plugin ${surefire.version} ${forkMode} junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/fork-mode/src/0000755000175000017500000000000011645102474025567 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode/src/test/0000755000175000017500000000000011645102474026546 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode/src/test/java/0000755000175000017500000000000011645102474027467 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode/src/test/java/forkMode/0000755000175000017500000000000011645102474031235 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode/src/test/java/forkMode/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode/src/test/java/forkMode/Test2.j0000644000175000017500000000032410766555661032425 0ustar tonytonypackage forkMode; import java.io.IOException; import junit.framework.TestCase; public class Test2 extends TestCase { public void test2() throws IOException { Test1.dumpPidFile(this); } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode/src/test/java/forkMode/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode/src/test/java/forkMode/Test1.j0000644000175000017500000000171210766555661032426 0ustar tonytonypackage forkMode; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.lang.management.ManagementFactory; import junit.framework.TestCase; public class Test1 extends TestCase { public void test1() throws IOException { dumpPidFile(this); } public static void dumpPidFile(TestCase test) throws IOException { String fileName = test.getName() + "-pid"; File target = new File("target"); if (! (target.exists() && target.isDirectory()) ) { target = new File ("."); } File pidFile = new File(target, fileName); FileWriter fw = new FileWriter(pidFile); // DGF little known trick... this is guaranteed to be unique to the PID // In fact, it usually contains the pid and the local host name! String pid = ManagementFactory.getRuntimeMXBean().getName(); fw.write( pid ); fw.flush(); fw.close(); } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode/src/test/java/forkMode/Test3.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode/src/test/java/forkMode/Test3.j0000644000175000017500000000032410766555661032426 0ustar tonytonypackage forkMode; import java.io.IOException; import junit.framework.TestCase; public class Test3 extends TestCase { public void test3() throws IOException { Test1.dumpPidFile(this); } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/0000755000175000017500000000000011645102474031142 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/0000755000175000017500000000000011645102474032121 5ustar tonytony././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/pom0000644000175000017500000000460511477362711032651 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit-twoTestCases 1.0-SNAPSHOT surefire-414-pluggableproviders junit junit 4.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} org.apache.maven.surefire surefire-junit3 ${surefire.version} org.apache.maven.plugins.surefire surefire-test-provider 1.0-SNAPSHOT ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src0000755000175000017500000000000011645102474032631 5ustar tonytony././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src0000755000175000017500000000000011645102474032631 5ustar tonytony././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src0000755000175000017500000000000011645102474032631 5ustar tonytony././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src/test/java/junit/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src0000755000175000017500000000000011645102474032631 5ustar tonytony././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src/test/java/junit/twoTestCases/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src0000755000175000017500000000000011645102474032631 5ustar tonytony././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src/test/java/junit/twoTestCases/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src0000644000175000017500000000251211557340256032637 0ustar tonytonypackage junit.twoTestCases; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { private boolean setUpCalled = false; private static boolean tearDownCalled = false; public BasicTest( String name ) { super( name ); } public static Test suite() { TestSuite suite = new TestSuite(); Test test = new BasicTest( "testSetUp" ); suite.addTest( test ); TestSetup setup = new TestSetup( suite ) { protected void setUp() { //oneTimeSetUp(); } protected void tearDown() { oneTimeTearDown(); } }; return setup; } protected void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } protected void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } public void testSetUp() { assertTrue( "setUp was not called", setUpCalled ); } public static void oneTimeTearDown() { assertTrue( "tearDown was not called", tearDownCalled ); } } ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src/test/java/junit/twoTestCases/TestTwo.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test/src0000644000175000017500000000021211477261742032635 0ustar tonytonypackage junit.twoTestCases; import junit.framework.TestCase; public class TestTwo extends TestCase { public void testTwo() {} } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000755000175000017500000000000011645102474032640 5ustar tonytony././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000644000175000017500000000320211477261742032646 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire surefire-test-provider 1.0-SNAPSHOT Test provider org.apache.maven.surefire surefire-api ${surefire.version} src/main/resources/META-INF META-INF ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000755000175000017500000000000011645102474032640 5ustar tonytony././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/main/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000755000175000017500000000000011645102474032640 5ustar tonytony././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/main/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000755000175000017500000000000011645102474032640 5ustar tonytony././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/main/java/org/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000755000175000017500000000000011645102474032640 5ustar tonytony././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/main/java/org/apache/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000755000175000017500000000000011645102474032640 5ustar tonytony././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/main/java/org/apache/maven/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000755000175000017500000000000011645102474032640 5ustar tonytony././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/main/java/org/apache/maven/surefire/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000755000175000017500000000000011645102474032640 5ustar tonytony././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/main/java/org/apache/maven/surefire/testprovider/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000755000175000017500000000000011645102474032640 5ustar tonytony././@LongLink0000000000000000000000000000026100000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/main/java/org/apache/maven/surefire/testprovider/TestProvider.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000644000175000017500000000327111557340256032651 0ustar tonytonypackage org.apache.maven.surefire.testprovider; /* * 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. */ import org.apache.maven.surefire.providerapi.AbstractProvider; import org.apache.maven.surefire.providerapi.ProviderParameters; import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.surefire.testset.TestSetFailedException; import java.util.Iterator; /** * @author Kristian Rosenvold */ public class TestProvider extends AbstractProvider { public TestProvider( ProviderParameters booterParameters ) { } public Boolean isRunnable() { return Boolean.TRUE; } public Iterator getSuites() { return null; } public RunResult invoke( Object forkTestSet ) throws TestSetFailedException, ReporterException { return new RunResult( 1,0,0,2 ); } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/main/resources/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000755000175000017500000000000011645102474032640 5ustar tonytony././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/main/resources/META-INF/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000755000175000017500000000000011645102474032640 5ustar tonytony././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/main/resources/META-INF/services/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000755000175000017500000000000011645102474032640 5ustar tonytony././@LongLink0000000000000000000000000000030600000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-provider/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvidersurefire-2.10/surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders/test-pro0000644000175000017500000000006411477261742032651 0ustar tonytonyorg.apache.maven.surefire.testprovider.TestProvider surefire-2.10/surefire-integration-tests/src/test/resources/junit-innerClass/0000755000175000017500000000000011645102474026345 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-innerClass/pom.xml0000644000175000017500000000333611051504420027653 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit-innerClass 1.0-SNAPSHOT Test JUnit classes with inner classes junit junit 3.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/junit-innerClass/src/0000755000175000017500000000000011645102474027134 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-innerClass/src/test/0000755000175000017500000000000011645102474030113 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-innerClass/src/test/java/0000755000175000017500000000000011645102474031034 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-innerClass/src/test/java/junit/0000755000175000017500000000000011645102474032165 5ustar tonytony././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-innerClass/src/test/java/junit/innerClass/surefire-2.10/surefire-integration-tests/src/test/resources/junit-innerClass/src/test/java/junit/inn0000755000175000017500000000000011645102474032672 5ustar tonytony././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-innerClass/src/test/java/junit/innerClass/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-innerClass/src/test/java/junit/inn0000644000175000017500000000036611557340256032705 0ustar tonytonypackage junit.innerClass; import junit.framework.TestCase; public class BasicTest extends TestCase { public void testFoo() { new Foo("x", "y"); } public class Foo { public Foo(String x, String y) {} } } surefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethod/0000755000175000017500000000000011645102474027022 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethod/pom.xml0000644000175000017500000000531111452560655030344 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-beforeMethod 1.0-SNAPSHOT TestNG @BeforeMethod annotation testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} 5.7 jdk15 org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethod/src/0000755000175000017500000000000011645102474027611 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethod/src/test/0000755000175000017500000000000011645102474030570 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethod/src/test/java/0000755000175000017500000000000011645102474031511 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethod/src/test/java/testng/surefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethod/src/test/java/testng0000755000175000017500000000000011645102474032736 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethod/src/test/java/testng/beforeMethod/surefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethod/src/test/java/testng0000755000175000017500000000000011645102474032736 5ustar tonytony././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethod/src/test/java/testng/beforeMethod/TestNGSuiteTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-beforeMethod/src/test/java/testng0000644000175000017500000000060210766555661032753 0ustar tonytonypackage testng.beforeMethod; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class TestNGSuiteTest { private boolean beforeMethod = false; @BeforeMethod public void beforeMethod() { beforeMethod = true; } @Test public void testBeforeMethod() { Assert.assertTrue( beforeMethod ); } }surefire-2.10/surefire-integration-tests/src/test/resources/additional-classpath/0000755000175000017500000000000011645102474027205 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/additional-classpath/extraResource/0000755000175000017500000000000011645102474032040 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/additional-classpath/extraResource/test.txtsurefire-2.10/surefire-integration-tests/src/test/resources/additional-classpath/extraResource/test.0000644000175000017500000000000010766555661033023 0ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/additional-classpath/pom.xml0000644000175000017500000000411111524572534030523 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire additional-classpath 1.0-SNAPSHOT Test for additionalClasspathElements maven-surefire-plugin ${surefire.version} ${basedir}/extraResource ${abc} junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/additional-classpath/src/0000755000175000017500000000000011645102474027774 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/additional-classpath/src/test/0000755000175000017500000000000011645102474030753 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/additional-classpath/src/test/java/0000755000175000017500000000000011645102474031674 5ustar tonytony././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/additional-classpath/src/test/java/additionalClasspath/surefire-2.10/surefire-integration-tests/src/test/resources/additional-classpath/src/test/java/addit0000755000175000017500000000000011645102474032702 5ustar tonytony././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/additional-classpath/src/test/java/additionalClasspath/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/additional-classpath/src/test/java/addit0000644000175000017500000000034710766555661032725 0ustar tonytonypackage additionalClasspath; import junit.framework.TestCase; public class BasicTest extends TestCase { public void testExtraResource() { assertNotNull(BasicTest.class.getResourceAsStream("/test.txt")); } } surefire-2.10/surefire-integration-tests/src/test/resources/result-counting/0000755000175000017500000000000011645102474026257 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/pom.xml0000644000175000017500000000311411475246127027600 0ustar tonytony 4.0.0 mag junit4-test jar 1.0-SNAPSHOT junit4-test http://maven.apache.org junit junit ${junit.version} org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} ${forkMode} **/Test*.java **/MySuiteTest1.java **/MySuiteTest2.java **/MySuiteTest3.java 4.8.1 once surefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/0000755000175000017500000000000011645102474027046 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/0000755000175000017500000000000011645102474030025 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/0000755000175000017500000000000011645102474030746 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/resultcounting/surefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/resultcoun0000755000175000017500000000000011645102474033072 5ustar tonytony././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/resultcounting/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/resultcoun0000644000175000017500000000350311475246127033102 0ustar tonytonypackage resultcounting; import org.junit.Ignore; import org.junit.Test; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assume.*; import static junit.framework.Assert.fail; /** * @author Kristian Rosenvold */ public class Test2 { @Test public void testAllok(){ System.out.println("testAllok to stdout"); System.err.println("testAllok to stderr"); } @Ignore @Test public void testWithIgnore1(){ } @Ignore @Test public void testWithIgnore2(){ } @Test public void testiWithFail1(){ fail("We excpect this"); } @Test public void testiWithFail2(){ fail("We excpect this"); } @Test public void testiWithFail3(){ fail("We excpect this"); } @Test public void testiWithFail4(){ fail("We excpect this"); } @Test public void testWithException1() { System.out.println("testWithException1 to stdout"); System.err.println("testWithException1 to stderr"); throw new RuntimeException("We expect this"); } @Test public void testWithException2() { throw new RuntimeException("We expect this"); } @Test public void testWithException3() { throw new RuntimeException("We expect this"); } @Test public void testWithException4() { throw new RuntimeException("We expect this"); } @Test public void testWithException5() { throw new RuntimeException("We expect this"); } @Test public void testWithException6() { throw new RuntimeException("We expect this"); } @Test public void testWithException7() { throw new RuntimeException("We expect this"); } @Test public void testWithException8() { throw new RuntimeException("We expect this"); } }././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/resultcounting/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/resultcoun0000644000175000017500000000301111475246127033074 0ustar tonytonypackage resultcounting; import org.junit.Test; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assume.*; import junit.framework.TestCase; public class Test1 extends TestCase { public void testWithFailingAssumption1() { assumeThat( 2, is(3)); } public void testWithFailingAssumption2() { assumeThat( 2, is(3)); } public void testWithFailingAssumption3() { assumeThat( 2, is(3)); } public void testWithFailingAssumption4() { assumeThat( 2, is(3)); } public void testWithFailingAssumption5() { assumeThat( 2, is(3)); } public void testWithFailingAssumption6() { assumeThat( 2, is(3)); } public void testWithFailingAssumption7() { assumeThat( 2, is(3)); } public void testWithFailingAssumption8() { assumeThat( 2, is(3)); } public void testWithFailingAssumption9() { assumeThat( 2, is(3)); } public void testWithFailingAssumption10() { assumeThat( 2, is(3)); } public void testWithFailingAssumption11() { assumeThat( 2, is(3)); } public void testWithFailingAssumption12() { assumeThat( 2, is(3)); } public void testWithFailingAssumption13() { assumeThat( 2, is(3)); } public void testWithFailingAssumption14() { assumeThat( 2, is(3)); } public void testWithFailingAssumption15() { assumeThat( 2, is(3)); } }././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/resultcounting/MySuiteTest3.javasurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/resultcoun0000644000175000017500000000106711557340256033104 0ustar tonytonypackage resultcounting; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class MySuiteTest3 extends TestCase { public static Test suite () { TestSuite suite = new TestSuite(); suite.addTest (new MySuiteTest3("testMe" )); suite.addTest (new MySuiteTest3("testMe" )); suite.addTest (new MySuiteTest3("testMe" )); return suite; } public MySuiteTest3( String name ) { super (name); } public void testMe() { assertTrue (true); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/resultcounting/MySuiteTest2.javasurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/resultcoun0000644000175000017500000000100211557340256033071 0ustar tonytonypackage resultcounting; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class MySuiteTest2 extends TestCase { public static Test suite () { TestSuite suite = new TestSuite(); suite.addTest (new MySuiteTest2("testMe" )); suite.addTest (new MySuiteTest2("testMe" )); return suite; } public MySuiteTest2( String name ) { super (name); } public void testMe() { assertTrue (true); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/resultcounting/MySuiteTest1.javasurefire-2.10/surefire-integration-tests/src/test/resources/result-counting/src/test/java/resultcoun0000644000175000017500000000071511557340256033103 0ustar tonytonypackage resultcounting; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class MySuiteTest1 extends TestCase { public static Test suite () { TestSuite suite = new TestSuite(); suite.addTest (new MySuiteTest1("testMe" )); return suite; } public MySuiteTest1( String name ) { super (name); } public void testMe() { assertTrue (true); } } surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/0000755000175000017500000000000011645102474031207 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/pom.xml0000644000175000017500000000330711051504420032513 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire default-configuration-abstract 1.0-SNAPSHOT Test for default configuration with abstract classes junit junit 3.8.1 test maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/src/0000755000175000017500000000000011645102474031776 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/src/test/0000755000175000017500000000000011645102474032755 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/src/test/0000755000175000017500000000000011645102474032755 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/src/test/java/abstractClasses/surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/src/test/0000755000175000017500000000000011645102474032755 5ustar tonytony././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/src/test/java/abstractClasses/NonInstantiableTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/src/test/0000644000175000017500000000020010766555661032764 0ustar tonytonypackage abstractClasses; import junit.framework.TestCase; public abstract class NonInstantiableTest extends TestCase { } ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/src/test/java/abstractClasses/AbstractConcreteBasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-abstract/src/test/0000644000175000017500000000265611557340256032774 0ustar tonytonypackage abstractClasses; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class AbstractConcreteBasicTest // not really abstract! extends TestCase { private boolean setUpCalled = false; private static boolean tearDownCalled = false; public AbstractConcreteBasicTest( String name, String extraName ) { super( name ); } public static Test suite() { System.out.println("suite"); TestSuite suite = new TestSuite(); Test test = new AbstractConcreteBasicTest( "testSetUp", "dummy" ); suite.addTest( test ); return new TestSetup( suite ) { protected void setUp() { //oneTimeSetUp(); } protected void tearDown() { oneTimeTearDown(); } }; } protected void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } protected void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } public void testSetUp() { assertTrue( "setUp was not called", setUpCalled ); } public static void oneTimeTearDown() { assertTrue( "tearDown was not called", tearDownCalled ); } } surefire-2.10/surefire-integration-tests/src/test/resources/junit44-method-pattern/0000755000175000017500000000000011645102474027347 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-method-pattern/pom.xml0000644000175000017500000000415111531766477030702 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4 1.0-SNAPSHOT Test for JUnit 4 4.4 junit junit ${junitVersion} test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} BasicTest#testSuccess* surefire-2.10/surefire-integration-tests/src/test/resources/junit44-method-pattern/src/0000755000175000017500000000000011645102474030136 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-method-pattern/src/test/0000755000175000017500000000000011645102474031115 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-method-pattern/src/test/java/0000755000175000017500000000000011645102474032036 5ustar tonytony././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit44-method-pattern/src/test/java/junit4/surefire-2.10/surefire-integration-tests/src/test/resources/junit44-method-pattern/src/test/java/jun0000755000175000017500000000000011645102474032553 5ustar tonytony././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit44-method-pattern/src/test/java/junit4/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit44-method-pattern/src/test/java/jun0000644000175000017500000000172511531766477032577 0ustar tonytonypackage junit4; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @Before public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @After public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( "setUp was not called", setUpCalled ); } @Test public void testSuccessOne() { Assert.assertTrue( true ); } @Test public void testSuccessTwo() { Assert.assertTrue( true ); } @AfterClass public static void oneTimeTearDown() { } } surefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-before/0000755000175000017500000000000011645102474030612 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-before/pom.xml0000644000175000017500000000544311546571210032133 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4 1.0-SNAPSHOT Test for Testng 5.7 jdk15 testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} BasicTest#testSuccess* surefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-before/src/0000755000175000017500000000000011645102474031401 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-before/src/test/0000755000175000017500000000000011645102474032360 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-before/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-before/src/test/ja0000755000175000017500000000000011645102474032673 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-before/src/test/java/testng/surefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-before/src/test/ja0000755000175000017500000000000011645102474032673 5ustar tonytony././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-before/src/test/java/testng/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-before/src/test/ja0000644000175000017500000000206211546571210032673 0ustar tonytonypackage testng; import org.testng.annotations.*; import org.testng.Assert; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; private Integer foo; @BeforeTest public void intialize() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); foo = Integer.valueOf( 1 ); } @AfterTest public void shutdown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( setUpCalled ); Assert.assertNotNull( foo ); } @Test public void testSuccessOne() { Assert.assertTrue( true ); Assert.assertNotNull( foo ); } @Test public void testSuccessTwo() { Assert.assertTrue( true ); Assert.assertNotNull( foo ); } @AfterClass public static void oneTimeTearDown() { } } surefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/0000755000175000017500000000000011645102474026346 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/pom.xml0000644000175000017500000000547711452560655027705 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire suiteXml 1.0-SNAPSHOT TestNG Suite XML File testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} 5.7 jdk15 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} src/test-data/testng.xml org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 surefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/src/0000755000175000017500000000000011645102474027135 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test/0000755000175000017500000000000011645102474030114 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test/java/0000755000175000017500000000000011645102474031035 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test/java/testng/0000755000175000017500000000000011645102474032341 5ustar tonytony././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test/java/testng/suiteXml/surefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test/java/testng/su0000755000175000017500000000000011645102474032711 5ustar tonytony././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test/java/testng/suiteXml/TestNGSuiteTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test/java/testng/su0000644000175000017500000000107010766555661032726 0ustar tonytonypackage testng.suiteXml; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; /** * Tests that forcing testng to run tests via the * "${maven.test.forcetestng}" configuration option * works. * * @author jkuhnert */ public class TestNGSuiteTest { /** * Sets up testObject */ @BeforeClass public void configureTest() { testObject = new Object(); } Object testObject; /** * Tests reporting an error */ @Test public void isTestObjectNull() { assert testObject != null : "testObject is null"; } }surefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/0000755000175000017500000000000011645102474031023 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/testng-suite-xml/src/test-data/testng.xm0000644000175000017500000000204710766555661032715 0ustar tonytony surefire-2.10/surefire-integration-tests/src/test/resources/system-properties/0000755000175000017500000000000011645102474026633 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/system-properties/pom.xml0000644000175000017500000000652711561747754030177 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire system-properties 1.0-SNAPSHOT Test for systemProperties org.codehaus.mojo build-helper-maven-plugin 1.2 generate-sources reserve-network-port reservedPort1 reservedPort2 reservedPort3 maven-surefire-plugin ${surefire.version} setInPom foo ${project.build.directory} ${reservedPort1} ${reservedPort2} ${setOnArgLineWorkAround} value2 ${project.basedir}/src/test/config/propsfile.properties -DsetOnArgLine=bar junit junit 3.8.1 test fool surefire-2.10/surefire-integration-tests/src/test/resources/system-properties/src/0000755000175000017500000000000011645102474027422 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/system-properties/src/test/0000755000175000017500000000000011645102474030401 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/system-properties/src/test/java/0000755000175000017500000000000011645102474031322 5ustar tonytony././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/system-properties/src/test/java/systemProperties/surefire-2.10/surefire-integration-tests/src/test/resources/system-properties/src/test/java/systemPr0000755000175000017500000000000011645102474033071 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/system-properties/src/test/java/systemProperties/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/system-properties/src/test/java/systemPr0000644000175000017500000000427611561747754033121 0ustar tonytonypackage systemProperties; import java.io.File; import junit.framework.TestCase; public class BasicTest extends TestCase { public void testSetInPom() { assertEquals( "property setInPom not set", "foo", System.getProperty( "setInPom" ) ); } public void testSetOnArgLine() { assertEquals( "setOnArgLine property not set", "bar", System.getProperty( "setOnArgLine" ) ); } public void testSystemPropertyUsingMavenProjectProperties() { String actualBuildDirectory = new File( System.getProperty( "basedir" ), "target" ).getAbsolutePath(); String buildDirectoryFromPom = new File( System.getProperty( "buildDirectory" ) ).getAbsolutePath(); assertEquals( "Pom property not set.", actualBuildDirectory, buildDirectoryFromPom ); } public void testSystemPropertyGenerateByOtherPlugin() throws Exception { int reservedPort1 = Integer.parseInt( System.getProperty( "reservedPort1" ) ); int reservedPort2 = Integer.parseInt( System.getProperty( "reservedPort2" ) ); System.out.println( "reservedPort1: " + reservedPort1 ); System.out.println( "reservedPort2: " + reservedPort2 ); assertTrue( reservedPort1 != reservedPort2 ); } public void testEmptySystemProperties() { assertNull( "Null property is not null", System.getProperty( "nullProperty" ) ); assertNull( "Blank property is not null", System.getProperty( "blankProperty" ) ); } /** * work around for SUREFIRE-121 */ public void testSetOnArgLineWorkAround() { assertEquals( "property setOnArgLineWorkAround not set", "baz", System.getProperty( "setOnArgLineWorkAround" ) ); } public void testSetOnMavenCommandLine() { assertEquals( "property setOnMavenCommandLine not set", "baz", System.getProperty( "setOnMavenCommandLine" ) ); } public void testSetInFile() { assertEquals( "property setInFile not set", "bar", System.getProperty( "setInFile" ) ); assertEquals( "property overriddenPropertyFomFile not overridden", "value2", System.getProperty( "overriddenPropertyFomFile" ) ); } } surefire-2.10/surefire-integration-tests/src/test/resources/system-properties/src/test/config/0000755000175000017500000000000011645102474031646 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/system-properties/src/test/config/propsfile.propertiessurefire-2.10/surefire-integration-tests/src/test/resources/system-properties/src/test/config/propsf0000644000175000017500000000006311561747754033116 0ustar tonytonysetInFile = bar overriddenPropertyFomFile = value1 surefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/0000755000175000017500000000000011645102474026234 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/pom.xml0000644000175000017500000000346711051504420027547 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire plexus-conflict 1.0-SNAPSHOT Test for plexus conflict org.codehaus.plexus plexus-utils 1.0.4 junit junit 3.8.1 test maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/0000755000175000017500000000000011645102474027023 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/test/0000755000175000017500000000000011645102474030002 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/test/java/0000755000175000017500000000000011645102474030723 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/test/java/plexusConflict/surefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/test/java/plexusConf0000755000175000017500000000000011645102474032772 5ustar tonytony././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/test/java/plexusConflict/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/test/java/plexusConf0000644000175000017500000000047410766555661033016 0ustar tonytonypackage plexusConflict; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { public void testPlexusConflict() { CommandlineExtender ce = new CommandlineExtender(); } } surefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/main/0000755000175000017500000000000011645102474027747 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/main/java/0000755000175000017500000000000011645102474030670 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/main/java/plexusConflict/surefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/main/java/plexusConf0000755000175000017500000000000011645102474032737 5ustar tonytony././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/main/java/plexusConflict/CommandlineExtender.javasurefire-2.10/surefire-integration-tests/src/test/resources/plexus-conflict/src/main/java/plexusConf0000644000175000017500000000055610766555661032764 0ustar tonytonypackage plexusConflict; import org.codehaus.plexus.util.cli.Commandline; /** * Conflict with latest version of plexus by using modified protected class. */ public class CommandlineExtender extends Commandline { public CommandlineExtender() { // In 1.0.4, Commandline.envVars was a Vector; in 1.4.x, it's a Map. super.envVars.add(""); } } surefire-2.10/surefire-integration-tests/src/test/resources/junit44-environment/0000755000175000017500000000000011645102474026760 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-environment/pom.xml0000644000175000017500000000411211051504420030257 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit44-environment 1.0-SNAPSHOT Test for setting environment variables junit junit 4.4 test maven-surefire-plugin ${surefire.version} foo org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 surefire-2.10/surefire-integration-tests/src/test/resources/junit44-environment/src/0000755000175000017500000000000011645102474027547 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-environment/src/test/0000755000175000017500000000000011645102474030526 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-environment/src/test/java/0000755000175000017500000000000011645102474031447 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit44-environment/src/test/java/junit44/surefire-2.10/surefire-integration-tests/src/test/resources/junit44-environment/src/test/java/junit40000755000175000017500000000000011645102474032605 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit44-environment/src/test/java/junit44/environment/surefire-2.10/surefire-integration-tests/src/test/resources/junit44-environment/src/test/java/junit40000755000175000017500000000000011645102474032605 5ustar tonytony././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit44-environment/src/test/java/junit44/environment/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit44-environment/src/test/java/junit40000644000175000017500000000060710766555661032627 0ustar tonytonypackage junit44.environment; import static org.hamcrest.core.Is.*; import static org.hamcrest.core.IsNull.*; import org.junit.Assert; import org.junit.Test; public class BasicTest { @Test public void testEnvVar() { Assert.assertThat( System.getenv( "PATH" ), notNullValue() ); Assert.assertThat( System.getenv( "DUMMY_ENV_VAR" ), is( "foo" ) ); } } surefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/0000755000175000017500000000000011645102474030770 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/pom.xml0000644000175000017500000000360511556104214032304 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire fork-consoleOutput jar 1.0-SNAPSHOT fork-consoleOutput http://maven.apache.org junit junit ${junit.version} org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} ${forkMode} ${printSummary} ${userFile} ${reportFormat} ${redirect.to.file} **/Test*.java 4.8.1 true once true true brief surefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/0000755000175000017500000000000011645102474031557 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/0000755000175000017500000000000011645102474032536 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/ja0000755000175000017500000000000011645102474033051 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/surefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/ja0000755000175000017500000000000011645102474033051 5ustar tonytony././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/ja0000644000175000017500000000224511565275451033065 0ustar tonytonypackage forkConsoleOutput; /* * 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. */ import org.junit.Test; public class Test2 { @Test public void test6281() { System.out.println("sout: I am talking to you"); System.out.println("sout: Will Fail soon"); System.err.println("serr: And you too"); System.err.println("serr: Will Fail now"); throw new RuntimeException("FailHere"); } } ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/java/forkConsoleOutput/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutputWithErrors/src/test/ja0000644000175000017500000000255511556104214033055 0ustar tonytonypackage forkConsoleOutput; /* * 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. */ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class Test1 { @Test public void test6281() { System.out.println( "Test1 on" + Thread.currentThread().getName()); } @BeforeClass public static void testWithFailingAssumption2() { System.out.println( "BeforeTest1 on" + Thread.currentThread().getName()); } @AfterClass public static void testWithFailingAssumption3() { System.out.println( "AfterTest1 on" + Thread.currentThread().getName()); } } surefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutput/0000755000175000017500000000000011645102474026737 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutput/pom.xml0000644000175000017500000000353711556104214030257 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire fork-consoleOutput jar 1.0-SNAPSHOT fork-consoleOutput http://maven.apache.org junit junit ${junit.version} org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} ${forkMode} ${printSummary} true ${reportFormat} ${redirect.to.file} **/Test*.java 4.8.1 true once true brief surefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutput/src/0000755000175000017500000000000011645102474027526 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutput/src/test/0000755000175000017500000000000011645102474030505 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutput/src/test/java/0000755000175000017500000000000011645102474031426 5ustar tonytony././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutput/src/test/java/forkConsoleOutput/surefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutput/src/test/java/forkCon0000755000175000017500000000000011645102474032750 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutput/src/test/java/forkConsoleOutput/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-consoleOutput/src/test/java/forkCon0000644000175000017500000000255511504477250032762 0ustar tonytonypackage forkConsoleOutput; /* * 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. */ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class Test1 { @Test public void test6281() { System.out.println( "Test1 on" + Thread.currentThread().getName()); } @BeforeClass public static void testWithFailingAssumption2() { System.out.println( "BeforeTest1 on" + Thread.currentThread().getName()); } @AfterClass public static void testWithFailingAssumption3() { System.out.println( "AfterTest1 on" + Thread.currentThread().getName()); } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/0000755000175000017500000000000011645102474032340 5ustar tonytony././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/p0000644000175000017500000000562611476536715032546 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit-twoTestCases 1.0-SNAPSHOT Test for two test cases junit junit 4.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} org.apache.maven.surefire surefire-junit3 ${surefire.version} ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/s0000755000175000017500000000000011645102474032523 5ustar tonytony././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/s0000755000175000017500000000000011645102474032523 5ustar tonytony././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/s0000755000175000017500000000000011645102474032523 5ustar tonytony././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/src/test/java/junit/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/s0000755000175000017500000000000011645102474032523 5ustar tonytony././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/src/test/java/junit/twoTestCases/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/s0000755000175000017500000000000011645102474032523 5ustar tonytony././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/src/test/java/junit/twoTestCases/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/s0000644000175000017500000000245111557340256032533 0ustar tonytonypackage junit.twoTestCases; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { private boolean setUpCalled = false; private static boolean tearDownCalled = false; public BasicTest( String name ) { super( name ); } public static Test suite() { TestSuite suite = new TestSuite(); Test test = new BasicTest( "testSetUp" ); suite.addTest( test ); return new TestSetup( suite ) { protected void setUp() { //oneTimeSetUp(); } protected void tearDown() { oneTimeTearDown(); } }; } protected void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } protected void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } public void testSetUp() { assertTrue( "setUp was not called", setUpCalled ); } public static void oneTimeTearDown() { assertTrue( "tearDown was not called", tearDownCalled ); } } ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/src/test/java/junit/twoTestCases/TestTwo.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-408-manual-provider-selection/s0000644000175000017500000000021211476536715032533 0ustar tonytonypackage junit.twoTestCases; import junit.framework.TestCase; public class TestTwo extends TestCase { public void testTwo() {} } surefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/0000755000175000017500000000000011645102474026702 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/pom.xml0000644000175000017500000000516411573232612030223 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4-runlistener 1.0-SNAPSHOT JUnit4 RunListener test 4.4 surefire-junit4 junit junit ${junitVersion} test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} listener runListener.FileWritingRunListener1,runListener.FileWritingRunListener2,runListener.EchoingRunListener org.apache.maven.surefire ${provider} ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/0000755000175000017500000000000011645102474027471 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/0000755000175000017500000000000011645102474030450 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/0000755000175000017500000000000011645102474031371 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/runListener/surefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/runList0000755000175000017500000000000011645102474032752 5ustar tonytony././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/runListener/FileWritingRunListener1.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/runList0000644000175000017500000000105411557340256032760 0ustar tonytonypackage runListener; import org.junit.runner.Description; import org.junit.runner.notification.RunListener; /** * {@link RunListener} to generate an output file whose existence can be checked by surefire-integration. * * @author Matthew Gilliard */ public class FileWritingRunListener1 extends RunListener { @Override public void testStarted( Description description ) { FileHelper.writeFile( "runlistener-output-1.txt", "This written by RunListener#testStarted()" ); } } ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/runListener/FileHelper.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/runList0000644000175000017500000000114511501371331032744 0ustar tonytonypackage runListener; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class FileHelper { public static void writeFile( String fileName, String content ) { try { File target = new File( "target" ).getAbsoluteFile(); File listenerOutput = new File( target, fileName ); FileWriter out = new FileWriter( listenerOutput ); out.write( content ); out.flush(); out.close(); } catch ( IOException e ) { throw new RuntimeException( e ); } } } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/runListener/FileWritingRunListener2.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/runList0000644000175000017500000000105411557340256032760 0ustar tonytonypackage runListener; import org.junit.runner.Description; import org.junit.runner.notification.RunListener; /** * {@link RunListener} to generate an output file whose existence can be checked by surefire-integration. * * @author Matthew Gilliard */ public class FileWritingRunListener2 extends RunListener { @Override public void testStarted( Description description ) { FileHelper.writeFile( "runlistener-output-2.txt", "This written by RunListener#testStarted()" ); } } ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/runListener/JUnit4RunListenerTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/runList0000644000175000017500000000027111501371331032743 0ustar tonytonypackage runListener; import org.junit.Assert; import org.junit.Test; public class JUnit4RunListenerTest { @Test public void simpleTest() { Assert.assertEquals( 2, 1 + 1 ); } } ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/runListener/EchoingRunListener.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit4-runlistener/src/test/java/runList0000644000175000017500000000306111573232612032752 0ustar tonytonypackage runListener; import org.junit.runner.Description; import org.junit.runner.Result; import org.junit.runner.notification.Failure; import org.junit.runner.notification.RunListener; /** * {@link org.junit.runner.notification.RunListener} to generate an output file whose existence can be checked by surefire-integration. * * @author Matthew Gilliard */ public class EchoingRunListener extends RunListener { @Override public void testRunStarted( Description description ) throws Exception { System.out.println("testRunStarted " + description); } @Override public void testRunFinished( Result result ) throws Exception { System.out.println("testRunFinished " + result); } @Override public void testStarted( Description description ) throws Exception { System.out.println("testStarted " + description); } @Override public void testFinished( Description description ) throws Exception { System.out.println("testFinished " + description); } @Override public void testFailure( Failure failure ) throws Exception { System.out.println("testFailure " + failure); } @Override public void testIgnored( Description description ) throws Exception { System.out.println("testIgnored " + description); } public void testAssumptionFailure( Failure failure ) { System.out.println("testAssumptionFailure " + failure); } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/0000755000175000017500000000000011645102474032200 5ustar tonytony././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/pom0000644000175000017500000000441411534231136032714 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire surefire-634-propertiesWarning 1.0-SNAPSHOT Test for warning about system properties that cannot be set 4.4 junit junit ${junitVersion} test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} ${basedir}/src/main ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/src0000755000175000017500000000000011645102474032710 5ustar tonytony././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/src0000755000175000017500000000000011645102474032710 5ustar tonytony././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/src0000755000175000017500000000000011645102474032710 5ustar tonytony././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/src/test/java/junit4/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/src0000755000175000017500000000000011645102474032710 5ustar tonytony././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/src/test/java/junit4/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-634-systemPropertiesWarning/src0000644000175000017500000000141511534231136032706 0ustar tonytonypackage junit4; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @Before public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @After public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( "setUp was not called", setUpCalled ); } @AfterClass public static void oneTimeTearDown() { } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/0000755000175000017500000000000011645102474031374 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/pom.xm0000644000175000017500000000353111564532361032541 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire surefire-733-allOverridesCaptured 1.0-SNAPSHOT Ensures that all versions of system.out capture are handled junit junit ${junit.version} test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} 4.8.1 surefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/src/0000755000175000017500000000000011645102474032163 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/src/te0000755000175000017500000000000011645102474032514 5ustar tonytony././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/src/te0000755000175000017500000000000011645102474032514 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/src/test/java/junit/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/src/te0000755000175000017500000000000011645102474032514 5ustar tonytony././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/src/test/java/junit/surefire733/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/src/te0000755000175000017500000000000011645102474032514 5ustar tonytony././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/src/test/java/junit/surefire733/ATest.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-733-allOverridesCaptured/src/te0000644000175000017500000000120411564532361032515 0ustar tonytonypackage junit.surefire733; import junit.framework.TestCase; public class ATest extends TestCase { public void testConsoleOut() { System.out.write( (int) 'a'); final byte[] bytes = "bc".getBytes(); System.out.write(bytes, 0, bytes.length); System.out.write('\n'); System.out.println("ABC"); System.out.println((String)null); final byte[] errbytes = "ef".getBytes(); System.err.write( (int) 'z' ); System.err.write(errbytes, 0, bytes.length); System.err.write('\n'); System.err.println("XYZ"); System.err.println((String)null); } } surefire-2.10/surefire-integration-tests/src/test/resources/fork-fail/0000755000175000017500000000000011645102474024767 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-fail/pom.xml0000644000175000017500000000412611562013564026306 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire fork-fail 1.0-SNAPSHOT Test for failing fork -Xmxxxx712743m maven-compiler-plugin 1.5 1.5 maven-surefire-plugin ${surefire.version} once ${argLine} true junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/fork-fail/src/0000755000175000017500000000000011645102474025556 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-fail/src/test/0000755000175000017500000000000011645102474026535 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-fail/src/test/java/0000755000175000017500000000000011645102474027456 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-fail/src/test/java/forkMode/0000755000175000017500000000000011645102474031224 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-fail/src/test/java/forkMode/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-fail/src/test/java/forkMode/Test2.j0000644000175000017500000000032411562013564032376 0ustar tonytonypackage forkMode; import java.io.IOException; import junit.framework.TestCase; public class Test2 extends TestCase { public void test2() throws IOException { Test1.dumpPidFile(this); } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-fail/src/test/java/forkMode/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-fail/src/test/java/forkMode/Test1.j0000644000175000017500000000171211562013564032377 0ustar tonytonypackage forkMode; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.lang.management.ManagementFactory; import junit.framework.TestCase; public class Test1 extends TestCase { public void test1() throws IOException { dumpPidFile(this); } public static void dumpPidFile(TestCase test) throws IOException { String fileName = test.getName() + "-pid"; File target = new File("target"); if (! (target.exists() && target.isDirectory()) ) { target = new File ("."); } File pidFile = new File(target, fileName); FileWriter fw = new FileWriter(pidFile); // DGF little known trick... this is guaranteed to be unique to the PID // In fact, it usually contains the pid and the local host name! String pid = ManagementFactory.getRuntimeMXBean().getName(); fw.write( pid ); fw.flush(); fw.close(); } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-fail/src/test/java/forkMode/Test3.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-fail/src/test/java/forkMode/Test3.j0000644000175000017500000000032411562013564032377 0ustar tonytonypackage forkMode; import java.io.IOException; import junit.framework.TestCase; public class Test3 extends TestCase { public void test3() throws IOException { Test1.dumpPidFile(this); } } surefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/0000755000175000017500000000000011645102474025542 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/pom.xml0000644000175000017500000000343211533524371027061 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire fork-timeout-test jar 1.0-SNAPSHOT fork-timeout http://maven.apache.org 4.8.1 classes once 1 junit junit ${junit.version} org.apache.maven.plugins maven-compiler-plugin 2.3.2 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} ${forkMode} ${junit.parallel} 5 true ${timeOut} plain true **/Test*.java surefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/0000755000175000017500000000000011645102474026331 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/0000755000175000017500000000000011645102474027310 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/java/0000755000175000017500000000000011645102474030231 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/java/forktimeout/0000755000175000017500000000000011645102474032601 5ustar tonytony././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/java/forktimeout/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/java/forktimeout/T0000644000175000017500000000172711533524371032736 0ustar tonytonypackage forktimeout; /* * 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. */ import org.junit.Test; public class Test2 extends BaseForkTimeout { @Test public void test690_2() { dumpStuff( "test690_2" ); } }././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/java/forktimeout/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/java/forktimeout/T0000644000175000017500000000210111533524371032721 0ustar tonytonypackage forktimeout; /* * 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. */ import org.junit.Test; public class Test1 extends BaseForkTimeout { @Test public void test690() { dumpStuff( "test690" ); System.out.println(" with lots of output "); System.err.println( "e with lots of output "); } }././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/java/forktimeout/Test4.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/java/forktimeout/T0000644000175000017500000000173411533524371032734 0ustar tonytonypackage forktimeout; /* * 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. */ import org.junit.Test; public class Test4 extends BaseForkTimeout { @Test public void test690_4() { dumpStuff( "test690_4" ); } }././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/java/forktimeout/Test5.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/java/forktimeout/T0000644000175000017500000000173411533524371032734 0ustar tonytonypackage forktimeout; /* * 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. */ import org.junit.Test; public class Test5 extends BaseForkTimeout { @Test public void test690_5() { dumpStuff( "test690_5" ); } }././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/java/forktimeout/Test3.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-timeout/src/test/java/forktimeout/T0000644000175000017500000000173111533524371032731 0ustar tonytonypackage forktimeout; /* * 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. */ import org.junit.Test; public class Test3 extends BaseForkTimeout { @Test public void test690_3() { dumpStuff( "test690_3" ); } }surefire-2.10/surefire-integration-tests/src/test/resources/working-directory-is-invalid-property/0000755000175000017500000000000011645102474032516 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/working-directory-is-invalid-property/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/working-directory-is-invalid-property/po0000644000175000017500000000346511560324726033071 0ustar tonytony 4.0.0 localhost working-directory-test 1.0 Don't run tests if working directory is invalid property. junit junit 3.8.2 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} ${notSet} ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/working-directory-is-invalid-property/src/surefire-2.10/surefire-integration-tests/src/test/resources/working-directory-is-invalid-property/sr0000755000175000017500000000000011645102474033063 5ustar tonytony././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/working-directory-is-invalid-property/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/working-directory-is-invalid-property/sr0000755000175000017500000000000011645102474033063 5ustar tonytony././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/working-directory-is-invalid-property/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/working-directory-is-invalid-property/sr0000755000175000017500000000000011645102474033063 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/working-directory-is-invalid-property/src/test/java/MyTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/working-directory-is-invalid-property/sr0000644000175000017500000000021511560324726033065 0ustar tonytonyimport junit.framework.TestCase; public class MyTest extends TestCase { public void testSomething() { assertTrue(true); } } surefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/0000755000175000017500000000000011645102474027676 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/pom.xml0000644000175000017500000000554011452560655031224 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-twoTestCaseSuite 1.0-SNAPSHOT TestNG Suite XML with two test cases testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} 5.7 jdk15 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} src/test/resources/suite.xml org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 surefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/0000755000175000017500000000000011645102474030465 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/0000755000175000017500000000000011645102474031444 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/java/0000755000175000017500000000000011645102474032365 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/java/testng/surefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/java/te0000755000175000017500000000000011645102474032716 5ustar tonytony././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/java/testng/two/surefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/java/te0000755000175000017500000000000011645102474032716 5ustar tonytony././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/java/testng/two/TestNGSuiteTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/java/te0000644000175000017500000000020510766555661032732 0ustar tonytonypackage testng.two; import org.testng.annotations.Test; public class TestNGSuiteTest { @Test public void doNothing() { } }././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/java/testng/two/TestNGTestTwo.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/java/te0000644000175000017500000000020110766555661032726 0ustar tonytonypackage testng.two; import org.testng.annotations.Test; public class TestNGTestTwo { @Test public void testTwo() { } }././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/resources/surefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/resourc0000755000175000017500000000000011645102474033047 5ustar tonytony././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/resources/suite.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/testng-twoTestCaseSuite/src/test/resourc0000644000175000017500000000020610766555661033064 0ustar tonytony surefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/0000755000175000017500000000000011645102474026210 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/pom.xml0000644000175000017500000000376611051504420027525 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire classpath-order 1.0-SNAPSHOT Test proper order of class path elements: test-classes, classes, dependencies maven-surefire-plugin ${surefire.version} true org.apache.maven.plugins maven-surefire-report-plugin 2.3.1 junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/0000755000175000017500000000000011645102474026777 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/test/0000755000175000017500000000000011645102474027756 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/test/java/0000755000175000017500000000000011645102474030677 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/test/java/it/0000755000175000017500000000000011645102474031313 5ustar tonytony././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/test/java/it/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/test/java/it/BasicTe0000644000175000017500000000176310766555661032574 0ustar tonytonypackage it; import java.io.InputStream; import java.io.IOException; import java.util.Properties; import junit.framework.TestCase; public class BasicTest extends TestCase { public void testTestClassesBeforeMainClasses() { Properties props = getProperties( "/surefire-classpath-order.properties" ); assertEquals( "test-classes", props.getProperty( "Surefire" ) ); } public void testMainClassesBeforeDependencies() { Properties props = getProperties( "/surefire-report.properties" ); assertEquals( "classes", props.getProperty( "Surefire" ) ); } private Properties getProperties(String resource) { InputStream in = getClass().getResourceAsStream( resource ); assertNotNull( in ); try { Properties props = new Properties(); props.load( in ); return props; } catch (IOException e) { fail(e.toString()); return null; } } } surefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/test/resources/0000755000175000017500000000000011645102474031770 5ustar tonytony././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/test/resources/surefire-classpath-order.propertiessurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/test/resources/suref0000644000175000017500000000015210766555661033052 0ustar tonytony# This file collides with the equally named file from the project's main resources Surefire: test-classes surefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/main/0000755000175000017500000000000011645102474027723 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/main/resources/0000755000175000017500000000000011645102474031735 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/main/resources/surefire-report.propertiessurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/main/resources/suref0000644000175000017500000000015010766555661033015 0ustar tonytony# This file collides with the equally named i18n bundle in the Surefire Report Plugin Surefire: classes ././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/main/resources/surefire-classpath-order.propertiessurefire-2.10/surefire-integration-tests/src/test/resources/classpath-order/src/main/resources/suref0000644000175000017500000000014510766555661033021 0ustar tonytony# This file collides with the equally named file from the project's test resources Surefire: classes surefire-2.10/surefire-integration-tests/src/test/resources/working-directory-missing/0000755000175000017500000000000011645102474030246 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/working-directory-missing/pom.xml0000644000175000017500000000352411347740162031570 0ustar tonytony 4.0.0 localhost working-directory-test 1.0 Run tests in a nonexistent working directory junit junit 3.8.2 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} ${project.build.directory}/surefire-working-directory surefire-2.10/surefire-integration-tests/src/test/resources/working-directory-missing/src/0000755000175000017500000000000011645102474031035 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/working-directory-missing/src/test/0000755000175000017500000000000011645102474032014 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/working-directory-missing/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/working-directory-missing/src/test/java/0000755000175000017500000000000011645102474032735 5ustar tonytony././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/working-directory-missing/src/test/java/MyTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/working-directory-missing/src/test/java/0000644000175000017500000000021511347740162032736 0ustar tonytonyimport junit.framework.TestCase; public class MyTest extends TestCase { public void testSomething() { assertTrue(true); } } surefire-2.10/surefire-integration-tests/src/test/resources/junit44-dep/0000755000175000017500000000000011645102474025164 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-dep/pom.xml0000644000175000017500000000446711524571361026515 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit44-dep 1.0-SNAPSHOT Test for junit-dep junit junit-dep ${junit-dep.version} test provided381 junit junit 3.8.1 provided org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 maven-surefire-plugin ${surefire.version} classes surefire-2.10/surefire-integration-tests/src/test/resources/junit44-dep/src/0000755000175000017500000000000011645102474025753 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-dep/src/test/0000755000175000017500000000000011645102474026732 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-dep/src/test/java/0000755000175000017500000000000011645102474027653 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-dep/src/test/java/junit44Dep/0000755000175000017500000000000011645102474031605 5ustar tonytony././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit44-dep/src/test/java/junit44Dep/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit44-dep/src/test/java/junit44Dep/Bas0000644000175000017500000000163310766555661032255 0ustar tonytonypackage junit44Dep; import org.hamcrest.core.Is; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @Before public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @After public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( "setUp was not called", setUpCalled ); Assert.assertThat( true, Is.is( true ) ); } @AfterClass public static void oneTimeTearDown() { Assert.assertTrue( "tearDown was not called", tearDownCalled ); } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/0000755000175000017500000000000011645102474031434 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/pom.x0000644000175000017500000000264211504203312032407 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4-test jar 1.0-SNAPSHOT junit4-test http://maven.apache.org junit junit 4.8.1 org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} once methods 10 **/Test*.java surefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/src/0000755000175000017500000000000011645102474032223 5ustar tonytony././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/src/t0000755000175000017500000000000011645102474032407 5ustar tonytony././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/src/t0000755000175000017500000000000011645102474032407 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/src/test/java/surefire163/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/src/t0000755000175000017500000000000011645102474032407 5ustar tonytony././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/src/test/java/surefire163/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/src/t0000644000175000017500000000347711410461417032417 0ustar tonytonypackage surefire613; import org.junit.Ignore; import org.junit.Test; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assume.*; import static junit.framework.Assert.fail; /** * @author Kristian Rosenvold */ public class Test2 { @Test public void testAllok(){ System.out.println("testAllok to stdout"); System.err.println("testAllok to stderr"); } @Ignore @Test public void testWithIgnore1(){ } @Ignore @Test public void testWithIgnore2(){ } @Test public void testiWithFail1(){ fail("We excpect this"); } @Test public void testiWithFail2(){ fail("We excpect this"); } @Test public void testiWithFail3(){ fail("We excpect this"); } @Test public void testiWithFail4(){ fail("We excpect this"); } @Test public void testWithException1() { System.out.println("testWithException1 to stdout"); System.err.println("testWithException1 to stderr"); throw new RuntimeException("We expect this"); } @Test public void testWithException2() { throw new RuntimeException("We expect this"); } @Test public void testWithException3() { throw new RuntimeException("We expect this"); } @Test public void testWithException4() { throw new RuntimeException("We expect this"); } @Test public void testWithException5() { throw new RuntimeException("We expect this"); } @Test public void testWithException6() { throw new RuntimeException("We expect this"); } @Test public void testWithException7() { throw new RuntimeException("We expect this"); } @Test public void testWithException8() { throw new RuntimeException("We expect this"); } }././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/src/test/java/surefire163/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-613-testCount-in-parallel/src/t0000644000175000017500000000315111410461417032404 0ustar tonytonypackage surefire613; import org.junit.Test; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assume.*; public class Test1 { @Test public void testWithFailingAssumption1() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption2() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption3() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption4() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption5() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption6() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption7() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption8() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption9() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption10() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption11() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption12() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption13() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption14() { assumeThat( 2, is(3)); } @Test public void testWithFailingAssumption15() { assumeThat( 2, is(3)); } }surefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/0000755000175000017500000000000011645102474026535 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/pom.xml0000644000175000017500000000602511553513575030063 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire maven-it-includes-excludes 1.0-SNAPSHOT Maven Integration Test :: includes-excludes Test surefire inclusion/exclusions junit junit 3.8.2 test maven-surefire-plugin ${surefire.version} simple maven-surefire-plugin **/DontRunTest.* **/NotIncludedByDefault.java **/*Test.java regex maven-surefire-plugin **/DontRunTest.* %regex[.*Test.*|.*Not.*] path maven-surefire-plugin **/DontRunTest.java */test/* surefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/src/0000755000175000017500000000000011645102474027324 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/src/test/0000755000175000017500000000000011645102474030303 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/src/test/java/0000755000175000017500000000000011645102474031224 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/src/test/java/org/0000755000175000017500000000000011645102474032013 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/src/test/java/org/test/surefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/src/test/java/org/test0000755000175000017500000000000011645102474032713 5ustar tonytony././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/src/test/java/org/test/NotIncludedByDefault.javasurefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/src/test/java/org/test0000644000175000017500000000046111553513575032724 0ustar tonytonypackage org.test; import java.io.FileOutputStream; public class NotIncludedByDefault { public void testRun() throws Exception { FileOutputStream fout = new FileOutputStream("target/testTouchFile.txt"); fout.write('!'); fout.flush(); fout.close(); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/src/test/java/org/test/DefaultTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/src/test/java/org/test0000644000175000017500000000045711553513575032731 0ustar tonytonypackage org.test; import java.io.FileOutputStream; public class DefaultTest { public void testRun() throws Exception { FileOutputStream fout = new FileOutputStream("target/defaultTestTouchFile.txt"); fout.write('!'); fout.flush(); fout.close(); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/src/test/java/org/test/DontRunTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/includes-excludes/src/test/java/org/test0000644000175000017500000000025411553513575032724 0ustar tonytonypackage org.test; import junit.framework.TestCase; public class DontRunTest extends TestCase { public void testRun() { assertEquals(true, false); } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/0000755000175000017500000000000011645102474030252 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/pom.xml0000644000175000017500000000307311514022056031562 0ustar tonytony 4.0.0 com.example surefire-500 jar 1.0-SNAPSHOT surefire-500-puzzling-error http://maven.apache.org 1.5 1.5 4.4 junit junit ${junit.version} test org.apache.maven.plugins maven-compiler-plugin true ${java.source.version} ${java.target.version} maven-surefire-plugin ${surefire.version} brief true surefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/src/0000755000175000017500000000000011645102474031041 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/src/test/0000755000175000017500000000000011645102474032020 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/src/test/jav0000755000175000017500000000000011645102474032521 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/src/test/java/surefire500/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/src/test/jav0000755000175000017500000000000011645102474032521 5ustar tonytony././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/src/test/java/surefire500/Suite.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/src/test/jav0000644000175000017500000000034311513660034032516 0ustar tonytonypackage surefire500; import org.junit.runner.RunWith; import org.junit.runners.Suite.SuiteClasses; @RunWith(org.junit.runners.Suite.class) @SuiteClasses(value={ExplodingTest.class, PassingTest.class}) public class Suite { } ././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/src/test/java/surefire500/PassingTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/src/test/jav0000644000175000017500000000055711557340256032536 0ustar tonytonypackage surefire500; import org.junit.Test; import static org.junit.Assert.assertTrue; public class PassingTest { @Test public void testOne() { assertTrue(true); } @Test public void testTwo() { assertTrue(true); } @Test public void testThree() { assertTrue(true); } @Test public void testFour() { assertTrue(true); } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/src/test/java/surefire500/ExplodingTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-500-puzzling-error/src/test/jav0000644000175000017500000000063211557340256032530 0ustar tonytonypackage surefire500; import org.junit.Test; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; public class ExplodingTest { static { //noinspection ConstantIfStatement if (true) { throw new java.lang.NoClassDefFoundError("whoops!"); } } @Test public void testPass() { assertTrue(true); } public void testFail() { fail("fail"); } } surefire-2.10/surefire-integration-tests/src/test/resources/failsafe-buildfail/0000755000175000017500000000000011645102474026620 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/failsafe-buildfail/invoker.properties0000644000175000017500000000146311556104214032412 0ustar tonytony# # 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. # invoker.buildResult=failure surefire-2.10/surefire-integration-tests/src/test/resources/failsafe-buildfail/pom.xml0000644000175000017500000000627711556104214030144 0ustar tonytony 4.0.0 localhost working-directory-test 1.0 Run tests multiple times junit junit 3.8.2 test org.apache.maven.plugins maven-failsafe-plugin ${surefire.version} integration-test integration-test ${project.build.directory}/failsafe-reports/failsafe-summary-1.xml acceptance-test integration-test **/AT*.java **/*AT.java **/*ATCase.java ${project.build.directory}/failsafe-reports/failsafe-summary-2.xml verify verify ${project.build.directory}/failsafe-reports/failsafe-summary-1.xml ${project.build.directory}/failsafe-reports/failsafe-summary-2.xml surefire-2.10/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/0000755000175000017500000000000011645102474027407 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/0000755000175000017500000000000011645102474030366 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/0000755000175000017500000000000011645102474031307 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/MyAT.javasurefire-2.10/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/MyAT.ja0000644000175000017500000000166411556104214032437 0ustar tonytony/* * 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. */ import junit.framework.TestCase; public class MyAT extends TestCase { public void testSomething() { assertTrue(false); } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/MyIT.javasurefire-2.10/surefire-integration-tests/src/test/resources/failsafe-buildfail/src/test/java/MyIT.ja0000644000175000017500000000166411556104214032447 0ustar tonytony/* * 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. */ import junit.framework.TestCase; public class MyIT extends TestCase { public void testSomething() { assertTrue(true); } } surefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCases/0000755000175000017500000000000011645102474026674 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCases/pom.xml0000644000175000017500000000332211051504420030175 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit-twoTestCases 1.0-SNAPSHOT Test for two test cases junit junit 3.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCases/src/0000755000175000017500000000000011645102474027463 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCases/src/test/0000755000175000017500000000000011645102474030442 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCases/src/test/java/0000755000175000017500000000000011645102474031363 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCases/src/test/java/junit/0000755000175000017500000000000011645102474032514 5ustar tonytony././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCases/src/test/java/junit/twoTestCases/surefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCases/src/test/java/junit/t0000755000175000017500000000000011645102474032700 5ustar tonytony././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCases/src/test/java/junit/twoTestCases/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCases/src/test/java/junit/t0000644000175000017500000000245111557340256032710 0ustar tonytonypackage junit.twoTestCases; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { private boolean setUpCalled = false; private static boolean tearDownCalled = false; public BasicTest( String name ) { super( name ); } public static Test suite() { TestSuite suite = new TestSuite(); Test test = new BasicTest( "testSetUp" ); suite.addTest( test ); return new TestSetup( suite ) { protected void setUp() { //oneTimeSetUp(); } protected void tearDown() { oneTimeTearDown(); } }; } protected void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } protected void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } public void testSetUp() { assertTrue( "setUp was not called", setUpCalled ); } public static void oneTimeTearDown() { assertTrue( "tearDown was not called", tearDownCalled ); } } ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCases/src/test/java/junit/twoTestCases/TestTwo.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCases/src/test/java/junit/t0000644000175000017500000000021210766555661032712 0ustar tonytonypackage junit.twoTestCases; import junit.framework.TestCase; public class TestTwo extends TestCase { public void testTwo() {} } surefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-after/0000755000175000017500000000000011645102474030451 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-after/pom.xml0000644000175000017500000000544311546573101031773 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4 1.0-SNAPSHOT Test for Testng 5.7 jdk15 testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} BasicTest#testSuccess* surefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-after/src/0000755000175000017500000000000011645102474031240 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-after/src/test/0000755000175000017500000000000011645102474032217 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-after/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-after/src/test/jav0000755000175000017500000000000011645102474032720 5ustar tonytony././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-after/src/test/java/testng/surefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-after/src/test/jav0000755000175000017500000000000011645102474032720 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-after/src/test/java/testng/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern-after/src/test/jav0000644000175000017500000000206211546573101032721 0ustar tonytonypackage testng; import org.testng.annotations.*; import org.testng.Assert; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; private Integer foo; @BeforeTest public void intialize() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); foo = Integer.valueOf( 1 ); } @AfterTest public void shutdown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( setUpCalled ); Assert.assertNotNull( foo ); } @Test public void testSuccessOne() { Assert.assertTrue( true ); Assert.assertNotNull( foo ); } @Test public void testSuccessTwo() { Assert.assertTrue( true ); Assert.assertNotNull( foo ); } @AfterClass public static void oneTimeTearDown() { } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-parallel/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-para0000755000175000017500000000000011645102474032413 5ustar tonytony././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-parallel/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-para0000644000175000017500000000506211515322672032420 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire surefire-test jar 1.0-SNAPSHOT junit-test http://maven.apache.org 4.8.1 junit junit ${junit.version} src/it/java org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} true classes 10 surefire-it integration-test test false true **/MySuiteTest1.java **/MySuiteTest2.java **/MySuiteTest3.java once ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-parallel/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-para0000755000175000017500000000000011645102474032413 5ustar tonytony././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-parallel/src/it/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-para0000755000175000017500000000000011645102474032413 5ustar tonytony././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-parallel/src/it/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-para0000755000175000017500000000000011645102474032413 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-parallel/src/it/java/mho/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-para0000755000175000017500000000000011645102474032413 5ustar tonytony././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-parallel/src/it/java/mho/MySuiteTest3.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-para0000644000175000017500000000134011557340256032417 0ustar tonytonypackage mho; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class MySuiteTest3 extends TestCase { public static Test suite () { TestSuite suite = new TestSuite(); suite.addTest (new MySuiteTest3("testMe", 1)); suite.addTest (new MySuiteTest3("testMe", 2)); suite.addTest (new MySuiteTest3("testMe", 3)); return suite; } private final int number; public MySuiteTest3(String name, int number) { super (name); this.number = number; } public void testMe() { System.out.println ("### "+ this.getClass().getName()+":"+this.getName()+" - number "+number); assertTrue (true); } } ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-parallel/src/it/java/mho/MySuiteTest2.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-para0000644000175000017500000000125211557340256032421 0ustar tonytonypackage mho; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class MySuiteTest2 extends TestCase { public static Test suite () { TestSuite suite = new TestSuite(); suite.addTest (new MySuiteTest2("testMe", 1)); suite.addTest (new MySuiteTest2("testMe", 2)); return suite; } private final int number; public MySuiteTest2(String name, int number) { super (name); this.number = number; } public void testMe() { System.out.println ("### "+ this.getClass().getName()+":"+this.getName()+" - number "+number); assertTrue (true); } } ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-parallel/src/it/java/mho/MySuiteTest1.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-621-testCounting-junit3-in-para0000644000175000017500000000116311557340256032422 0ustar tonytonypackage mho; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class MySuiteTest1 extends TestCase { public static Test suite () { TestSuite suite = new TestSuite(); suite.addTest (new MySuiteTest1("testMe", 1)); return suite; } private final int number; public MySuiteTest1(String name, int number) { super (name); this.number = number; } public void testMe() { System.out.println ("### "+ this.getClass().getName()+":"+this.getName()+" - number "+number); assertTrue (true); } } surefire-2.10/surefire-integration-tests/src/test/resources/classpath-filtering/0000755000175000017500000000000011645102474027060 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/classpath-filtering/pom.xml0000644000175000017500000000401011375315417030373 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire classpath-dependency-filter 1.0-SNAPSHOT Test for filtering classpath dependencies maven-surefire-plugin ${surefire.version} org.apache.commons:* org.apache.commons commons-email 1.2 junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/classpath-filtering/src/0000755000175000017500000000000011645102474027647 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/classpath-filtering/src/test/0000755000175000017500000000000011645102474030626 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/classpath-filtering/src/test/java/0000755000175000017500000000000011645102474031547 5ustar tonytony././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/classpath-filtering/src/test/java/classpathFiltering/surefire-2.10/surefire-integration-tests/src/test/resources/classpath-filtering/src/test/java/classp0000755000175000017500000000000011645102474032755 5ustar tonytony././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/classpath-filtering/src/test/java/classpathFiltering/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/classpath-filtering/src/test/java/classp0000644000175000017500000000111311515322672032753 0ustar tonytonypackage classpathFiltering; import junit.framework.TestCase; public class BasicTest extends TestCase { public void testDependencyFilter() { Class testClass = null; String testClassName = "org.apache.commons.mail.Email"; try { testClass = Class.forName( testClassName ); System.out.println( "Able to load class " + testClass ); } catch ( ClassNotFoundException e ) { System.out.println( "Couldn't load " + testClassName ); } assertNull( testClass ); } } surefire-2.10/surefire-integration-tests/src/test/resources/junit44-single-method/0000755000175000017500000000000011645102474027153 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-single-method/pom.xml0000644000175000017500000000415311531766477030510 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4 1.0-SNAPSHOT Test for JUnit 4 4.4 junit junit ${junitVersion} test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} BasicTest#testSuccessOne surefire-2.10/surefire-integration-tests/src/test/resources/junit44-single-method/src/0000755000175000017500000000000011645102474027742 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-single-method/src/test/0000755000175000017500000000000011645102474030721 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-single-method/src/test/java/0000755000175000017500000000000011645102474031642 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit44-single-method/src/test/java/junit4/surefire-2.10/surefire-integration-tests/src/test/resources/junit44-single-method/src/test/java/juni0000755000175000017500000000000011645102474032530 5ustar tonytony././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit44-single-method/src/test/java/junit4/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit44-single-method/src/test/java/juni0000644000175000017500000000156611531766477032557 0ustar tonytonypackage junit4; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @Before public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @After public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( "setUp was not called", setUpCalled ); } @Test public void testSuccessOne() { Assert.assertTrue( true ); } @AfterClass public static void oneTimeTearDown() { } } surefire-2.10/surefire-integration-tests/src/test/resources/reporters/0000755000175000017500000000000011645102474025142 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/reporters/pom.xml0000644000175000017500000000351711510066505026460 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire reporters jar 1.0-SNAPSHOT reporters http://maven.apache.org org.testng testng 5.8 test jdk15 org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} false ${forkMode} ${printSummary} true ${redirect.to.file} **/Test*.java 4.8.1 true once true surefire-2.10/surefire-integration-tests/src/test/resources/reporters/src/0000755000175000017500000000000011645102474025731 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/reporters/src/test/0000755000175000017500000000000011645102474026710 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/reporters/src/test/java/0000755000175000017500000000000011645102474027631 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/reporters/src/test/java/reporters/0000755000175000017500000000000011645102474031656 5ustar tonytony././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/reporters/src/test/java/reporters/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/reporters/src/test/java/reporters/Test2.0000644000175000017500000000177111510066505032661 0ustar tonytonypackage reporters; /* * 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. */ import junit.framework.TestCase; public class Test2 extends TestCase { public void test6281() { System.out.println( "Test2 on" + Thread.currentThread().getName()); } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/reporters/src/test/java/reporters/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/reporters/src/test/java/reporters/Test1.0000644000175000017500000000177111510066505032660 0ustar tonytonypackage reporters; /* * 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. */ import junit.framework.TestCase; public class Test1 extends TestCase { public void test6281() { System.out.println( "Test1 on" + Thread.currentThread().getName()); } } surefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/0000755000175000017500000000000011645102474026725 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/pom.xml0000644000175000017500000000447311562307755030261 0ustar tonytony 4.0.0 test SurefireToolchains jar 1.0-SNAPSHOT Test :: SurefireToolchains UTF-8 2.0.9 junit junit 4.8.2 test org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} org.apache.maven.plugins maven-toolchains-plugin 1.0 validate toolchain 1.5 sun surefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/0000755000175000017500000000000011645102474027514 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/test/0000755000175000017500000000000011645102474030473 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/test/java/0000755000175000017500000000000011645102474031414 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/test/java/test/0000755000175000017500000000000011645102474032373 5ustar tonytony././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/test/java/test/surefiretoolchains/surefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/test/java/test/su0000755000175000017500000000000011645102474032743 5ustar tonytony././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/test/java/test/surefiretoolchains/AppTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/test/java/test/su0000644000175000017500000000040311562307755032751 0ustar tonytonypackage test.surefiretoolchains; import org.junit.Test; import static org.junit.Assert.*; public class AppTest { @Test public void testApp() { // 1.5.0_19-b02 assertEquals("1.5.0_19", System.getProperty("java.version")); } } surefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/main/0000755000175000017500000000000011645102474030440 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/main/java/0000755000175000017500000000000011645102474031361 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/main/java/test/0000755000175000017500000000000011645102474032340 5ustar tonytony././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/main/java/test/surefiretoolchains/surefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/main/java/test/su0000755000175000017500000000000011645102474032710 5ustar tonytony././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/main/java/test/surefiretoolchains/App.javasurefire-2.10/surefire-integration-tests/src/test/resources/SurefireToolchains/src/main/java/test/su0000644000175000017500000000023511562307755032721 0ustar tonytonypackage test.surefiretoolchains; public final class App { public static void main(String[] args) { System.out.println("Hello World!"); } } surefire-2.10/surefire-integration-tests/src/test/resources/webapp/0000755000175000017500000000000011645102474024373 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/webapp/pom.xml0000644000175000017500000000643311226423503025710 0ustar tonytony 4.0.0 org.apache.surefire.its webapp war 1.0-SNAPSHOT sample webapp with Jetty test webapp org.apache.maven.plugins maven-surefire-plugin ${surefire.version} org.apache.maven.plugins maven-war-plugin 2.0 generate-test-resources exploded ${project.build.directory}/webapp junit junit 3.8.1 test jetty org.mortbay.jetty 5.1.10 test javax.servlet servlet-api 2.4 test jetty jasper-compiler 5.1.10 test jetty jasper-runtime 5.1.10 commons-beanutils commons-beanutils 1.7.0 test javax.servlet jsp-api 2.0 ant ant 1.6.5 commons-el commons-el 1.0 default-tools.jar java.vendor Sun Microsystems Inc. com.sun tools system system ${java.home}/../lib/tools.jar surefire-2.10/surefire-integration-tests/src/test/resources/webapp/src/0000755000175000017500000000000011645102474025162 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/webapp/src/test/0000755000175000017500000000000011645102474026141 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/webapp/src/test/java/0000755000175000017500000000000011645102474027062 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/webapp/src/test/java/WebAppTest.java0000644000175000017500000000205711226423503031741 0ustar tonytonyimport java.io.InputStream; import java.net.URL; import junit.framework.TestCase; import org.mortbay.jetty.Server; public class WebAppTest extends TestCase { private Server server = null; public void setUp() throws Exception { System.setProperty("org.mortbay.xml.XmlParser.NotValidating", "true"); server = new Server(); String testPort = ":18080"; server.addListener(testPort); server.addWebApplication("127.0.0.1", "/webapp", "target/webapp"); server.start(); } public void testBlah() throws Exception { URL url = new URL("http://127.0.0.1:18080/webapp/index.jsp"); InputStream stream = url.openStream(); StringBuffer sb = new StringBuffer(); for (int i = stream.read(); i != -1; i = stream.read()) { sb.append((char)i); } String value = sb.toString(); assertTrue(value, value.contains("Hello")); } public void tearDown() throws Exception { if (server != null) server.stop(); } } surefire-2.10/surefire-integration-tests/src/test/resources/webapp/src/main/0000755000175000017500000000000011645102474026106 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/webapp/src/main/webapp/0000755000175000017500000000000011645102474027364 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/webapp/src/main/webapp/WEB-INF/0000755000175000017500000000000011645102474030413 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/webapp/src/main/webapp/WEB-INF/web.xml0000644000175000017500000000032711226423503031706 0ustar tonytony Archetype Created Web Application surefire-2.10/surefire-integration-tests/src/test/resources/webapp/src/main/webapp/index.jsp0000644000175000017500000000006410773035676031223 0ustar tonytony

Hello World!

surefire-2.10/surefire-integration-tests/src/test/resources/webapp/src/main/resources/0000755000175000017500000000000011645102474030120 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/consoleoutput-noisy/0000755000175000017500000000000011645102474027177 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/consoleoutput-noisy/pom.xml0000644000175000017500000000442611543316163030521 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire fork-consoleOutput jar 1.0-SNAPSHOT consoleOutput-noisy http://maven.apache.org junit junit ${junit.version} org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} ${forkMode} ${printSummary} ${useFile} ${parallel} ${threadCount} ${reportFormat} ${redirect.to.file} ${trimStackTrace} **/Test*.java true 4.8.1 true once true brief true 4 surefire-2.10/surefire-integration-tests/src/test/resources/consoleoutput-noisy/src/0000755000175000017500000000000011645102474027766 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/consoleoutput-noisy/src/test/0000755000175000017500000000000011645102474030745 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/consoleoutput-noisy/src/test/java/0000755000175000017500000000000011645102474031666 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/consoleoutput-noisy/src/test/java/consoleoutput_noisy/surefire-2.10/surefire-integration-tests/src/test/resources/consoleoutput-noisy/src/test/java/consol0000755000175000017500000000000011645102474033104 5ustar tonytony././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/consoleoutput-noisy/src/test/java/consoleoutput_noisy/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/consoleoutput-noisy/src/test/java/consol0000644000175000017500000000340311543316163033105 0ustar tonytonypackage consoleoutput_noisy; /* * 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. */ import junit.framework.TestCase; import org.junit.AfterClass; import org.junit.BeforeClass; public class Test2 extends TestCase { public void test2MillionBytes() { for ( int i = 0; i < 10000; i++ ) { System.out.println( "0-2-3-6-8-012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" ); } } public static void testHundredThousand() { for ( int i = 0; i < 1000; i++ ) { System.out.println( "A-A-3-A-A-BBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFFFFFFFFFGGGGGGGGGGHHHHHHHHHHIIIIIIIIIIJJJJJJJJJJ" ); } } public static void testAnotherHundredThousand() { for ( int i = 0; i < 1000; i++ ) { System.out.println( "A-A-A-3-3-ABBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFFFFFFFFFGGGGGGGGGGHHHHHHHHHHIIIIIIIIIIJJJJJJJJJJ" ); } } } ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/consoleoutput-noisy/src/test/java/consoleoutput_noisy/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/consoleoutput-noisy/src/test/java/consol0000644000175000017500000000340311543316163033105 0ustar tonytonypackage consoleoutput_noisy; /* * 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. */ import junit.framework.TestCase; import org.junit.AfterClass; import org.junit.BeforeClass; public class Test1 extends TestCase { public void test1MillionBytes() { for ( int i = 0; i < 10000; i++ ) { System.out.println( "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" ); } } public static void testHundredThousand() { for ( int i = 0; i < 1000; i++ ) { System.out.println( "AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFFFFFFFFFGGGGGGGGGGHHHHHHHHHHIIIIIIIIIIJJJJJJJJJJ" ); } } public static void testAnotherHundredThousand() { for ( int i = 0; i < 1000; i++ ) { System.out.println( "AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFFFFFFFFFGGGGGGGGGGHHHHHHHHHHIIIIIIIIIIJJJJJJJJJJ" ); } } } surefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/0000755000175000017500000000000011645102474030563 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/pom.xml0000644000175000017500000000247111247033472032103 0ustar tonytony 4.0.0 org.apache.maven.surefire.test junit4-forkAlways-staticInit 1.0-SNAPSHOT JUnit4 ForkAlways StaticInit Pollution Test that static initializers on classes other than the one being executed in the current test-set will not be run, and cannot pollute the environment. junit junit 4.5 test maven-surefire-plugin ${surefire.version} always maven-compiler-plugin 2.0.2 1.5 1.5 surefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/0000755000175000017500000000000011645102474031352 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/0000755000175000017500000000000011645102474032331 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/ja0000755000175000017500000000000011645102474032644 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/java/junit4/surefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/ja0000755000175000017500000000000011645102474032644 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/java/junit4/App2Test.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/ja0000644000175000017500000000125211247033472032645 0ustar tonytonypackage junit4; import java.util.Properties; import junit.framework.TestCase; /** * Unit test for simple App. */ public class App2Test extends TestCase { static { System.out.println( "Loading " + App2Test.class.getName() ); Properties p = System.getProperties(); p.setProperty( "Foo", "Bar2" ); System.setProperties( p ); } /** * Rigourous Test :-) */ public void testApp() { System.out.println( "Expecting: Bar2\nGot: " + System.getProperty( "Foo" ) ); assertEquals( "Expecting: Bar2\nGot: " + System.getProperty( "Foo" ), "Bar2", System.getProperty( "Foo" ) ); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/java/junit4/AppTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/ja0000644000175000017500000000124411247033472032646 0ustar tonytonypackage junit4; import java.util.Properties; import junit.framework.TestCase; /** * Unit test for simple App. */ public class AppTest extends TestCase { static { System.out.println( "Loading " + AppTest.class.getName() ); Properties p = System.getProperties(); p.setProperty( "Foo", "Bar" ); System.setProperties( p ); } /** * Rigourous Test :-) */ public void testApp() { System.out.println( "Expecting: Bar\nGot: " + System.getProperty( "Foo" ) ); assertEquals( "Expecting: Bar\nGot: " + System.getProperty( "Foo" ), "Bar", System.getProperty( "Foo" ) ); } } ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/java/org/surefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/ja0000755000175000017500000000000011645102474032644 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/java/org/apache/surefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/ja0000755000175000017500000000000011645102474032644 5ustar tonytony././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/java/org/apache/maven/surefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/ja0000755000175000017500000000000011645102474032644 5ustar tonytony././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/java/org/apache/maven/surefire/surefire-2.10/surefire-integration-tests/src/test/resources/junit4-forkAlways-staticInit/src/test/ja0000755000175000017500000000000011645102474032644 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/0000755000175000017500000000000011645102474026664 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child2/0000755000175000017500000000000011645102474030031 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child2/pom.xml0000644000175000017500000000326310766555661031367 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire.its.sibling-aggregator child2 1.0-SNAPSHOT Test for aggregated child2 org.apache.maven.plugins.surefire.its.sibling-aggregator child1 1.0-SNAPSHOT junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child2/src/0000755000175000017500000000000011645102474030620 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child2/src/test/0000755000175000017500000000000011645102474031577 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child2/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child2/src/test/java/0000755000175000017500000000000011645102474032520 5ustar tonytony././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child2/src/test/java/siblingAggregator/surefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child2/src/test/java/0000755000175000017500000000000011645102474032520 5ustar tonytony././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child2/src/test/java/siblingAggregator/FooHolderTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child2/src/test/java/0000644000175000017500000000023610766555661032540 0ustar tonytonypackage siblingAggregator; public class FooHolderTest extends junit.framework.TestCase { public void testFoo() { FooHolder.getFoo(); } }surefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/aggregator/0000755000175000017500000000000011645102474031006 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/aggregator/pom.xml0000644000175000017500000000317211051504420032312 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire.its.sibling-aggregator aggregator 1.0-SNAPSHOT Test for aggregator whose modules are in ../child pom ../child1 ../child2 maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child1/0000755000175000017500000000000011645102474030030 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child1/pom.xml0000644000175000017500000000276210766555661031371 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire.its.sibling-aggregator child1 1.0-SNAPSHOT Test for aggregated child1 junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child1/src/0000755000175000017500000000000011645102474030617 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child1/src/main/0000755000175000017500000000000011645102474031543 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child1/src/main/java/surefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child1/src/main/java/0000755000175000017500000000000011645102474032464 5ustar tonytony././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child1/src/main/java/siblingAggregator/surefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child1/src/main/java/0000755000175000017500000000000011645102474032464 5ustar tonytony././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child1/src/main/java/siblingAggregator/FooHolder.javasurefire-2.10/surefire-integration-tests/src/test/resources/sibling-aggregator/child1/src/main/java/0000644000175000017500000000015210766555661032501 0ustar tonytonypackage siblingAggregator; public class FooHolder { public static String getFoo() { return "foo"; } }surefire-2.10/surefire-integration-tests/src/test/resources/testng-simple/0000755000175000017500000000000011645102474025710 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-simple/pom.xml0000644000175000017500000000627411453070261027231 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-simple 1.0-SNAPSHOT TestNG simple test testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} junit junit testng-new !testNgClassifier org.testng testng ${testNgVersion} junit junit 5.7 org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/testng-simple/src/0000755000175000017500000000000011645102474026477 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-simple/src/test/0000755000175000017500000000000011645102474027456 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-simple/src/test/java/0000755000175000017500000000000011645102474030377 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-simple/src/test/java/testng/0000755000175000017500000000000011645102474031703 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-simple/src/test/java/testng/simple/surefire-2.10/surefire-integration-tests/src/test/resources/testng-simple/src/test/java/testng/simpl0000755000175000017500000000000011645102474032750 5ustar tonytony././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-simple/src/test/java/testng/simple/TestNGSuiteTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-simple/src/test/java/testng/simpl0000644000175000017500000000021010766555661032760 0ustar tonytonypackage testng.simple; import org.testng.annotations.Test; public class TestNGSuiteTest { @Test public void doNothing() { } }surefire-2.10/surefire-integration-tests/src/test/resources/junit44-hamcrest/0000755000175000017500000000000011645102474026222 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-hamcrest/pom.xml0000644000175000017500000000365611051504420027535 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit44-hamcrest 1.0-SNAPSHOT Test for JUnit44 with Hamcrest extensions junit junit 4.4 test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/junit44-hamcrest/src/0000755000175000017500000000000011645102474027011 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-hamcrest/src/test/0000755000175000017500000000000011645102474027770 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-hamcrest/src/test/java/0000755000175000017500000000000011645102474030711 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-hamcrest/src/test/java/junit44/0000755000175000017500000000000011645102474032212 5ustar tonytony././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit44-hamcrest/src/test/java/junit44/hamcrest/surefire-2.10/surefire-integration-tests/src/test/resources/junit44-hamcrest/src/test/java/junit44/h0000755000175000017500000000000011645102474032362 5ustar tonytony././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit44-hamcrest/src/test/java/junit44/hamcrest/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit44-hamcrest/src/test/java/junit44/h0000644000175000017500000000164110766555661032403 0ustar tonytonypackage junit44.hamcrest; import org.hamcrest.core.Is; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @Before public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @After public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( "setUp was not called", setUpCalled ); Assert.assertThat( true, Is.is( true ) ); } @AfterClass public static void oneTimeTearDown() { Assert.assertTrue( "tearDown was not called", tearDownCalled ); } } surefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/0000755000175000017500000000000011645102474025527 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/pom.xml0000644000175000017500000000423711573227313027052 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit-ignore 1.0-SNAPSHOT Test of @Ignore annotation 4.4 junit junit ${junit.version} test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 maven-surefire-plugin ${surefire.version} ${surefire.parallel} 3 surefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/src/0000755000175000017500000000000011645102474026316 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/src/test/0000755000175000017500000000000011645102474027275 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/0000755000175000017500000000000011645102474030216 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/0000755000175000017500000000000011645102474031347 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/surefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/0000755000175000017500000000000011645102474032632 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/0000644000175000017500000000044411573227313032636 0ustar tonytonypackage junit.ignore; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; @Ignore("ignore this test") public class BasicTest { @Ignore("ignore this test") @Test public void testIgnorable() { Assert.fail("you should have ignored me!"); } } ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore2Test.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/0000644000175000017500000000042111573227313032631 0ustar tonytonypackage junit.ignore; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; @Ignore("ignore this test") public class ClassLevelIgnore2Test { @Test public void testIgnorable() { Assert.fail("you should have ignored me!"); } } ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/ClassLevelIgnore1Test.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-ignore/src/test/java/junit/ignore/0000644000175000017500000000042111573227313032631 0ustar tonytonypackage junit.ignore; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; @Ignore("ignore this test") public class ClassLevelIgnore1Test { @Test public void testIgnorable() { Assert.fail("you should have ignored me!"); } } surefire-2.10/surefire-integration-tests/src/test/resources/working-directory/0000755000175000017500000000000011645102474026577 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/working-directory/pom.xml0000644000175000017500000000317711051504420030110 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire working-directory 1.0-SNAPSHOT Test for working directory configuration (parent) pom child org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/working-directory/child/0000755000175000017500000000000011645102474027662 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/working-directory/child/pom.xml0000644000175000017500000000277410766555661031226 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire working-directory-child 1.0-SNAPSHOT Test for working directory configuration junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/working-directory/child/src/0000755000175000017500000000000011645102474030451 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/working-directory/child/src/test/0000755000175000017500000000000011645102474031430 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/working-directory/child/src/test/java/0000755000175000017500000000000011645102474032351 5ustar tonytony././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/working-directory/child/src/test/java/workingDir/surefire-2.10/surefire-integration-tests/src/test/resources/working-directory/child/src/test/java/wo0000755000175000017500000000000011645102474032717 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/working-directory/child/src/test/java/workingDir/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/working-directory/child/src/test/java/wo0000644000175000017500000000112610766555661032736 0ustar tonytonypackage workingDir; import junit.framework.TestCase; import java.io.*; import java.util.Properties; public class BasicTest extends TestCase { public void testWorkingDir() throws Exception { File target = new File( "target" ).getAbsoluteFile(); File outFile = new File( target, "out.txt" ); FileOutputStream os = new FileOutputStream(outFile); String userDir = System.getProperty("user.dir"); Properties p = new Properties(); p.setProperty( "user.dir", userDir ); p.store( os, "" ); os.flush(); os.close(); } } surefire-2.10/surefire-integration-tests/src/test/resources/plain-old-java-classpath/0000755000175000017500000000000011645102474027673 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/plain-old-java-classpath/pom.xml0000644000175000017500000000351311226423503031204 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire plain-old-java-classpath 1.0-SNAPSHOT Test for useManifestOnlyJar=false org.apache.maven.plugins maven-surefire-plugin ${surefire.version} false junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/plain-old-java-classpath/src/0000755000175000017500000000000011645102474030462 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/plain-old-java-classpath/src/test/0000755000175000017500000000000011645102474031441 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/plain-old-java-classpath/src/test/java/0000755000175000017500000000000011645102474032362 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/plain-old-java-classpath/src/test/java/plainOldJavaClasspath/surefire-2.10/surefire-integration-tests/src/test/resources/plain-old-java-classpath/src/test/java/p0000755000175000017500000000000011645102474032542 5ustar tonytony././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/plain-old-java-classpath/src/test/java/plainOldJavaClasspath/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/plain-old-java-classpath/src/test/java/p0000644000175000017500000000255511557340256032557 0ustar tonytonypackage plainOldJavaClasspath; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { private boolean setUpCalled = false; private static boolean tearDownCalled = false; public BasicTest( String name, String extraName ) { super( name ); } public static Test suite() { System.out.println("suite"); TestSuite suite = new TestSuite(); Test test = new BasicTest( "testSetUp", "dummy" ); suite.addTest( test ); return new TestSetup( suite ) { protected void setUp() { //oneTimeSetUp(); } protected void tearDown() { oneTimeTearDown(); } }; } protected void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } protected void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } public void testSetUp() { assertTrue( "setUp was not called", setUpCalled ); } public static void oneTimeTearDown() { assertTrue( "tearDown was not called", tearDownCalled ); } } surefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/0000755000175000017500000000000011645102474027546 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/pom.xml0000644000175000017500000000531711452560655031076 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-path-with-spaces 1.0-SNAPSHOT TestNG test in a path with spaces testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} 5.7 jdk15 org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/0000755000175000017500000000000011645102474030335 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/test/0000755000175000017500000000000011645102474031314 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/test/java/0000755000175000017500000000000011645102474032235 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/test/java/testng/surefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/test/java/te0000755000175000017500000000000011645102474032566 5ustar tonytony././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/test/java/testng/pathWithSpaces/surefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/test/java/te0000755000175000017500000000000011645102474032566 5ustar tonytony././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/test/java/testng/pathWithSpaces/TestNGSuiteTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/test/java/te0000644000175000017500000000045710766555661032613 0ustar tonytonypackage testng.pathWithSpaces; import java.io.File; import java.net.URISyntaxException; import org.testng.annotations.Test; public class TestNGSuiteTest { @Test public void loadTestResourceWithSpaces() throws URISyntaxException { new File( getClass().getResource( "/test.txt" ).toURI() ); } }././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/test/resources/surefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/test/resourc0000755000175000017500000000000011645102474032717 5ustar tonytony././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/test/resources/test.txtsurefire-2.10/surefire-integration-tests/src/test/resources/testng-path with spaces/src/test/resourc0000644000175000017500000000001410766555661032731 0ustar tonytonyHello world!surefire-2.10/surefire-integration-tests/src/test/resources/large-test-results/0000755000175000017500000000000011645102474026663 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/large-test-results/pom.xml0000644000175000017500000000360611051504420030171 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire large-test-results 1.0-SNAPSHOT Test for large test results maven-surefire-plugin ${surefire.version} numTests${numTests} -Xmx1024m junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/large-test-results/src/0000755000175000017500000000000011645102474027452 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/large-test-results/src/test/0000755000175000017500000000000011645102474030431 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/large-test-results/src/test/java/0000755000175000017500000000000011645102474031352 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/large-test-results/src/test/java/largeTestResults/surefire-2.10/surefire-integration-tests/src/test/resources/large-test-results/src/test/java/largeTe0000755000175000017500000000000011645102474032656 5ustar tonytony././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/large-test-results/src/test/java/largeTestResults/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/large-test-results/src/test/java/largeTe0000644000175000017500000000160611557340256032667 0ustar tonytonypackage largeTestResults; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { private final int number; public BasicTest( String name , int number) { super( name ); this.number = number; } public static Test suite() { int tests = Integer.parseInt(System.getProperty("numTests", "20")); TestSuite suite = new TestSuite(); for (int i = 0; i < tests; i++) { if ( i % 4 == 0) { suite.addTest( new BasicTest( "testPass", i ) ); } else { suite.addTest( new BasicTest( "testFail", i ) ); } } return suite; } public void testFail() { fail( "failure " + number ); } public void testPass() {} } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/0000755000175000017500000000000011645102474031733 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/pom.0000644000175000017500000000420111515322635032523 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire surefire-685-commaseparatedIncludes 1.0-SNAPSHOT surefire-685-commaseparatedIncludes junit junit 4.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} once **/TestA.java,**/TestB.java ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/0000755000175000017500000000000011645102474032522 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/0000755000175000017500000000000011645102474032522 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/0000755000175000017500000000000011645102474032522 5ustar tonytony././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/test/java/surefire685/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/0000755000175000017500000000000011645102474032522 5ustar tonytony././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/test/java/surefire685/TestC.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/0000644000175000017500000000020611515322635032521 0ustar tonytonypackage surefire685; import junit.framework.TestCase; public class TestC extends TestCase { public void testTwo() { } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/test/java/surefire685/TestA.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/0000644000175000017500000000020611515322635032521 0ustar tonytonypackage surefire685; import junit.framework.TestCase; public class TestA extends TestCase { public void testTwo() { } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/test/java/surefire685/TestB.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-685-commaseparatedIncludes/src/0000644000175000017500000000020611515322635032521 0ustar tonytonypackage surefire685; import junit.framework.TestCase; public class TestB extends TestCase { public void testTwo() { } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/0000755000175000017500000000000011645102474031665 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/pom.0000644000175000017500000000320011504161103032440 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire buildFailingWhenErrors jar 1.0-SNAPSHOT buildFailingWhenErrors http://maven.apache.org junit junit ${junit.version} org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} ${forkMode} **/Test*.java **/MySuiteTest1.java **/MySuiteTest2.java **/MySuiteTest3.java 4.8.1 once ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/src/0000755000175000017500000000000011645102474032454 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/src/0000755000175000017500000000000011645102474032454 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/src/0000755000175000017500000000000011645102474032454 5ustar tonytony././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/src/test/java/resultcounting/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/src/0000755000175000017500000000000011645102474032454 5ustar tonytony././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/src/test/java/resultcounting/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-674-buildFailingWhenErrors/src/0000644000175000017500000000037211504161103032444 0ustar tonytonypackage resultcounting; import org.junit.Test; /** * A test that causes an error * @author Kristian Rosenvold */ public class Test2 { @Test public void testWithException1() { throw new RuntimeException("We expect this"); } }surefire-2.10/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/0000755000175000017500000000000011645102474031520 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/pom.x0000644000175000017500000000352511051504420032475 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire wellFormedXmlFailures 1.0-SNAPSHOT Test for MSUREFIRE-54 (well-formed XML failures) junit junit 3.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} true surefire-2.10/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/0000755000175000017500000000000011645102474032307 5ustar tonytony././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/t0000755000175000017500000000000011645102474032473 5ustar tonytony././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/t0000755000175000017500000000000011645102474032473 5ustar tonytony././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/test/java/wellFormedXmlFailures/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/t0000755000175000017500000000000011645102474032473 5ustar tonytony././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/test/java/wellFormedXmlFailures/TestSurefire3.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/t0000644000175000017500000000114110766555661032507 0ustar tonytonypackage wellFormedXmlFailures; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestSurefire3 extends TestCase { public TestSurefire3( ) { super( ); } public TestSurefire3( String name ) { super( name ); } public void testQuote() { fail( "\"" ); } public void testLower() { fail( "<" ); } public void testGreater() { fail( ">" ); } public void testU0000() { fail( "\u0000" ); } } surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/0000755000175000017500000000000011645102474032665 5ustar tonytony././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/p0000644000175000017500000000326711051504420033043 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire default-configuration-classWithNoTests 1.0-SNAPSHOT Test for class with no tests junit junit 3.8.1 test maven-surefire-plugin ${surefire.version} ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/src/surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/s0000755000175000017500000000000011645102474033050 5ustar tonytony././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/s0000755000175000017500000000000011645102474033050 5ustar tonytony././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/s0000755000175000017500000000000011645102474033050 5ustar tonytony././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/src/test/java/classWithNoTests/surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/s0000755000175000017500000000000011645102474033050 5ustar tonytony././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/src/test/java/classWithNoTests/NoMethodsTestCase.javasurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-classWithNoTests/s0000644000175000017500000000007410766555661033070 0ustar tonytonypackage classWithNoTests; public class NoMethodsTestCase {}surefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern/0000755000175000017500000000000011645102474027352 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern/pom.xml0000644000175000017500000000544311531766477030712 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4 1.0-SNAPSHOT Test for Testng 5.7 jdk15 testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} BasicTest#testSuccess* surefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern/src/0000755000175000017500000000000011645102474030141 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern/src/test/0000755000175000017500000000000011645102474031120 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern/src/test/java/0000755000175000017500000000000011645102474032041 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern/src/test/java/testng/surefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern/src/test/java/test0000755000175000017500000000000011645102474032741 5ustar tonytony././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern/src/test/java/testng/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-method-pattern/src/test/java/test0000644000175000017500000000160111531766477032756 0ustar tonytonypackage testng; import org.testng.annotations.*; import org.testng.Assert; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @BeforeTest public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @AfterTest public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( setUpCalled ); } @Test public void testSuccessOne() { Assert.assertTrue( true ); } @Test public void testSuccessTwo() { Assert.assertTrue( true ); } @AfterClass public static void oneTimeTearDown() { } } surefire-2.10/surefire-integration-tests/src/test/resources/testng-jdk14/0000755000175000017500000000000011645102474025334 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-jdk14/pom.xml0000644000175000017500000000406311051504420026640 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-jdk14 1.0-SNAPSHOT Test for testng jdk14 integration junit junit 3.8.1 test org.testng testng 5.7 jdk14 test src/test/java org.apache.maven.plugins maven-surefire-plugin ${surefire.version} functional surefire-2.10/surefire-integration-tests/src/test/resources/testng-jdk14/src/0000755000175000017500000000000011645102474026123 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-jdk14/src/test/0000755000175000017500000000000011645102474027102 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-jdk14/src/test/java/0000755000175000017500000000000011645102474030023 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-jdk14/src/test/java/testng/0000755000175000017500000000000011645102474031327 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-jdk14/src/test/java/testng/jdk14/surefire-2.10/surefire-integration-tests/src/test/resources/testng-jdk14/src/test/java/testng/jdk14/0000755000175000017500000000000011645102474032244 5ustar tonytony././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-jdk14/src/test/java/testng/jdk14/TestNGJavadocTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-jdk14/src/test/java/testng/jdk14/0000644000175000017500000000152110766555661032262 0ustar tonytonypackage testng.jdk14; import org.testng.Assert; /** * Tests that forcing testng to run tests via the * "${maven.test.forcetestng}" configuration option * works. * * @author jkuhnert */ public class TestNGJavadocTest { /** * Sets up testObject * @testng.configuration beforeTestClass = "true" * groups = "functional" */ public void configureTest() { testObject = new Object(); } Object testObject; /** * Tests reporting an error * @testng.test groups = "functional, notincluded" */ public void isTestObjectNull() { Assert.assertNotNull(testObject, "testObject is null"); } /** * Sample method that shouldn't be run by test suite. * @testng.test groups = "notincluded" */ public void shouldNotRun() { Assert.assertTrue(false, "Group specified by test shouldnt be run."); } }surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration/0000755000175000017500000000000011645102474027406 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration/pom.xml0000644000175000017500000000325011051504420030707 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire default-configuration 1.0-SNAPSHOT Test for default configuration junit junit 3.8.1 test maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration/src/0000755000175000017500000000000011645102474030175 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration/src/test/0000755000175000017500000000000011645102474031154 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration/src/test/java/0000755000175000017500000000000011645102474032075 5ustar tonytony././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration/src/test/java/defaultConfiguration/surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration/src/test/java/defa0000755000175000017500000000000011645102474032715 5ustar tonytony././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration/src/test/java/defaultConfiguration/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration/src/test/java/defa0000644000175000017500000000255411557340256032731 0ustar tonytonypackage defaultConfiguration; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { private boolean setUpCalled = false; private static boolean tearDownCalled = false; public BasicTest( String name, String extraName ) { super( name ); } public static Test suite() { System.out.println("suite"); TestSuite suite = new TestSuite(); Test test = new BasicTest( "testSetUp", "dummy" ); suite.addTest( test ); return new TestSetup( suite ) { protected void setUp() { //oneTimeSetUp(); } protected void tearDown() { oneTimeTearDown(); } }; } protected void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } protected void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } public void testSetUp() { assertTrue( "setUp was not called", setUpCalled ); } public static void oneTimeTearDown() { assertTrue( "tearDown was not called", tearDownCalled ); } } surefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/0000755000175000017500000000000011645102474027523 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/pom.xml0000644000175000017500000000351011051504420031023 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit-twoTestCaseSuite 1.0-SNAPSHOT Test for single suite with two test cases maven-surefire-plugin ${surefire.version} **/WrapperTestSuite.java junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/0000755000175000017500000000000011645102474030312 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/0000755000175000017500000000000011645102474031271 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/0000755000175000017500000000000011645102474032212 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/junit/surefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/jun0000755000175000017500000000000011645102474032727 5ustar tonytony././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/junit/twoTestCaseSuite/surefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/jun0000755000175000017500000000000011645102474032727 5ustar tonytony././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/junit/twoTestCaseSuite/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/jun0000644000175000017500000000251011557340256032733 0ustar tonytonypackage junit.twoTestCaseSuite; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { private boolean setUpCalled = false; private static boolean tearDownCalled = false; public BasicTest( String name, String extraName ) { super( name ); } public static Test suite() { TestSuite suite = new TestSuite(); Test test = new BasicTest( "testSetUp", "dummy" ); suite.addTest( test ); return new TestSetup( suite ) { protected void setUp() { //oneTimeSetUp(); } protected void tearDown() { oneTimeTearDown(); } }; } protected void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } protected void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } public void testSetUp() { assertTrue( "setUp was not called", setUpCalled ); } public static void oneTimeTearDown() { assertTrue( "tearDown was not called", tearDownCalled ); } } ././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/junit/twoTestCaseSuite/WrapperTestSuite.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/jun0000644000175000017500000000072310766555661032750 0ustar tonytonypackage junit.twoTestCaseSuite; import junit.framework.Test; import junit.framework.TestSuite; public class WrapperTestSuite extends TestSuite { public WrapperTestSuite( String name ) { super( name ); } public static Test suite() { WrapperTestSuite suite = new WrapperTestSuite( "My Acceptance Test Suite" ); suite.addTestSuite( TestTwo.class ); suite.addTest( BasicTest.suite() ); return suite; } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/junit/twoTestCaseSuite/TestTwo.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/jun0000644000175000017500000000021610766555661032745 0ustar tonytonypackage junit.twoTestCaseSuite; import junit.framework.TestCase; public class TestTwo extends TestCase { public void testTwo() {} } ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/junit/twoTestCases/surefire-2.10/surefire-integration-tests/src/test/resources/junit-twoTestCaseSuite/src/test/java/jun0000755000175000017500000000000011645102474032727 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit48-method-pattern/0000755000175000017500000000000011645102474027353 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit48-method-pattern/pom.xml0000644000175000017500000000415711531766477030714 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4 1.0-SNAPSHOT Test for JUnit 4.8.1 4.8.1 junit junit ${junitVersion} test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} BasicTest#testSuccess* surefire-2.10/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/0000755000175000017500000000000011645102474030142 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/0000755000175000017500000000000011645102474031121 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/0000755000175000017500000000000011645102474032042 5ustar tonytony././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/junit4/surefire-2.10/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/jun0000755000175000017500000000000011645102474032557 5ustar tonytony././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/junit4/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit48-method-pattern/src/test/java/jun0000644000175000017500000000172511531766477032603 0ustar tonytonypackage junit4; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @Before public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @After public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( "setUp was not called", setUpCalled ); } @Test public void testSuccessOne() { Assert.assertTrue( true ); } @Test public void testSuccessTwo() { Assert.assertTrue( true ); } @AfterClass public static void oneTimeTearDown() { } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/0000755000175000017500000000000011645102474031660 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/pom.0000644000175000017500000000403511516041144032447 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire surefire-260-testsWithIdenticalNames 1.0-SNAPSHOT surefire-260-testsWithIdenticalNames junit junit 4.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} org.apache.maven.plugins maven-surefire-report-plugin ${surefire.version} ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/0000755000175000017500000000000011645102474032447 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/0000755000175000017500000000000011645102474032447 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/0000755000175000017500000000000011645102474032447 5ustar tonytony././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/test/java/surefire260/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/0000755000175000017500000000000011645102474032447 5ustar tonytony././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/test/java/surefire260/TestC.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/0000644000175000017500000000025411516041144032443 0ustar tonytonypackage surefire260; import junit.framework.TestCase; public class TestC extends TestCase { public void testDup() { fail("This is what we want"); } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/test/java/surefire260/TestA.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/0000644000175000017500000000031711516041144032443 0ustar tonytonypackage surefire260; import junit.framework.TestCase; public class TestA extends TestCase { public void testOne() { } public void testDup() { fail("This is what we want"); } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/test/java/surefire260/TestB.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-260-testWithIdenticalNames/src/0000644000175000017500000000025411516041144032443 0ustar tonytonypackage surefire260; import junit.framework.TestCase; public class TestB extends TestCase { public void testDup() { fail("This is what we want"); } } surefire-2.10/surefire-integration-tests/src/test/resources/testng-junit-together/0000755000175000017500000000000011645102474027367 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-junit-together/pom.xml0000644000175000017500000000560111452560655030713 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-junit-together 1.0-SNAPSHOT TestNG and Junit Together testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} 5.7 jdk15 junit junit 3.8.1 test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/testng-junit-together/src/0000755000175000017500000000000011645102474030156 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-junit-together/src/test/0000755000175000017500000000000011645102474031135 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-junit-together/src/test/java/0000755000175000017500000000000011645102474032056 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-junit-together/src/test/java/JunitTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-junit-together/src/test/java/Juni0000644000175000017500000000065710766555661032733 0ustar tonytonyimport junit.framework.TestCase; /** * Provided to ensure both junit and testng tests can run together. * * @author jkuhnert */ public class JunitTest extends TestCase { Object testObject; /** * Creats an object instance */ public void setUp() { testObject = new Object(); } /** * Tests that object created in setup * isn't null. */ public void testJunitObject() { assertNotNull(testObject); } } ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-junit-together/src/test/java/TestNGJunitTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-junit-together/src/test/java/Test0000644000175000017500000000065310766555661032741 0ustar tonytonyimport org.testng.annotations.BeforeClass; import org.testng.annotations.Test; /** * Simple test * * @author jkuhnert */ public class TestNGJunitTest { /** * Sets up testObject */ @BeforeClass public void configureTest() { testObject = new Object(); } Object testObject; /** * Tests reporting an error */ @Test public void testNGTest() { assert testObject != null : "testObject is null"; } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-510-testClassPath/0000755000175000017500000000000011645102474030024 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-510-testClassPath/pom.xml0000644000175000017500000000370611510162741031341 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire Surefire-510-systemprops 1.0-SNAPSHOT Surefire-510-systemprops maven-compiler-plugin 1.5 1.5 maven-surefire-plugin ${surefire.version} ${forkMode} junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/surefire-510-testClassPath/src/0000755000175000017500000000000011645102474030613 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-510-testClassPath/src/test/0000755000175000017500000000000011645102474031572 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-510-testClassPath/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-510-testClassPath/src/test/java0000755000175000017500000000000011645102474032434 5ustar tonytony././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-510-testClassPath/src/test/java/surefire510/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-510-testClassPath/src/test/java0000755000175000017500000000000011645102474032434 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-510-testClassPath/src/test/java/surefire510/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-510-testClassPath/src/test/java0000644000175000017500000000051211510162741032426 0ustar tonytonypackage surefire510; import junit.framework.TestCase; import java.io.IOException; public class Test1 extends TestCase { public void test1() throws IOException { String tcp = System.getProperty( "surefire.test.class.path"); if (tcp != null){ System.out.println( "tcp is set"); } } } surefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/0000755000175000017500000000000011645102474027607 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/pom.xml0000644000175000017500000000431011051504420031106 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4-twoTestCaseSuite 1.0-SNAPSHOT Test for JUnit 4 suite with two test cases 4.4 junit junit ${junitVersion} test org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} **/Junit4TestSuite.java surefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/src/0000755000175000017500000000000011645102474030376 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/src/test/0000755000175000017500000000000011645102474031355 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/src/test/java/0000755000175000017500000000000011645102474032276 5ustar tonytony././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/src/test/java/twoTestCaseSuite/surefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/src/test/java/tw0000755000175000017500000000000011645102474032651 5ustar tonytony././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/src/test/java/twoTestCaseSuite/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/src/test/java/tw0000644000175000017500000000142710766555661032674 0ustar tonytonypackage twoTestCaseSuite; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class BasicTest { private boolean setUpCalled = false; private static boolean tearDownCalled = false; @Before public void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } @After public void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } @Test public void testSetUp() { Assert.assertTrue( "setUp was not called", setUpCalled ); } @AfterClass public static void oneTimeTearDown() { } } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/src/test/java/twoTestCaseSuite/Junit4TestTwo.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/src/test/java/tw0000644000175000017500000000017010766555661032666 0ustar tonytonypackage twoTestCaseSuite; import org.junit.Test; public class Junit4TestTwo { @Test public void secondTest() {} } ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/src/test/java/twoTestCaseSuite/Junit4TestSuite.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit4-twoTestCaseSuite/src/test/java/tw0000644000175000017500000000033710766555661032673 0ustar tonytonypackage twoTestCaseSuite; import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ BasicTest.class, Junit4TestTwo.class }) public class Junit4TestSuite { } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-673-mockito/0000755000175000017500000000000011645102474026721 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-673-mockito/pom.xml0000644000175000017500000000237611504226165030244 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire MockitoTest surefire-673-mockito 1.0.0-SNAPSHOT org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} junit junit 4.8.2 test org.mockito mockito-core 1.8.5 test surefire-2.10/surefire-integration-tests/src/test/resources/surefire-673-mockito/src/0000755000175000017500000000000011645102474027510 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-673-mockito/src/test/0000755000175000017500000000000011645102474030467 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-673-mockito/src/test/java/0000755000175000017500000000000011645102474031410 5ustar tonytony././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-673-mockito/src/test/java/surefire673/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-673-mockito/src/test/java/suref0000755000175000017500000000000011645102474032455 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-673-mockito/src/test/java/surefire673/TestMockito.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-673-mockito/src/test/java/suref0000644000175000017500000000040611504203336032450 0ustar tonytonypackage surefire673; import org.junit.Test; import org.mockito.Mockito; public class TestMockito { @Test public void canMockPrivateStaticClass() { Mockito.mock(PrivateClass.class); } private static class PrivateClass { } } surefire-2.10/surefire-integration-tests/src/test/resources/testng-group-thread-parallel/0000755000175000017500000000000011645102474030612 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-group-thread-parallel/pom.xml0000644000175000017500000000557011452560655032143 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-group-thread-parallel 1.0-SNAPSHOT TestNG group/parallel thread tests testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} 5.7 jdk15 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} nonexistent, functional 3 methods org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 surefire-2.10/surefire-integration-tests/src/test/resources/testng-group-thread-parallel/src/0000755000175000017500000000000011645102474031401 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-group-thread-parallel/src/test/0000755000175000017500000000000011645102474032360 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-group-thread-parallel/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/testng-group-thread-parallel/src/test/ja0000755000175000017500000000000011645102474032673 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-group-thread-parallel/src/test/java/testng/surefire-2.10/surefire-integration-tests/src/test/resources/testng-group-thread-parallel/src/test/ja0000755000175000017500000000000011645102474032673 5ustar tonytony././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-group-thread-parallel/src/test/java/testng/groupThreadParallel/surefire-2.10/surefire-integration-tests/src/test/resources/testng-group-thread-parallel/src/test/ja0000755000175000017500000000000011645102474032673 5ustar tonytony././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-group-thread-parallel/src/test/java/testng/groupThreadParallel/TestNGTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-group-thread-parallel/src/test/ja0000644000175000017500000000364010766555661032715 0ustar tonytonypackage testng.groupThreadParallel; import org.testng.Assert; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; /** * Tests grouping/threading/parallel functionality of TestNG. * * @author jkuhnert */ public class TestNGTest { static int m_testCount = 0; /** * Sets up testObject */ @BeforeClass(groups = "functional") public void configureTest() { testObject = new Object(); } @AfterSuite(alwaysRun = true, groups = "functional") public void check_Test_Count() { System.out.println("check_Test_Count(): " + m_testCount); Assert.assertTrue( m_testCount == 3, "Expected 3 tests to be run but local count was " + m_testCount ); } Object testObject; @Test(groups = {"functional", "notincluded"}) public void test1() throws InterruptedException { incrementTestCount(); System.out.println("running test"); Assert.assertTrue( testObject != null , "testObject is null" ); waitForTestCountToBeThree(); } private synchronized void incrementTestCount() { m_testCount++; } @Test(groups = {"functional", "notincluded"}) public void test2() throws InterruptedException { test1(); } @Test(groups = {"functional", "notincluded"}) public void test3() throws InterruptedException { test1(); } private void waitForTestCountToBeThree() throws InterruptedException { if ( m_testCount == 3 ) return; long now = System.currentTimeMillis(); long timeout = 5 * 1000; long finish = now + timeout; while ( m_testCount < 3 && System.currentTimeMillis() < finish ) { Thread.sleep( 10 ); } Assert.assertTrue(m_testCount >= 3); } /** * Sample method that shouldn't be run by test suite. */ @Test(groups = "notincluded") public void shouldNotRun() { Assert.fail( "Group specified by test shouldnt be run." ); } }surefire-2.10/surefire-integration-tests/src/test/resources/timeout-forked/0000755000175000017500000000000011645102474026053 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/timeout-forked/pom.xml0000644000175000017500000000351711516370712027375 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire timeout-forked 1.0-SNAPSHOT Timeout forked process maven-surefire-plugin ${surefire.version} ${forkTimeout} plain junit junit 3.8.1 test surefire-2.10/surefire-integration-tests/src/test/resources/timeout-forked/src/0000755000175000017500000000000011645102474026642 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/timeout-forked/src/test/0000755000175000017500000000000011645102474027621 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/timeout-forked/src/test/java/0000755000175000017500000000000011645102474030542 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/timeout-forked/src/test/java/timeoutForked/surefire-2.10/surefire-integration-tests/src/test/resources/timeout-forked/src/test/java/timeoutFork0000755000175000017500000000000011645102474032773 5ustar tonytony././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/timeout-forked/src/test/java/timeoutForked/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/timeout-forked/src/test/java/timeoutFork0000644000175000017500000000060411516370712032774 0ustar tonytonypackage timeoutForked; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class BasicTest extends TestCase { public void testSleep() throws Exception { int sleepLength = Integer.valueOf( System.getProperty( "sleepLength", "10000" )); Thread.sleep(sleepLength); } } surefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-noTests/0000755000175000017500000000000011645102474031043 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/default-configuration-noTests/pom.xml0000644000175000017500000000325411051504420032350 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire default-configuration-noTests 1.0-SNAPSHOT Test for no test directory junit junit 3.8.1 test maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/environment-variables/0000755000175000017500000000000011645102474027427 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/environment-variables/pom.xml0000644000175000017500000000453011625457076030757 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire environment-variables 1.0-SNAPSHOT Test for checking environment variables into forks always false junit junit 4.4 test maven-surefire-plugin ${surefire.version} ${forkMode} ${useSystemClassLoader} foo org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 surefire-2.10/surefire-integration-tests/src/test/resources/environment-variables/src/0000755000175000017500000000000011645102474030216 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/environment-variables/src/test/0000755000175000017500000000000011645102474031175 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/environment-variables/src/test/java/0000755000175000017500000000000011645102474032116 5ustar tonytony././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/environment-variables/src/test/java/environment/surefire-2.10/surefire-integration-tests/src/test/resources/environment-variables/src/test/java/envi0000755000175000017500000000000011645102474033000 5ustar tonytony././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/environment-variables/src/test/java/environment/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/environment-variables/src/test/java/envi0000644000175000017500000000061411625457076033014 0ustar tonytonypackage environment; import org.junit.Assert; import org.junit.Test; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNull.notNullValue; public class BasicTest { @Test public void testEnvVar() { Assert.assertThat( System.getenv( "PATH" ), notNullValue() ); Assert.assertThat( System.getenv( "DUMMY_ENV_VAR" ), is( "foo" ) ); } } surefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/0000755000175000017500000000000011645102474027556 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/pom.xml0000644000175000017500000000420211561573525031077 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire fork-consoleOutput jar 1.0-SNAPSHOT fork-consoleOutput http://maven.apache.org junit junit ${junit.version} org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} org.apache.maven.surefire surefire-junit47 2.7.2 ${forkMode} ${printSummary} true ${redirect.to.file} 2 ${parallel} **/Test*.java 4.8.1 true once true none surefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/src/0000755000175000017500000000000011645102474030345 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/src/test/0000755000175000017500000000000011645102474031324 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/src/test/java/0000755000175000017500000000000011645102474032245 5ustar tonytony././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/src/test/java/junit47ConsoleOutput/surefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/src/test/java/ju0000755000175000017500000000000011645102474032604 5ustar tonytony././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/src/test/java/junit47ConsoleOutput/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/src/test/java/ju0000644000175000017500000000256011561573525032617 0ustar tonytonypackage junit47ConsoleOutput; /* * 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. */ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class Test2 { @Test public void test6281() { System.out.println( "Test2 on" + Thread.currentThread().getName()); } @BeforeClass public static void testWithFailingAssumption2() { System.out.println( "BeforeTest2 on" + Thread.currentThread().getName()); } @AfterClass public static void testWithFailingAssumption3() { System.out.println( "AfterTest2 on" + Thread.currentThread().getName()); } } ././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/src/test/java/junit47ConsoleOutput/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/src/test/java/ju0000644000175000017500000000256011561573525032617 0ustar tonytonypackage junit47ConsoleOutput; /* * 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. */ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class Test1 { @Test public void test6281() { System.out.println( "Test1 on" + Thread.currentThread().getName()); } @BeforeClass public static void testWithFailingAssumption2() { System.out.println( "BeforeTest1 on" + Thread.currentThread().getName()); } @AfterClass public static void testWithFailingAssumption3() { System.out.println( "AfterTest1 on" + Thread.currentThread().getName()); } } ././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/src/test/java/junit47ConsoleOutput/Test3.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit47-redirect-output/src/test/java/ju0000644000175000017500000000164411561577407032624 0ustar tonytonypackage junit47ConsoleOutput; /* * 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. */ import org.junit.Test; public class Test3 { @Test public void test3() { } } surefire-2.10/surefire-integration-tests/src/test/resources/surefire-146-forkPerTestNoSetup/0000755000175000017500000000000011645102474031035 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-146-forkPerTestNoSetup/pom.xml0000644000175000017500000000351711051504420032344 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire forkPerTestNoSetup 1.0-SNAPSHOT Test for SUREFIRE-146 (forkMode=pertest fails to call setUp) junit junit 3.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} pertest surefire-2.10/surefire-integration-tests/src/test/resources/surefire-146-forkPerTestNoSetup/src/0000755000175000017500000000000011645102474031624 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-146-forkPerTestNoSetup/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-146-forkPerTestNoSetup/src/test0000755000175000017500000000000011645102474032524 5ustar tonytony././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-146-forkPerTestNoSetup/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-146-forkPerTestNoSetup/src/test0000755000175000017500000000000011645102474032524 5ustar tonytony././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-146-forkPerTestNoSetup/src/test/java/forkPerTestNoSetup/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-146-forkPerTestNoSetup/src/test0000755000175000017500000000000011645102474032524 5ustar tonytony././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-146-forkPerTestNoSetup/src/test/java/forkPerTestNoSetup/TestSurefire2.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-146-forkPerTestNoSetup/src/test0000644000175000017500000000252111557340256032532 0ustar tonytonypackage forkPerTestNoSetup; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestSurefire2 extends TestCase { private boolean setUpCalled = false; private static boolean tearDownCalled = false; public TestSurefire2( String name, String extraName ) { super( name ); } public static Test suite() { TestSuite suite = new TestSuite(); Test test = new TestSurefire2( "testSetUp", "dummy" ); suite.addTest( test ); return new TestSetup( suite ) { protected void setUp() { //oneTimeSetUp(); } protected void tearDown() { oneTimeTearDown(); } }; } protected void setUp() { setUpCalled = true; tearDownCalled = false; System.out.println( "Called setUp" ); } protected void tearDown() { setUpCalled = false; tearDownCalled = true; System.out.println( "Called tearDown" ); } public void testSetUp() { assertTrue( "setUp was not called", setUpCalled ); } public static void oneTimeTearDown() { assertTrue( "tearDown was not called", tearDownCalled ); } } surefire-2.10/surefire-integration-tests/src/test/resources/testng-execute-error/0000755000175000017500000000000011645102474027210 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-execute-error/pom.xml0000644000175000017500000000550311452560655030535 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-execute-error 1.0-SNAPSHOT Test proper output from forked execution in case of uncatched error during suite run testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} 5.7 jdk15 maven-compiler-plugin 1.5 1.5 maven-surefire-plugin ${surefire.version} once true true surefire-2.10/surefire-integration-tests/src/test/resources/testng-execute-error/src/0000755000175000017500000000000011645102474027777 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-execute-error/src/test/0000755000175000017500000000000011645102474030756 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-execute-error/src/test/java/0000755000175000017500000000000011645102474031677 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-execute-error/src/test/java/it/0000755000175000017500000000000011645102474032313 5ustar tonytony././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-execute-error/src/test/java/it/BasicTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-execute-error/src/test/java/it/Ba0000644000175000017500000000047410766555661032602 0ustar tonytonypackage it; import static org.testng.Assert.*; import org.testng.annotations.*; /* * Intentionally misconfigured (cycle) to cause an error before the suite is actually run. */ @Test(groups = { "test" }, dependsOnGroups = { "test" }) public class BasicTest { public void testTrue() { assertTrue(true); } } surefire-2.10/surefire-integration-tests/src/test/resources/testng-afterSuiteFailure/0000755000175000017500000000000011645102474030042 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-afterSuiteFailure/pom.xml0000644000175000017500000000530211452560655031364 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-afterSuiteFailure 1.0-SNAPSHOT TestNG failure after suite testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} 5.7 jdk15 org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/testng-afterSuiteFailure/src/0000755000175000017500000000000011645102474030631 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-afterSuiteFailure/src/test/0000755000175000017500000000000011645102474031610 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-afterSuiteFailure/src/test/java/0000755000175000017500000000000011645102474032531 5ustar tonytony././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-afterSuiteFailure/src/test/java/testng/surefire-2.10/surefire-integration-tests/src/test/resources/testng-afterSuiteFailure/src/test/java/t0000755000175000017500000000000011645102474032715 5ustar tonytony././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-afterSuiteFailure/src/test/java/testng/afterSuiteFailure/surefire-2.10/surefire-integration-tests/src/test/resources/testng-afterSuiteFailure/src/test/java/t0000755000175000017500000000000011645102474032715 5ustar tonytony././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-afterSuiteFailure/src/test/java/testng/afterSuiteFailure/TestNGSuiteTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-afterSuiteFailure/src/test/java/t0000644000175000017500000000043610766555661032737 0ustar tonytonypackage testng.afterSuiteFailure; import org.testng.Assert; import org.testng.annotations.AfterSuite; import org.testng.annotations.Test; public class TestNGSuiteTest { @Test public void doNothing() { } @AfterSuite public void failAfterSuite() { Assert.fail(); } }surefire-2.10/surefire-integration-tests/src/test/resources/pojo-simple/0000755000175000017500000000000011645102474025353 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/pojo-simple/pom.xml0000644000175000017500000000365311321175113026666 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire pojo-simple 1.0-SNAPSHOT Pojo simple test org.apache.maven.plugins maven-compiler-plugin 1.4 1.4 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} true surefire-2.10/surefire-integration-tests/src/test/resources/pojo-simple/src/0000755000175000017500000000000011645102474026142 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/pojo-simple/src/test/0000755000175000017500000000000011645102474027121 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/pojo-simple/src/test/java/0000755000175000017500000000000011645102474030042 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/pojo-simple/src/test/java/PojoTest.java0000644000175000017500000000170511321175113032446 0ustar tonytony/* * 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. */ public class PojoTest { public void testSuccess() { assert true; } public void testFailure() { assert false; } } surefire-2.10/surefire-integration-tests/src/test/resources/junit44-ignore/0000755000175000017500000000000011645102474025677 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-ignore/src/0000755000175000017500000000000011645102474026466 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/0000755000175000017500000000000011645102474027445 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/0000755000175000017500000000000011645102474030366 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/0000755000175000017500000000000011645102474031667 5ustar tonytony././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ignore/surefire-2.10/surefire-integration-tests/src/test/resources/junit44-ignore/src/test/java/junit44/ign0000755000175000017500000000000011645102474032365 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/0000755000175000017500000000000011645102474030346 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/pom.xml0000644000175000017500000000336211051504420031653 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit-notExtendingTestCase 1.0-SNAPSHOT Test for JUnit tests that don't extend TestCase junit junit 3.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} surefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/src/0000755000175000017500000000000011645102474031135 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/src/test/0000755000175000017500000000000011645102474032114 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/src/test/java0000755000175000017500000000000011645102474032756 5ustar tonytony././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/src/test/java/junit/surefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/src/test/java0000755000175000017500000000000011645102474032756 5ustar tonytony././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/src/test/java/junit/notExtendingTestCase/surefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/src/test/java0000755000175000017500000000000011645102474032756 5ustar tonytony././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/src/test/java/junit/notExtendingTestCase/SuiteTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/src/test/java0000644000175000017500000000115710766555661033001 0ustar tonytonypackage junit.notExtendingTestCase; import junit.framework.Test; import junit.framework.TestResult; import junit.framework.TestSuite; public class SuiteTest extends TestSuite { public static Test suite() { SuiteTest suite = new SuiteTest(); suite.addTest( new Test() { public int countTestCases() { return 1; } public void run( TestResult result ) { result.startTest( this ); result.endTest( this ); } } ); return suite; } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/src/test/java/junit/notExtendingTestCase/TestHelper.javasurefire-2.10/surefire-integration-tests/src/test/resources/junit-notExtendingTestCase/src/test/java0000644000175000017500000000016710766555661033001 0ustar tonytonypackage junit.notExtendingTestCase; public class TestHelper { public TestHelper(String two, String arguments) {} }surefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/0000755000175000017500000000000011645102474026302 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/pom.xml0000644000175000017500000000425411625457076027635 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire fork-mode-testng 1.0-SNAPSHOT Test for forkMode maven-compiler-plugin 1.5 1.5 maven-surefire-plugin ${surefire.version} ${forkMode} org.testng testng 5.7 jdk15 test junit junit surefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/src/0000755000175000017500000000000011645102474027071 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/src/test/0000755000175000017500000000000011645102474030050 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/src/test/java/0000755000175000017500000000000011645102474030771 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/src/test/java/forkMode/surefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/src/test/java/forkMode/0000755000175000017500000000000011645102474032537 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/src/test/java/forkMode/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/src/test/java/forkMode/0000644000175000017500000000032011625457076032545 0ustar tonytonypackage forkMode; import java.io.IOException; import org.testng.annotations.Test; public class Test2 { @Test public void test2() throws IOException { Test1.dumpPidFile( "test2" ); } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/src/test/java/forkMode/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/src/test/java/forkMode/0000644000175000017500000000171111625457076032552 0ustar tonytonypackage forkMode; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.lang.management.ManagementFactory; import org.testng.annotations.Test; public class Test1 { @Test public void test1() throws IOException { dumpPidFile( "test1" ); } public static void dumpPidFile( String name ) throws IOException { String fileName = name + "-pid"; File target = new File("target"); if (! (target.exists() && target.isDirectory()) ) { target = new File ("."); } File pidFile = new File(target, fileName); FileWriter fw = new FileWriter(pidFile); // DGF little known trick... this is guaranteed to be unique to the PID // In fact, it usually contains the pid and the local host name! String pid = ManagementFactory.getRuntimeMXBean().getName(); fw.write( pid ); fw.flush(); fw.close(); } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/src/test/java/forkMode/Test3.javasurefire-2.10/surefire-integration-tests/src/test/resources/fork-mode-testng/src/test/java/forkMode/0000644000175000017500000000032111625457076032546 0ustar tonytonypackage forkMode; import java.io.IOException; import org.testng.annotations.Test; public class Test3 { @Test public void test3() throws IOException { Test1.dumpPidFile( "test3" ); } } surefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/0000755000175000017500000000000011645102474031517 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/pom.xml0000644000175000017500000000367611506635231033046 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-group-thread-parallel 1.0-SNAPSHOT TestNG group/parallel thread tests, with parallel settings set by @Test(threadPoolSize) org.testng testng 5.8 jdk15 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 surefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/src/0000755000175000017500000000000011645102474032306 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/src/tes0000755000175000017500000000000011645102474033022 5ustar tonytony././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/src/tes0000755000175000017500000000000011645102474033022 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/src/test/java/testng/surefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/src/tes0000755000175000017500000000000011645102474033022 5ustar tonytony././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/src/test/java/testng/paralellwithannotations/surefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/src/tes0000755000175000017500000000000011645102474033022 5ustar tonytony././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/src/test/java/testng/paralellwithannotations/TestNGParallelTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-parallel-with-annotations/src/tes0000644000175000017500000000230111506635231033016 0ustar tonytonypackage testng.paralellwithannotations; import static org.testng.Assert.*; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Test; import java.util.Date; /** * Test that parallel tests actually run and complete within the expected time. */ public class TestNGParallelTest{ static int testCount = 0; static long startTime; @BeforeSuite(alwaysRun = true) public void startClock(){ startTime = new Date().getTime(); } @AfterSuite(alwaysRun = true) public void checkTestResults(){ long runtime = new Date().getTime() - startTime; System.out.println("Runtime was: " + runtime); assertTrue( testCount == 3, "Expected test to be run 3 times, but was " + testCount); // Note, this can be < 1000 on Windows. assertTrue( runtime < 1400, "Runtime was " + runtime + ". It should be a little over 1000ms"); } @Test(threadPoolSize = 2, invocationCount=3) public void incrementTestCountAndSleepForOneSecond() throws InterruptedException { incrementTestCount(); Thread.sleep(500); System.out.println("Ran test"); } private synchronized void incrementTestCount() { testCount++; } } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests0000755000175000017500000000000011645102474032540 5ustar tonytony././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests0000644000175000017500000000263411577127107032553 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4-test jar 1.0-SNAPSHOT surefire-747-parallelo-method-skips-test http://maven.apache.org junit junit 4.8.1 org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} methods 10 **/TestSuite.java ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests0000755000175000017500000000000011645102474032540 5ustar tonytony././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests0000755000175000017500000000000011645102474032540 5ustar tonytony././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests0000755000175000017500000000000011645102474032540 5ustar tonytony././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests/src/test/java/surefire747/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests0000755000175000017500000000000011645102474032540 5ustar tonytony././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests/src/test/java/surefire747/TestSuite.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-747-parallel-method-skips-tests0000644000175000017500000000036311577127107032550 0ustar tonytonypackage surefire747; import org.junit.runner.RunWith; import org.junit.runners.Suite; /** * @author Kristian Rosenvold */ @RunWith(Suite.class) @Suite.SuiteClasses( { ParallelTest.class, ParallelTest2.class }) public class TestSuite { } surefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/0000755000175000017500000000000011645102474030104 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/pom.xml0000644000175000017500000000611711452560655031433 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire testng-listener-reporter 1.0-SNAPSHOT TestNG listener and reporter test testng-old testNgClassifier org.testng testng ${testNgVersion} ${testNgClassifier} testng-new !testNgClassifier org.testng testng ${testNgVersion} 5.7 jdk15 org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} usedefaultlistenersfalse listenerlistenReport.ResultListener,listenReport.SuiteListener reporterlistenReport.Reporter surefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/0000755000175000017500000000000011645102474030673 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/0000755000175000017500000000000011645102474031652 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/0000755000175000017500000000000011645102474032573 5ustar tonytony././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/listenReport/surefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/l0000755000175000017500000000000011645102474032747 5ustar tonytony././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/listenReport/Reporter.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/l0000644000175000017500000000057510766555661032775 0ustar tonytonypackage listenReport; import java.util.List; import org.testng.IReporter; import org.testng.ISuite; import org.testng.xml.XmlSuite; public class Reporter implements IReporter { public void generateReport( List xmlSuites, List suites, String outputDirectory ) { FileHelper.writeFile( "reporter-output.txt", "This is a reporter" ); } } ././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/listenReport/SuiteListener.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/l0000644000175000017500000000052610766555661032771 0ustar tonytonypackage listenReport; import org.testng.ISuite; import org.testng.ISuiteListener; public class SuiteListener implements ISuiteListener { public void onFinish( ISuite suite ) { } public void onStart( ISuite suite ) { FileHelper.writeFile( "suitelistener-output.txt", "This is a suite listener" ); } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/listenReport/TestNGSuiteTest.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/l0000644000175000017500000000020710766555661032765 0ustar tonytonypackage listenReport; import org.testng.annotations.Test; public class TestNGSuiteTest { @Test public void doNothing() { } }././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/listenReport/ResultListener.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/l0000644000175000017500000000172510766555661032773 0ustar tonytonypackage listenReport; import org.testng.ITestContext; import org.testng.ITestResult; import org.testng.internal.IResultListener; public class ResultListener implements IResultListener { public void onFinish( ITestContext context ) { } public void onStart( ITestContext context ) { FileHelper.writeFile( "resultlistener-output.txt", "This is a result listener" ); } public void onTestFailedButWithinSuccessPercentage( ITestResult result ) { } public void onTestFailure( ITestResult result ) { } public void onTestSkipped( ITestResult result ) { } public void onTestStart( ITestResult result ) { } public void onTestSuccess( ITestResult result ) { } public void onConfigurationFailure( ITestResult itr ) { } public void onConfigurationSkip( ITestResult itr ) { } public void onConfigurationSuccess( ITestResult itr ) { } } ././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/listenReport/FileHelper.javasurefire-2.10/surefire-integration-tests/src/test/resources/testng-listener-reporter/src/test/java/l0000644000175000017500000000114010766555661032762 0ustar tonytonypackage listenReport; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class FileHelper { public static void writeFile(String fileName, String content) { try { File target = new File( "target" ).getAbsoluteFile(); File listenerOutput = new File( target, fileName ); FileWriter out = new FileWriter(listenerOutput); out.write( content ); out.flush(); out.close(); } catch ( IOException e ) { throw new RuntimeException(e); } } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafterclass/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafter0000755000175000017500000000000011645102474033010 5ustar tonytony././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafterclass/pom.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafter0000644000175000017500000000307311515322672033015 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire junit4-test jar 1.0-SNAPSHOT junit4-test http://maven.apache.org 4.8.1 methods junit junit ${junit.version} org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 org.apache.maven.plugins maven-surefire-plugin ${surefire.version} once ${junit.parallel} 5 **/Test*.java ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafterclass/src/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafter0000755000175000017500000000000011645102474033010 5ustar tonytony././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafterclass/src/test/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafter0000755000175000017500000000000011645102474033010 5ustar tonytony././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafterclass/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafter0000755000175000017500000000000011645102474033010 5ustar tonytony././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafterclass/src/test/java/surefire628/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafter0000755000175000017500000000000011645102474033010 5ustar tonytony././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafterclass/src/test/java/surefire628/Test2.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafter0000644000175000017500000000301111416100141032766 0ustar tonytonypackage surefire628; /* * 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. */ import org.junit.Test; import org.junit.BeforeClass; import org.junit.AfterClass; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assume.*; public class Test2 { @Test public void test6281() { System.out.println( "628Test2 on" + Thread.currentThread().getName()); } @BeforeClass public static void testWithFailingAssumption2() { System.out.println( "Before628Test2 on" + Thread.currentThread().getName()); } @AfterClass public static void testWithFailingAssumption3() { System.out.println( "After628Test2 on" + Thread.currentThread().getName()); } }././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafterclass/src/test/java/surefire628/Test1.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-628-consoleoutputbeforeandafter0000644000175000017500000000301511416100141032772 0ustar tonytonypackage surefire628; /* * 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. */ import org.junit.Test; import org.junit.BeforeClass; import org.junit.AfterClass; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assume.*; public class Test1 { @Test public void test6281() { System.out.println( "628Test1 on" + Thread.currentThread().getName()); } @BeforeClass public static void testWithFailingAssumption2() { System.out.println( "Before628Test1 on" + Thread.currentThread().getName()); } @AfterClass public static void testWithFailingAssumption3() { System.out.println( "After628Test1 on" + Thread.currentThread().getName()); } }surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/0000755000175000017500000000000011645102474030411 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/0000755000175000017500000000000011645102474031356 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jcharset/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jchars0000755000175000017500000000000011645102474032551 5ustar tonytony././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jcharset/jcharset/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jchars0000755000175000017500000000000011645102474032551 5ustar tonytony././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jcharset/jcharset/maven-metadata.xml.sha1surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jchars0000644000175000017500000000005010732304340032536 0ustar tonytony31af2f983559347ed4cdc42e882fdc1ccf9cfc24././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jcharset/jcharset/1.2.1/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jchars0000755000175000017500000000000011645102474032551 5ustar tonytony././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jcharset/jcharset/1.2.1/jcharset-1.2.1.pom.sha1surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jchars0000644000175000017500000000005010732304340032536 0ustar tonytony1d048854e95e548527550e11ef3ba1615cd0c3ec././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jcharset/jcharset/1.2.1/jcharset-1.2.1.jar.md5surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jchars0000644000175000017500000000004010732304340032535 0ustar tonytonyc4b966f51890d6f093f9695073eddd17././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jcharset/jcharset/1.2.1/jcharset-1.2.1.pom.md5surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jchars0000644000175000017500000000004010732304340032535 0ustar tonytony5e621bbe805a5a50e7d06bc1f6978e65././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jcharset/jcharset/1.2.1/jcharset-1.2.1.jar.sha1surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jchars0000644000175000017500000000005010732304340032536 0ustar tonytony3cd17d7cc1cca87607df77a9fe1b8f66bdfadcbb././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jcharset/jcharset/1.2.1/jcharset-1.2.1.pomsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jchars0000644000175000017500000000042110732304340032540 0ustar tonytony 4.0.0 jcharset jcharset 1.2.1 deployed ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jcharset/jcharset/1.2.1/jcharset-1.2.1.jarsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jchars0000644000175000017500000005427710721656531032574 0ustar tonytonyPK  xk3 META-INF/PKxk3META-INF/MANIFEST.MFóMÌËLK-.Ñ K-*ÎÌϳR0Ô3àårÌCq,HLÎHUŠ%MõŒx¹œ‹RKRSt*­Àbñ†ºI Á¥y ¾™ÉEùÅ•Å%©¹Å žyÉzš¼\¼\PKÎ\.N^kPK Nk3net/PK Nk3net/freeutils/PK  xk3net/freeutils/charset/PK xk35net/freeutils/charset/ByteLookupCharset$Decoder.class•TËRQ=& "ï÷S ‰„ ¢‚$ ° BQ.¨!Èh˜¡&«Øø~€e¹q‹¢åÂ…K¿ÁoûäQŤêÞôéîÓÏÜï?¿|‚•PP€‚ ny0ˆC)cXˆ·ÅqGw=Œí=¡½/ãŒQB©“1r=CÂÔЖ­ëyÇÈæB©Œfç‰ì9z²^äw£'ÈAYÙ3Œî)&7LÙ Ä|×fH<×^j!Ó°Îl~kü«)j¥u‚7a˜úb~gS·“Úf–‘ê„•Ò²«šmù”DyZO±›MP㦩ÛѬ–Ëé¬_7«žS®Ï•bÇæâY<é‚1ìæ|禂6’ßÚbžsPø‚þ+XEÔe=—Ï fâžRœs0LBݕĄ+ï\Ò^ˆÀ#ÉêbŽgL¤ØúŽÆ32·9í+o§ô˜!:WÿG ŸŠjŒ©ð↌qÑ'cBE?&e<’1¥"‚¨ŠįˆaRUÌ"®bó*ˆBÿÙtBG±nŸ[øŠO$›Óͨ¼$‘õäÌFri#:;µL¨¹¢ÍÜeŸ?~QwÞdBë߯H([ZYŽ%–ÖíÿšxɶȈƒEØo×ÊŽañìk}ñ Ër6Üê-»eÙ;z:fÙ ÝÜv2„®K¶EÂìŠiôEýEÖFyº8}’4ºøQ©äG†Ã‰Eà» âã‚ÄH ˵,ÅY*á»b ¨ªŸ@p}(˜ÕñY)”äL T*G=cõ¬c4 ¹@X´hÛÐ~JûƒýJùNÂuˆ’Q)piÄ]ç^—Ò#î7 Á-½ƒ|€Òý&¡•«püjp¢Íõ5–ˤô”5é3<ûÁ¶×G(_{üíêþYvÃP9»z(Ô/5¢‰šÐEÍ襄©#Ô†)jGŒ:±@]xBÝ… &8·0:øÛY(>yVK’ÛÖÍ5ˆ_7ÑÃqÌ£}\3üê„›Q_!?šøö°}?Þ~PK%ØPK xk35net/freeutils/charset/ByteLookupCharset$Encoder.class•U]OÓ`~ÞÒ­tÆPPDecÈe* Ê“áb°ŒÂª£]ºÎÄÄøüÆxÃ-Dã…·&þ õÞøý5Ï[È—ômÏyÎyÎg»ç?Ÿ<ŠqDFšd›=hA«GÑ*ãÚ¸æÇq~œðî$GÛ9Ú!¡SÂ)·Ò³uÍ „¡Ù¡iKÓr¶žÎ†’)ÕÊ’&rÓÖ¦y=—‰®h:äᛆÒl=Iº¡Û] 1ÿ¶×ÔjÈÐÍ5›ßH`”AŒšSÃ΄nh¹ÙIÍQ'Ó¤)K˜I5=ªZ:—W•"/€Aê5’äf1(qÃЬhZÍf5Z¶›UÝ*Õ'$ɱ*– Í1&‚ C¿Ý”›DrÓÓij®ä±V•-XyÔ!-›Ksf6IWœ.ê­Ë^©Q'…  ¾-#1˜9{º!$Í(íJfãœI¶´Y•¦fÌP!ÃfÎJj1Ç©ø£)MœPAºìD‰„Ó Î ¡[A"¢zô"¦à,úÄáG¿‚sH(8ƒˆ1„þs 5ùú¿náÏ?£XŒïRý6£ÒÚDûº‡&F'"—Gz¼[ô™úçÄ7bë]fØû·Á2ŽöŃc ûþµ3<# %¿Œ™Õmݤá—ûãÖgmºÞœ1«f2|Ub¦•ÐŒ;ÅP»É8Oœ ßšÝþH ÏâÈzV²F-}gŠé»C¯!ߺ—‚ÿˆ¤ñ’\NRœ¤º54*Ê#°†àC3Åø^@Á+TTA9`ªÂ"ìÁ^‡¶ûVh™—ü 3!,¢ Ý\‚–|Òeq*,ÝÅÅÆ%¸Äûàž'L ‹•.ŸXRx«µÝ]é~I˜ƒRéö‰¥X¾ÝÔU-܃7H†…âÔä1ñ1<óÕ¼³„csËs Pæ×owj o¨ú·¨Ä;êÈ{Âñmø„>|¦}ÿ‚KøŠ+ø†¾ã:~8EQú}8ˆì§R‚ôÕÒ“H~a ½›·ÖuÄÌœ§Ã¨§dLÃ\ý*½yû©…ñðü)ÀCöEô7°â/PK-ˆ0>"PK xk3-net/freeutils/charset/ByteLookupCharset.class•V]lUþÆÏŒ'Iܺ`¨ÁmYâ8NÜ–6@ÿ MâÖmºi6%„ÒNÜI2©3cìI›Ò (?åïeµ»h—-Hy $H«e·[ ÄO+íÃJ«Ý—Õ¾ð¸ìw¯÷Ï­‚%ÏÜ{î9ß9÷;çÜ;_ÿïOWdñžƒ&žÂˆ‰§1ªãí‰þs?í&VáŽgM„qØÀñ¶ Œ(8*f¶‰qL˜4à˜2pÌ@Q,L›X 7LO¦¬‡Ò hÆF´àt˵çÞøkiF ë°^ÚóŒ¨úU–!È8€‰6žn]ÉÑE<•^Ù½-ø¹D«qº ?íQòꌩë7iqí*Ú©úgs“ìÑcz\»r-q-¦æteþ§ÿP1® $´r`.@É|çg’ ø´ò™# »9ÚƒåÈ#޽Xƒ}¤e€!ïçV~‰-Ä“8À•A>‡0‚a¦Í‘Øä ÜÖI€Në-Ü|éISò(G!"eñ©×¨µ›( ’‚g°™#AùmÚeBŽ`+S#¨ÚFÌ*A§¶ÎÕÓ—aä¿Bxä̽Ám™hÓ"ƒ=jLíäο‘´„â¡«X“˜ *­Fé·hI¨ÃÌD›…j&z—xÍãƒÄïëBÔ"1µµõ"Å­kÐz0S/£­jUÕëÑbZ÷©í /}°¸VfÕÕ§v­þŠþ’Ú}&! Ö—³÷ìóíËùö™=ó÷¿¿½àÃw"z1zç0&ÒrKDÆÝá¶€;"ˆˆˆbBÀ$ÇÜuãdS"$Œ ˜QÃ匈:.gE4py_D—1-\ΉhŨˆy¼/â<° ¢ƒ[\xȳ)\[t#Ù%¨|Y°"`U€Æ ʺ:_U¬„šd¨ ¯)›Š/•Ôt_DÙ0Tåö -G6ƒ¦®«ñ¤f„q]Õ -yÁÑç™apÍ%•ÇÒ 5šZ_T­)eQ'KCØŒ+úŒbiü9gt&W5 ~>l¨Iß²¥ª<~—Kë få¤enjKªEÙjr[c¦¥âû²…銱ⓓ–f¬£Ûqu#wwž ÝP™Üã í¯ŠßÒç9BU(©ZJÒä¥;9O@ah*`Ôb¨ˆ'§æ_•Åa Q!¢l¦¬¸:¦q.›ŠØäîà•p}\[Ã#º„u ­Çe`JØÀ‡, PÙe“àA¿€”„MŒ0t—oâôÔØ•àÁó™°c*z{®Å# Ÿás _àK_ øZÂ|#á[Îz]ñ <6{QózJz›ØÐJaî¤6·T+¨$ø:¸¼…—¾º`0Ðí[á<ô}õ&×h$<¥¦‚Sdm4Y(BPWtÑ rÚFò©-2Q¥†º2Iň—TšOÕTnJQ:-÷–c#nZ–ò˜"»”DXKðÎöÍ{$ÛƒÃ(Ks¹,|H¦ŒusI[¶GÜÑüSªx|zŽ›ªNÃAŽ•å/CôkR/(ºF¥Úê æ’lO‘êM¼Ò±D!V•DTÝNÚ~Ž—Fè¦W/}ì*Pŧ iU|t‚ñ¡CëûcH3deÿد¶Ã ­.ÛØEÛ ž À›¸H’aoåœ"´“äÅ]Tü¡? ii8÷QY?àŠxÿD7 !*þ¸W”E¼O)@;Õãʼn\Â^Ò(%‚ˆK´{§á'ÌUB SºsÍ.¨Ÿ’^ ¿· ç°½²¥qí2ùñØ'Éw˜04Ò0’+w4wÖÆ]ˆùrÅ}¸žæO^c‡ Q!·Áḩ ÐÇÄ‹‹,{uÂïpÅH±=TË1g5¤ÕÊ±Ê êH«—c® Hk”cBM¤5˱ª ZH;)Çêh»•Ô69<ðíÏqêÄ :ÈÔq\ïxñ3¢C#No›3ÓÄrñü†³ü¹kÝ #•m•û8Ãð#:¼\=˨ =G°;/ÿyâ`;/w½ÏPqØðA¸iBs˜¥¿•<À ­:ÒTðñ Ùvé% Õ¦å:ý{œ¥]#tܰ9wú.í½c¹—#-B_¶¸I´-à>Þ¥É{´ó¿÷PKŒ¼à›½™ PK xk3.net/freeutils/charset/GSMCharset$Decoder.classTKOQþn;e Ž¼«¨¢¶€| ÈChi¡XBˆ‰dh§0¦!Ó©‰‰;—.]dÃJ…ª€$b4®üQ⹥Вð°Éœ{Ïë»ç|÷Üþù»½À‹ûvãŠWá¶ÃwšÐÌÕ.®qÑÊmÞ"´¡‹ëvRoðà›"n‰è`(èV5ÕìepºÃOä§²WSuodA6’Šéõï­]ž)Á¯G†’°ª)#©ÄœbLÊsq²”‡õˆŸ’ •ëY£`.¨Iq@‰PšÁ …4M1üq9™TÈÑÖ?f(JÊTãɃ'dm̦v1X"”Q}|y öh&8¬ë‹ Ãyøž™Š/‹NÎÈó²FϨüÔq%™Šsd¡/DßÕ¡j Ž#Á¬zÊ<äÍ;…¡ÈP21­ÍS±zʈ(A•U’븕§J(Ámw$\B§ˆ»"º$t£GB/îIèC'ý|èá—0€€„ ƒ’Â0ƒûÉe¨?ŽÕ\Ä ƒ òѨ8‚"Äí åûr|0ÔžÄ:CáèT`<f¨;킬óŠ™9ÌGy‹zR5U®©ÒÊ»ÛÜ=<؇n8%BñÍLf'GgýCýã³ ÿX`€áu&åûè$äxL7J4¨aE›7\‡ª8¦E>8Un¿çÈÙ géóŸMG)ÊHë#ÍBkaS³$m‚­g"ÊIÚ3ö÷±‚ ÚÛ‹C%Îgp Q… „" 5{h¬Vo©y–›Ã6#D;lï`´lÀ*¬@LCX#Ÿ­×YZ³ o6à-Ê›ÉZ D7 N§Q¸“F‘³ »/[;„U§aßׂey)Âάµ8„7¦Ww_sˆƒFF2å Â>RÛŸ¨ì5Ôb(IÓŸÛg´ã ½¯DÅ&ØÂ¾aÛxŒïˆb:~ÀÄO<Ç/¼Âï ÚÑ2FÍÖÂI¸(¶ŽvVZ]Y‘p@ÕêÑ@ñ ©®¼ §é„ö™J/ÁœtFÕ¤PKIP?É¢PK xk3.net/freeutils/charset/GSMCharset$Encoder.classSYOQþn;í´uµÊ¾ Ú¨¢‚²ÓÒB±,„p(Œ–™f:5jŒû¾EüÆøÂ+ò€Æ_MüQâ¹-’°8ÉÜ9÷œïlß9óçïÏ_qá$<.xásÁŸMhæ×'YÏóã¿¶ò㢋¬—8î2ǵ‰hq…ÁÞ¥jªÙÃPå‰Ý”oËMÕñÙH)f ”ývz§„¾¨0äÇTMM¯.(Æ”¼ MQLˉiÙPù}G)˜+jŠA kqr3¤¨¦)F(!§R |1â/Š’6ÕDj7ãàäÈNÒ†×NKœ<Ê/Á¥dÀ1]O2 çtÂ!ÁôÒÅÙSïšÊŽÒ{@TžuBI¥<2[ 7JoœÁff›³Ì‘¢j î31Xõ´¹Ïš“’Ái(«2Ñ®-Så“zÚˆ+•Îßk¿…»JÈÇUÑ)¢KD·„ôJèC¿ˆ „$„ùA'?% !*a×$ÄÐËàù_¦j£xqÄ–D"|OŠ`„ñx£¹¶=>*ƒcl:<‰Í0T7-ë²bf’…jë›–24Ô?1?56œ “ßlI®r><êPI=¥šªNS/ñDsöfw¬ÅimUN&ùŽDt#¦hËæ CÝ>ð!e'ùº”z‚ÞÃ6æúè@–Ô!~{þX Ð~€¡n}t³Ð×áóKyßÁ¾eEtº2z"R(&éT‡œÎÄq eE@9*²ÑX;¬„Öü[°´ÙÝöYa±Íþš¶`µ}…¸ aƒl¶6av·Pà¸×Úa+³ý†hY‡Tfs …Ø~ÐÒSeù‚îMˆÇ@ŠýÌ!,nÁ9#ü€k£© b 'fšª8f‹ëÛ÷7!mì¶É´ýv<&žPOQ‰g¨Çs4ãò’þŒWÇkÄñ+xK¼Ã| ¯¤YÃ{|ÊP2DÍöa„ü«¨ñzÜB5IŹÔÂÆ©Ø%l†PODqé ¨;Ån$;Ég3ž#š9õŒÆ€Ò?PKg(¼³·PK xk3&net/freeutils/charset/GSMCharset.classí×y|TWðóf’Ìd2!ç†-ì!²@ ag’LÈÀ$˜˜H'Ã# „˜LØ¡îûÞªÕjmí®¨jW—¶Z\[µV[mÕÒE[µUk«µöwN†À‡Bëÿö“Ï|÷ÝwÞͻケóy§^½í."ª¦.7-È¥´ÐC#i‘‡Ó-¥e.Zî¡ò¹¨ÞCnÉ75ºÉï¦&7­Cš…€‡VÒ*i…µº(d‘«ÑŽ%7Û)‹¼DÂN5ôEûûí~ìð'2;²Z}-~‹ ƒÛ¢»£Õ}ÑDou8Š'zY”ßLô§£‰tG´oÀÆQ¾`Àö‡-Þu¡ú¸Á׆Ѭz'æ5ÿ¶>Òîïnu74ûÖXäè X4âܾîÁCQª›è–Ý9»´öÜγµ9‹ã‰xz)ªÊ+:0‡ÌÅ¢‚`[f•ŒEû:¢©¸lg:³Ò[ã¸%Á„®Þ’²ít¼¯¿:¶5šêGÏŠpKÃ`3rÇ’‰t4ž@ý„òÁ)'âÉ¡Ú3…˜[ Ec/^c‘'aïº!¥å­ÍeºUotH¦HNyq¬/su<áä@*f7ÅeÚg'6SFÁÅEOU£¿É·6Ø^å ¶5ûêýí^O¼TFm.Zí¥5v:×®sù›]±)™3—ã×ý/õCsãó'Luݳjjê,Ê“fæLq±U;¸¿ª¶>€³›L%^*¥­÷R„:½4…¦ziMµ¨øÍN¢¢‹]UL¡üõúž}y Ï™B¨g›ÃÑî^;­ß9|cÎÜ<-ÐNܬ‚óºpÏâýýÒÅpÏFžûßÕgí ŸEœJÙ…ç\¿/m“Éí;ÏN=–²£i;Øm£cpgæ{â*ï Tà[ˆ«;Ë‘‹Šh %‹ÆaË,’‡í"šH“†ú‹±;¢ý¥™ÄýМ¦™Ú2*‡ت#'ZDžÊBë9N’ó¨ŽS)}H¢Ê¥¹4-ï`%Í *¤E3±z޲•R›[y‚²¦Ÿ ì#CƒäèAm:À¨Á¢ÌÒšE³±ß¢9ø7ƒCÕdN(÷vʉTž$×-ç 9ç\r‡Îe.Í{ýn ÷üì à¦ùg.‰7Ÿ²ääòN»î$OÄY˜ŽdzÑìÂüp$§pXø89ŒEw`/E² ]Šdó”P$ÇÐõ¡ˆËÐÓ¡ˆÛÐ3¡£ëeúžE óD®¡§öÀfè^D¡Ó6Έ»a¡qÞ€nœ—!F畈‘Æy3b”q^mœ7!ŠŒ'ÆcŒó ÄXã¼ 1ΔŒ7tb‚¡' =†˜dè~D1ÃÉ<–p ,åR8ÅÐuˆ©<Nãi°ŒË`9—à ®€•\ §ót8ƒgÀ*®‚3y&¬æj8‹gÁÙ<Îá9°†kà\ž çñ<8ŸçÃZ®…u\ð¸ÂE¼.æÅp /Ky)\ÆËàrC× |ìƒõ\¸6r#ô³6q\Á+`37ÃàJ^ Wñ*ä láØÊ­0Ä!ØÆmp5¯†kx s¶s;\ËkawÀu¼®çõ°“;a—¡{ =„ØhèÄ&C"º ݈¸ÄÐ݈(Ga÷ÀÇàfÞ m¶áÞ{¹nå­0Îq¸·Áí¼öqÜÁ;`‚0ÉI¸“wÂ]¼ ¦8û¹¦9 xîæÝpï{y/ÜÇûà~ÞzqÐЋˆC†žG6ô âRC‡"†Þæß®¾C}§ú.õÝê{Ô÷ªïS߯~@ý ú!õÃêGÔªS?®~B½L½\ý¤ú)õÓêêgÔϪWªŸS?¯^¥~A½Z½Fý¢z­zz½zƒz£z“z³ú%õËêõ+êWÕ¯©·¨GÕcêqõëê7ÔêIõVõ›êmêíêêê]êÝê·Ôo«ßQ¿«Þ£Þ«Þ§~Oý¾z¿zJýúCõGêÕŸ¨?UPT¦þ\ý…úúKõaõWê¯ÕGÔGÕߨ¿USW§þ^ýƒú„zZ}R}J}Z}Fý£ú'õYõ9õÏê_Ô¿ªÏ«/¨Sÿ®þC}Qý§ú’ú²ú/õßê+êÔWÕÿ:BÇ© óKž,|²ñÉÁÇ…Û!¿‚l±næ:ôwÁ+¿ Òô ùÂ0¡@`Á…Âpao’ŸiŽF EÂa¬0N/L& “„ba²P"” S„©Â4¡Ì¡ëü]çÉ:/Ó…B•0Ó¡KüYâ¥9[˜#Ôs…yÂ|¡V¨ …E]Ö»tY?¬ËúFYÖ¥{9”E]šõBƒÐ(ø…&a…Ð,„•Â*!(´­BHhV k„°Ð.¬:„uÂz!"t ]Âa£°Iè.¢B6 ¶)>"kµ´{…­B\Ø&lú„BBH ;…]BJèÒ€°[Ø#ìö û…ÂAápX¸ÔñÖbüÖbü¾ó1*¸•Ìq*`Žæ€}µ/˜«¹`?íæiØ_ûƒt8P‚ùšÒAà` h8D‡€…ZºÔÕ¡à0×á [Ý`‘#tX¬ÅàH ŽÒQ þÀÑ:,ÑpŒŽÇêXpœŽÇëxp‚N½ê'êD°TKÁI: ô©œ¬“Á):,Ó2Я~pªN§é4°\ËÁé: h jœ¡3À™: i¬Ð 0¬a°R+ÁY: ¼B¯gëlpŽÎçê\ðJ½œ§óÀù:¼J¯è—ÇÈÕ} B_‹Ð×!ôõ}B߈Ð7!ôÍ} Bߊз!ôí}B߉Ðw!ôÝ}Bß‹Ð÷!ôýýB?ˆÐ!ôÃýB?ŠÐ!ôãýB?‰ÐO!ôÓýŒ‘Õô³FÖÐÏYO/4²~ÞÈ'ô F6Ò/ùœ~ÉÈbúeyÿЉZK¿ŠWôk&j ýº‘ÍôF~¤ß4) é·ðH/2²•®2ò7]Wôb#ëè·üF¿cäKz‰‘ÃôR”N¿kd½ %Óïa ôr”N¯@ÉôJcEöw–J¯6²ƒ~ßÈ^z‘?茜¢?4²þÈÈz­‘£ô:#'éõF¶ÑÙMo0r„þÄÈ úS#»èÏŒì£79Nnä4ý¦¦¿4ò;ý•‘Mô×øWô7F~¡¿5r€þÎÈ_ô÷F~¥7¡Dz³‘ýôBÿh$²ï[P½ÕÈAú'#?Ó?cjz–NoÇ’éFvÒ;Q½ËÈ!ú,þK¢C‰ôn”LïA‰ô^#Çè}Æš@ï7–—>€Òèß5›>hä,}%чœ¡àhé£8rú9} GG7)IôŸ8Zú/-}W>‰+@ŸÂ¤O›ÔÈýþW‚>ƒ«FŸrUó“½TÕïªùªÖ”h°9¾Ä6•Bô6‰|q›þPK#Ú>†Ä PK xk3+net/freeutils/charset/ISO88596Charset.classÕwXSWÇñ7Œ“€ÞQATDÙÄ-#j‰D#*FŒÅ !àÖî½÷Þ{«mµVín­Ývï½·ÝËö÷±­Ö?ŠïóùæÜœçzonž'»÷mÛIDN*·ÑÀ8J¤L!KÈŽ§$ʱR®òl”o£ ²Q¡Šâñ¶ÓJÅV*±PL}Õ$—…u‹ý~g«?´Ð鄃¡…Ã-”PÓjøC‘FkGÀBÖª:w•×åµP÷¦Ãí·Wû\Í žæšñUS-ÕäÆ1y-Çä= E7ÉA5" FFa™›×ˆk¨i›Ó'ÕCúŽ¥óáÿ¼Ö€\U[‹¿µÑʺë`LdQ°ÝB9u¡@Ĺ tD‚­íΖEþp;ޏ½žÊÊò¡5û׸,Ûˆ–Ö®ÿ/ÞÛÖn Œ ʉ’ÙZ$·„ËÀáB9^XQXí®uÛ©;%Û©õ´S/J±S*•Zˆ½ uki?pF¹ñ¦kÙüÏò_{]ïu¼×e§ÁTf¡¬ÿu·øX¿¯zU$P×Ö¶¤cÙß; sÿû óX›Üxdò”RZÂ$àup‚ý'ëz$Ö\lÁ6ÊÀW+ ßÈJ!&Mx„XE¡)ò)âuŠ|¦ø,»ÞK¥Þ0 «Q‹WDœï°l¢¨M½‰b¶PìF³³ŒGåŸDÅÔ¯ìû÷S?JGmÔÿÀ¹Ô^\þÔV;Hù¢V¯/Æaóúbq^ŸrÄ{}VG7¯Ïæ°{7S”¶Ðöx_t´ÇãñÅÆz|Jy|V«Çg³y|¬+¶2Ölc9Çq0žãa7îíl‡ œ9&qÄÔ¬¡ƒ°;w‡Éœ {pØ“{Â^Ü ¦p LåTØ›{Ã4Nƒ}¸ìË}a?îÓ9öçþ0ƒ3àò@˜É™0‹³`6gÃιœ ó8æs>,à8ˆÁB.„E\ì„Å\ K¸–r)̃a—Ár.‡\‡ðXÉ•p(…ÃxÎÃáGòH8ŠGÁÑ<Žá1°Š«`5Wîµ\ ]ì‚cy,ÇãàxÝì†xœÈa×ÁI< Ös=ô°NæÉp OSy*ô²6pœÆÓ`#7Âé<ÎàÿàLž ›¸ ÎâYp6φsxlæf8—çB?ûá<ž[¸Îçù0À¸€À…¼.âE0ÈA¸˜Ã%¼¶r+\ÊKaˆC°Ûà2^—óræ0lçváìàØÉp¯€+y%\Å«àj^ ×ð¸–×Âu¼®çõpoðø4‘‰‘…‘‘ƒ‘‹‘‡‘‘ž€‘žˆ‘ž„‘žŒ‘ž‚‘žŠ‘ž†‘žŽ‘ž‘ž‰‘ž…‘ž‘žƒ‘ž‹‘ž‡‘ž‘^€‘^ˆ‘^„‘^Œ‘^‚‘^Š‘^†‘^Ž‘^‘^%^e¼Úx Fz­Y]g¼ÞxƒñFãMÆ›·he—ÞŠ‘ÞfŽÞn¼Ã¸Ñ¸É¸Ùx§ñ.ãÝÆ-Æ­Æ{ŒÛŒ÷j•&ÝnV;Œ;÷i•.½ß¬Ð*Cú V¤i5Pú°V™ÒG´Ê’>ªU¶ô1­r¤»´Ê•>®Užt·VùÒ'´*>©Õ éSZJŸÖªHúŒVNé³ZKŸÓªDºG«RéóZ –¾ U™ôE­Ê¥/iU!}Y«!ÒW´ª”¾ªÕPékZ “¾nîê ã›Æ·ŒoßÑjŒô]­ª¤ïiU-}_«éZÕJ?ÔÊ%ýH«±Òµ'ýD«ñÒOµrK?Ój‚ôs­&J¿ÐªNú¥V“¤_iU/ýZ+ô­&K¿ÕjŠt¯VS¥ß™«ûÞøƒñGãOÆŸ¿5þfüÝø‡qŸñÏ(Ïfù)ŒÞJ ›)F~ -æ×0‘¢aeS©ÚEÓp4ÃüRø PK˺ß]› PK xk3+net/freeutils/charset/ISO88598Charset.classÕwXSgÆá7ÀIx¿ˆ€K ”¥F‘¨A4¢bÄQ ‚{tï½íÞ»µB[­U»—]î½·v·¶vÚ>ï'mÕúGõ¹îçä³¼²î̪µD”AÙVêNÑÔIH’"ˆ)ÙB)VJµRg+u±Rš•Ò­”›» Ý,ÔÝB=LVœ;¼ÐDö¢ižÙžŒj¿2à øü•}M™_㯠züÁROu×D–Ü"G®«Ðe¢¦e»Þ–ç.),/q–çÉe¢2ÎÉÏrNn3Qh™œ4÷óù}Á&§”â1ä×LÁÝGùüÞ⺓½Ïäj¯<ªš Ou©'à“ãÆ“aÁ*_­‰’ŠüÞ`ÆÔ€×[ôU×fTTyµ8ãp9³²2³³òÏãaYûUT7þ{®šº@…wOî(æ‚KÓå)áaàtšœOËJËs8lCÍlKq6Чæ6jA=MÄ>5©¨ýû剟s7‡åÿžsmáùמm¡2©—zS–‰:ý¯§Œ×æâ×åÍ z‹jj¦×ÍüçÊ´äÿ¾‘yoËxßä­²øj‡ 떩ߺq&Нx=A¯Ã?Û‹;<{çï“%¿‚_£vø¼1>«axùÙ … ñòÒâçxyuuñ7ÞÖ‚ZÂV8Ê!?qªÝTO!õZOa+ÈX®¯l #Pù¿€7µÁO¶³×S[J@­x÷ei…G?æSl^Cfw¨Ýâr‡Ù­.·aw¹Íö—Ûboâr[í6W…(­Žp‡†:ÝaaN·a8Ýf³Óm±8ÝV«ÓÍfÆ[Çle9Îá0‚#`nmlƒ‘ £8 Fs4ĨXA;ÛaSn c86ãf0–caÇÁxŽ‡Í¹9lÁ-`Kn [q+Øš[Ã6ܶå¶0`;nÛs{Ø;ÀŽÜvâN0‘a'ÁdN†)œS9væÎ° wiœÓ9fpìÊ]a7î»sw؃{ÀžÜfr&ìŽ`oî ³8 fs6ìÃ}`_î ûq?ØŸûÃÎxÈa.çÂ<΃ùœ ¸r!ăà` ‡ðè`ÊCá0‹¸çá°˜‹¡“p€#y$Å£ ‹]°„Kàh K¹Žá1p,…ø Çñ8XÆep<‡xœÈa9—ÃI< zØ'ódXÁp O^ö©<Vr%¬â*ècœÆÓàtž«¹ÎàÐÏ~XÃ5p&Ï„³x pÖr- rÖqœÍ³ážçò\8çÁù<.àp!/„‹x\Ì‹á^ât+º“^ŠI/ä—cÒ+0镘ô*Lz5&½“^‹I¯Ã¤×cÒ0é˜ô&Lz3&½“ÞŠIoä·cÒ;0é˜ô.Lz7&½“.Ť÷bÒû0éý˜ôLú &}“>ŒI ŤaÒÇ1é˜ôILú&}“>ƒIŸU´Mú&}“¾€I_ĤËTBŽô%Lº“ÖcÒLú2&}“¾ŠIW`Ò•˜ô5LºJÑiéë˜t5&]ƒI×bÒ7ô³}Sû–ömí;Úwµïiß×~ ýPû‘vöcí'ÚOµŸi?×®×nÐnÔnÒnÖnÑnÕnÓn×îÐîÔîÒîÖîÑîÕîS qÒýÊX/= Œ ÒƒÊØ(=¤ŒMÒÃÊØ,=¢Œ-Ò£ÊØ*=¦ ý>WÆvé eìžTÆNéÊØ%ýR»¥_)côkeì•~£Œ}Òo•±_ú2H¿WÆAéÊ8$=¥ŒÃÒ•qDú“2ŽJO+ã˜ôge—þ¢ŒÒ_•qRú›~–¿kÿP QÒ3*!Zúgˆ³BWRäRŠÄ·¤|˜h™³^NE5P˜|_šô÷e,¾Q‰’(‘º›wR™y?7Ÿ¤rÜÚ^§vø PK`ZI¶¸^ PK xk3(net/freeutils/charset/KOI8UCharset.class…Õ TT×Çñ;ð—ÇQÿ?@Å]®l"î+¢€¨(2 ˆŽDqÄFÇÁ ƒ‰ÙÛ¦mÚ¦m–îIÛ´ÍÒ&]lkš&é¾¥û¾ïû¾7]“þþ/¶§§ñœÀ9ŸïÜËåñÞ›;¼ÇžxèQç\“kˆ¸“Ýd·ÐXdTF]ÔÅî*⪣û°[v5!'Ý­»;B®´ëDêLª)›Ê 7õò™ÜðÆ›Ú>š+¤r…þTv<ráÖ®ÎÖÞŽÞ+¸ØúX[²¯c°/1ؾ£µ'äŠ:9g¯mÎ~rÅ6YÒœÉe -ÖÖõóÚGñðÓ»2¹t÷ø©£é|_êh6mg5:”Êö§ò_˜”ÂHf,䪻réBÓñ|:=^ÈdÇš†FRù1ÎìJt®Û×þÔ€çiÊ^øcÑÞÑñüPz[ÆŽ‚ÿ]·Ô.†§esûbnš›sês¥®,æÊ]mÈéÿ_0ïG°¾‡¿PçêC.þÌ'r5_Ôv¶î=9~ú¿+kŸ~/rÛ:yKí.V åÓ©Bº3w&Í]  èB]Hé"Z©•4®qZ¥U´Z«©WOëbZ£5´VkiÖÑz­§ Ú@—èÚ¨t©.¥MÚD—é2º\—Óº‚®Ô•t•®¢«u5]£kèZ]K×é:º^×Ó ºnÔ´Y›é&ÝD[´…nÖÍt‹n¡­ÚJÛ´¶k;ݪ[i‡vÐmºn×ít‡î ÚIwêNºKwÑ.í¢»u7íÖnšÐÝ£{è^ÝK{´‡öj/íÓ>ºO÷Ñ~í§ûu?= (¿éA=Ht€^¢—ÐCzˆÖÃtPé=BSš¢Gõ(Ò!zLÑ´¦éq=N‡u˜ŽèÍh†žÐô¤ž¤YÍÒSzŠæ4GGu”žÖÓôR½”æ5OÇtŒ´@ÇuœžÑ3ô2½Œ^®—Ó³z–^¡WÐ+õJz•^E¯Ö«é5z ½V¯M$ᮃwÖgÁYŸ ³>^­××[Ÿ _a}ü<ëóá«­7À/±¾~•õ…ðÍÖÁ_g½þzë‹áo°¾þFëKáo²Þ³õfø[¬·Àßj½U‹¬/ƒ¿ÃúrÄg[_øë+ßa}âǬ¯FèÝ~ë=ýÖ7Ã} üë½ðIë}ð­o…°¾ \çÛáYߨz?ü õø#Ö ø”õ$d}'ìÜ»à‡¬ï†”XÏCÂÖá[ß?l}~Äú^øŒõaøÖG Áý~>k}OÙú~H·õeÖB–[?Ùfý0$x_?Ymý(d«õc•ÖC:¬Ÿ€¬³>Yoý$dƒõSÖOC‚}ñÈ&ëg!-ÖÏA6[?IX¿Ùbý"¤Õú%H›õËvëW k¬_…¬°~ Òeý:d—õµÖoB‚ýñ-Ènë·!Öï@¶[¿ Ùiýd©õû`¿ÿë!‹­?‚ûÿÇÖŸ@‚}ÿSH™õgoý9$ø|üìÓ_B‚}ú+È\ë¯!Áçæ7ùÖßBXYhý=¤ÉúH°ïÿ öïŸ qëŸ!UÖ¿@fZ‡”Zÿ >ƒ4Xÿ™eý¤ÖúOH£õ_:ëë“úÄ9{”?è"çœØÓ4œ+‹“ÇÒiÍ 'ÕLFcƒÿü|Z ¾\SQŒ]êÎΫÖSkÉi‚Í#òuå{5Œ5¸çÐ9´ai¡l"Á‘•"RAé=å‘GÏ&Å]Åû3â«ÖÕ$Oi™ÿ!NSOܧÞÄP#k³¹’ó7µ”ÊÃJ¯pæ3FÖŒi]4R9Ò‘vá+ãîÈh@£Œ0-Ã'fd1ëÄœó2pWÆ"î9q_Æ,Éøɸ€u¨—ñ³bá`ˈɈC“Q‹·e$p—à}ãÙ.5”C„çìÁE"bTv3?¸Ïi½?Ž[UuJsC;j;ì.¡áÿÊ󜚙ŽD§Ï›½m¥À0wÓ¹m¼Ì æÔŒ8Kž—_Ûš B­'ì=ƒ ÅkFF·tƒÉTí;‚:@T¦ÔdÂ0SZ.£dnr8_?šøñªæwÑΦÄïBagzäv毕‚€à†åt6HÌÊwXnbiš%›Àø²ü-ÈçßE‘o¶…¯Y[„朿P%œT™ªPAÕha} Û…µ—s‘+á—u|ðâw³L¼;|¶]H‡1]—ê`§ú\,9*Ä’À•|„¢ Wèdl¯ö Ým_”âAû]ìÁ!} çK8wØVtø¾ô ƒnÇ+””¸ß§¸ÜÒCahÈmè¹fä"¿€"pBx¼ùU'óQ®5èÓ¸°xe¾¦%’Èf&¶{—}%סìÄ‹ ʈÄÉ&$ª%•%ž§¨³€3§^4•šØ»"„L+êÿÅÔN„Y·ž\~0 LkS1ê›<@UJë„e´ÖyH ªxÉaIcòý©l:®Et©–kí[¥›ŠôªØ„«TÜ;U\}*ZÐoÇ€ŠA ©¨D•Š+p¥Ã*QÜ­â Ùq¯Šû°OÅ~l;ZUŒ!&Ðxɲ Ô­¥÷ò ïÚ=‰ÈR­é\OÔ{‹‘¾ Ž”º‹Pfö¯aõi&PÚ;ÔÕ‰ö Ô®'ïæuI ž‘ÊÉÉ»ä 5òi°LËf¬äb~t öt.åà.Ò3„8¿ì­R=Óɇ&nÈáF¾F6=ê× læ«åæ[¨ðŸºCþQeóKÉ9VÈÎ91mVž¬A-×u\õseá×í ¨â-”øüó°ø  ¿Is ®6$ø3(ÅÓØ€g¹~Žae˜éŠkp­ íÆ\G›/óZ¸üÚ|–yX—1¦ïóL瘉¥æNå±øàÏ#<ÁåÙ6ßIX Å¿›õEØOÀ~œ¦R—íTú9sÈÕîöÇfNÁ¹€²a¿«I~N@=^ˆ[ ;Ç—8¾Œr¼Âœ_%1¯áz¼ŽxcE]m…ºÚ@³Q°•?9fVâqfeåÞ"ÓÙ¬QƃÇp6ÀÜìùܸ±±U‘IE”‹GY@ùl x”™×žò(.ÿ,*..Ëe;‡ƒ¹å°O!c>—m¥¾€tvÍatГÒbx”S¸ì(œ Ô4 g c9çòÅöU4%Ù1Ài–ø6%?þ:Ë^z‡¥¿K‘ßÇ 8‡]ø€?–çùä|È>úˆÏÉ"öáchø |Š>Ã#ø‡ñžÄ—ú+’ü5Nâ¢~KÄïð¾'Ê&í-ŒV‡9l£²á ,2Þfƒ,šR”ðä9ž¯2{—ïU¾U~¤ŸôÌJ*‚5KdT»\r:þèá™ ¿&ÏLµË™3J¶–ÍKtn©¶Ý¡ÑºŸ’ÌQ«”¦Zž˜‡c¹·[Ið“ü™WïÔãW–ô ûaüAÂþÄþBcÿà\€‹& ¾\…Ò³ùÞ“3IŒ,};xÁå­ØiƼ æâ¯;©‡ò/PKºÌpÕ PK xk3'net/freeutils/charset/UTF7Charset.classµØKSÙðÓ’@„ÁXÛ˜—ï‡Á¼’À€ŒÀ6B€°lIøí™Yd>@–Î$•JªR³É"¶3ãÊcR•EIUYd‘ÊwIåü¯Ì€í,2SýSßîÛ§ïíûW˜¿ýç÷"¢.ºo¡y+UÑ‚MX´Q5Ð\²Ñ2­Ø(H«fZ³‘…Bfºe#…pz„ÁØ4Óm ݱÐ] mYèž™"fÚÖÈìES;±´Fv2K{‘L&–‘¾¤~´8µàÓÈ1yéJD’{]Ál:žÜѨԓJf²‘d6IÅ䪩yÿTÐÔ¨ró´þe©Ùx*IxãéX4«‘¶¡Q‘w+è[ÕȰ‰F ×(š>>è—ۨƖ1ä[ ÊXŠGãÉxv\#£«5$#ôÈH5*Ÿ'c‹G‡Û±ôjd;ØSÑH"IÇÑÖš²ûq™`Ã|2–íÚMÇbGÙx"Óݤ3rdmufГۗ·º~8Sf¶a”F#ÉT2.w\ŒâaDñˆz˜–h*™Ä“²[§LÆSù[ß®UæoˆJ'çÙ}4²Êmr‹£æ/ר’±ÇùulpµžyµÞi$wI~…?t‰ÞI.)Žg¼Á˜¬™É5»jmMjFeó¨nÕÍ*ýSéܾœV;¶ÝtêpZžÊ@®°dSÇG,rž Ëh4¡¯²-˜:JGc3q,,P'F-Y‘Cƒvª£Kvj¡NµÓeºb¦;Åh×L{vÚ§¸,èGW½QJ¨rðIèÏÈNõtÕN  ‘šìÔLM2Þ“a‘yãb*Öýž€××Ñ#ÿª)H†£™5‰”ëé9Ñ«·£û¸WýGǤQÍY+ª‘ëÓBLŒ>°}[˜½XV½&äK~ÕA” ”Ÿ8$ ÏøÕ{"* XUx÷\Q•üI×'|#?ðå É㯒·#‘™jÈIµ¤ÑEiä³Ù ü#¡k°Tê³Aÿ”SŸÍêÓ!×´Kl•Ö™d¨ÄíÐÞÁøŽŒ¯Ua·h“Ot±Ñ0µÉž=וکC>Q¦S/s›ŒRHz¸ÛÚß‘É]÷ }_§LÎÝ bòËÕsª–;×_¯…½.5-ìuË„ jS2ÊÑêÕï4&gpÎêþ–ŠÛ¾%ó¯ó·)V—ïªòÕ¹NùòVê£~9¯Ñ5ÐKµ«¶\m:Y#U0]C~ºƒt]¿²_j¶?%ìv¿#ëoNTxRPÁ–¯0$òlªBÉÉ ?:¥‚…FhT¯0ªV_ÖÓù•¿!»³ï™M_“Éxb6Úë‚Jy€ãz¥ ½Ò„^©ÊYA_üò#ž)(VE“4¥ŠMŸ5¬Ò³+ýîÔaM`X(öÝ©Ãòä‡åÕ‹9eXçÕB%¬øç‚ŠÎüð<ùáÍêërÃû´¢)(Z—¦7?Ì1½h¥ “ßP™³Óðó3Jýµ Te~|Þüø&õRÕ¹ñ}¤Úß ªUç棙ü{"W­ÜùS2¾&‹*÷ã“eþQP¦'†¸J¼ÅÕâ:Ÿå!‹|AÜÄÐnƒ;à.Ø÷@„â6׊Q¾(îpãKâ._÷øŠ¸Ïõbœ¯ŠÜ ÞçF1ÁMâ!7‹InSìp«øÝbšÛÄ ·‹Yî¸S|Ä]âcîŸpø”{ÅgÜ'>Ç_€—à3ð¹!ð–ÊxÑå)É.OKxÙ#ée¯Ä—}’_žA€y æˆ0û‘ažCˆù&RÌóˆ1/ Ǽˆ sIæ%D™—‘e^A˜9ˆ4ó*âÌkÈ3‡h¾…Dó:"Íadš7jŽ Õ¼Xs¹æ›cH6ï"Ú¼‡ló>ÂÍq¤›o¾|sçC$œ“ˆ8§q~€óC•ò4RÎÄœ³È9© ?RA¬‚þDý© ú3ônôô^ô>ô~t|1†ÕcD}1FÕcL}1ÆÕNÈŠ½¥ò×êÏ#·úIV$¶R­öÐð3íË¢ËÚ+ó¿µ_ɵ9õî¦ü!‹¿ ò#­ŠÎË3ü¿Ã dú/PKuc@ŠÎUPK xk3/net/freeutils/charset/UTF7OptionalCharset.classQ]KÂP~ŽN7ÍÒfeßeÝha«+‰")–3Áº:®¥'ÖÛìUAP? ½›ÒEt.Þ¯ó¼Ïûõñùú@æ‚…,¦‘Â’Œe+ V¬ÉX—Qdµ³cU¿å\³¹ÓÓŒÀNï€a²î:~À ÍíÅ ×ôÓšql0ä¯Æá“‡ÂÁC¼Tnuݽ¦¬¬.«1¸ëZ^‹wm+,æšÜnsO„þ((}á3lëŽh7že aûšÙçžO‘‹ÖIµy×áv}£ŠÊ¡ij¦ wà™Ö‰ÉæÇÀwÂŽ¦è«R­4Ï[§ÍFMÏ`Sd±Áû9¡› ‰ˆ‘v0Jg(ÿ»Q†âߨoL¹ô{§cÖ|Yn£H'MÑc˜G`ÈD Ž3²³È‘œ&oYÀÄ–Êž“^Œ@*É4i`—ôòde†PÌ`–´‚¹ohÂWH¾AêÄՄёԤÑI¨²ñŒXHÉ"ÊdDQ"YvùPK ´úÈ‚‘PK ¹Nk3META-INF/services/PK“JÊ26META-INF/services/java.nio.charset.spi.CharsetProviderËK-ÑK+JM--ÉÌ)ÖKÎH,*Š8C耢ü²Ì”Ô"^.PK‹§|¹#'PK  xk3 íAMETA-INF/PKxk3Î\.N^k¤'META-INF/MANIFEST.MFPK Nk3íAÇnet/PK Nk3íAénet/freeutils/PK  xk3íAnet/freeutils/charset/PK xk3%Ø5¤Inet/freeutils/charset/ByteLookupCharset$Decoder.classPK xk3-ˆ0>"5¤¯net/freeutils/charset/ByteLookupCharset$Encoder.classPK xk3ë-ß秆 -¤Pnet/freeutils/charset/ByteLookupCharset.classPK xk3Œ¼à›½™ +¤Rnet/freeutils/charset/CharsetProvider.classPK xk3IP?É¢.¤hnet/freeutils/charset/GSMCharset$Decoder.classPK xk3g(¼³·.¤Ônet/freeutils/charset/GSMCharset$Encoder.classPK xk3°[ƒ¢J&¤Fnet/freeutils/charset/GSMCharset.classPK xk3#Ú>†Ä +¤<#net/freeutils/charset/HPRoman8Charset.classPK xk3˺ß]› +¤Y)net/freeutils/charset/ISO88596Charset.classPK xk3`ZI¶¸^ +¤M/net/freeutils/charset/ISO88598Charset.classPK xk3ˆJ öòë (¤^5net/freeutils/charset/KOI8UCharset.classPK xk3ü| Ò™P/¤¦;net/freeutils/charset/UTF7Charset$Decoder.classPK xk3ºÌpÕ /¤œ@net/freeutils/charset/UTF7Charset$Encoder.classPK xk3uc@ŠÎU'¤ÎEnet/freeutils/charset/UTF7Charset.classPK xk3 ´úÈ‚‘/¤ñNnet/freeutils/charset/UTF7OptionalCharset.classPK ¹Nk3íAÐPMETA-INF/services/PK“JÊ2‹§|¹#'6¤QMETA-INF/services/java.nio.charset.spi.CharsetProviderPK"‡Q././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jcharset/jcharset/maven-metadata.xml.md5surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jchars0000644000175000017500000000004010732304340032535 0ustar tonytony6b6e65bd49d8b6f5fa035b7f842217d5././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jcharset/jcharset/maven-metadata.xmlsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/repo/jchars0000644000175000017500000000044410766555661032572 0ustar tonytony jcharset jcharset 1.2.1 1.2.1 20071219170211 surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/pom.xml0000644000175000017500000000222511237311046031721 0ustar tonytony 4.0.0 org.apache.maven.surefire.its surefire-162-charsetProvider Test alternate CharsetProvider 1.0-SNAPSHOT maven-compiler-plugin 1.5 1.5 maven-surefire-plugin ${surefire.version} once true junit junit 3.8.1 test jcharset jcharset 1.2.1 runtime surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/src/0000755000175000017500000000000011645102474031200 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/src/test/0000755000175000017500000000000011645102474032157 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/src/test/java/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/src/test/ja0000755000175000017500000000000011645102474032472 5ustar tonytony././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/src/test/java/charsetProvider/surefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/src/test/ja0000755000175000017500000000000011645102474032472 5ustar tonytony././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/src/test/java/charsetProvider/MSUREFIRE77TestCase.javasurefire-2.10/surefire-integration-tests/src/test/resources/surefire-162-charsetProvider/src/test/ja0000644000175000017500000000065310766555661032515 0ustar tonytonypackage charsetProvider; import java.io.UnsupportedEncodingException; import junit.framework.TestCase; public class MSUREFIRE77TestCase extends TestCase { public void testThatICanUseCharsets() throws UnsupportedEncodingException { System.out.println( new String("foo".getBytes(), "GSM_0338")); } public static void main(String[] args) throws Exception { new MSUREFIRE77TestCase().testThatICanUseCharsets(); } } surefire-2.10/surefire-integration-tests/src/test/resources/runOrder/0000755000175000017500000000000011645102474024715 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/runOrder/pom.xml0000644000175000017500000000411611504477250026235 0ustar tonytony 4.0.0 org.apache.maven.plugins.surefire runOrder 1.0-SNAPSHOT Test for runOrder junit junit 4.8.1 test org.apache.maven.plugins maven-surefire-plugin ${surefire.version} once ${runOrder} surefire-2.10/surefire-integration-tests/src/test/resources/runOrder/src/0000755000175000017500000000000011645102474025504 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/runOrder/src/test/0000755000175000017500000000000011645102474026463 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/runOrder/src/test/java/0000755000175000017500000000000011645102474027404 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/runOrder/src/test/java/junit/0000755000175000017500000000000011645102474030535 5ustar tonytonysurefire-2.10/surefire-integration-tests/src/test/resources/runOrder/src/test/java/junit/runOrder/0000755000175000017500000000000011645102474032335 5ustar tonytony././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/runOrder/src/test/java/junit/runOrder/TestC.javasurefire-2.10/surefire-integration-tests/src/test/resources/runOrder/src/test/java/junit/runOrder/Te0000644000175000017500000000025311501702570032622 0ustar tonytonypackage junit.runOrder; import junit.framework.TestCase; public class TestC extends TestCase { public void testTwo() { System.out.println("TC"); } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/runOrder/src/test/java/junit/runOrder/TestA.javasurefire-2.10/surefire-integration-tests/src/test/resources/runOrder/src/test/java/junit/runOrder/Te0000644000175000017500000000025311501702570032622 0ustar tonytonypackage junit.runOrder; import junit.framework.TestCase; public class TestA extends TestCase { public void testTwo() { System.out.println("TA"); } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-integration-tests/src/test/resources/runOrder/src/test/java/junit/runOrder/TestB.javasurefire-2.10/surefire-integration-tests/src/test/resources/runOrder/src/test/java/junit/runOrder/Te0000644000175000017500000000025311501702570032622 0ustar tonytonypackage junit.runOrder; import junit.framework.TestCase; public class TestB extends TestCase { public void testTwo() { System.out.println("TB"); } } surefire-2.10/surefire-booter/0000755000175000017500000000000011645102475015145 5ustar tonytonysurefire-2.10/surefire-booter/pom.xml0000644000175000017500000000572511640163725016473 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire 2.10 ../pom.xml surefire-booter SureFire Booter org.apache.maven.surefire surefire-api maven-surefire-plugin org.apache.maven.surefire surefire-shadefire ${project.version} maven-compiler-plugin 1.3 1.3 org.apache.maven.plugins maven-shade-plugin package shade true commons-lang:commons-lang org.apache.commons.lang org.apache.maven.surefire.shade.org.apache.commons.lang surefire-2.10/surefire-booter/src/0000755000175000017500000000000011645102475015734 5ustar tonytonysurefire-2.10/surefire-booter/src/test/0000755000175000017500000000000011645102475016713 5ustar tonytonysurefire-2.10/surefire-booter/src/test/java/0000755000175000017500000000000011645102475017634 5ustar tonytonysurefire-2.10/surefire-booter/src/test/java/org/0000755000175000017500000000000011645102475020423 5ustar tonytonysurefire-2.10/surefire-booter/src/test/java/org/apache/0000755000175000017500000000000011645102475021644 5ustar tonytonysurefire-2.10/surefire-booter/src/test/java/org/apache/maven/0000755000175000017500000000000011645102475022752 5ustar tonytonysurefire-2.10/surefire-booter/src/test/java/org/apache/maven/surefire/0000755000175000017500000000000011645102475024576 5ustar tonytonysurefire-2.10/surefire-booter/src/test/java/org/apache/maven/surefire/booter/0000755000175000017500000000000011645102475026070 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-booter/src/test/java/org/apache/maven/surefire/booter/PropertiesWrapperTest.javasurefire-2.10/surefire-booter/src/test/java/org/apache/maven/surefire/booter/PropertiesWrapperTest.j0000644000175000017500000000717011533741620032602 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.util.ArrayList; import java.util.List; import java.util.Properties; import junit.framework.TestCase; /** * @author Kristian Rosenvold */ public class PropertiesWrapperTest extends TestCase { public void testAddList() throws Exception { Properties props = new Properties(); PropertiesWrapper propertiesWrapper = new PropertiesWrapper( props ); List items = new ArrayList(); items.add( "String1" ); items.add( "String2,String3" ); items.add( "String4" ); items.add( "String5," ); propertiesWrapper.addList( items, "Test" ); final List test = propertiesWrapper.getStringList( "Test" ); assertEquals( 5, test.size() ); assertEquals( "String5", test.get( 4 ) ); assertEquals( "String3", test.get( 2 ) ); assertEquals( "String2", test.get( 1 ) ); } private static final String DUMMY_PREFIX = "dummyPrefix"; private static final String FIRST_ELEMENT = "foo0"; private static final String SECOND_ELEMENT = "foo1"; private final Properties properties = new Properties(); private final PropertiesWrapper mapper = new PropertiesWrapper( properties ); private final Classpath classpathWithTwoElements = createClasspathWithTwoElements(); public void testReadFromProperties() throws Exception { properties.put( DUMMY_PREFIX + "0", FIRST_ELEMENT ); properties.put( DUMMY_PREFIX + "1", SECOND_ELEMENT ); Classpath recreatedClasspath = readClasspathFromProperties(); assertEquals( classpathWithTwoElements, recreatedClasspath ); } public void testReadFromPropertiesWithEmptyProperties() throws Exception { Classpath recreatedClasspath = readClasspathFromProperties(); assertTrue( recreatedClasspath.getClassPath().isEmpty() ); } public void testWriteToProperties() throws Exception { mapper.setClasspath( DUMMY_PREFIX, classpathWithTwoElements); assertEquals( FIRST_ELEMENT, mapper.getProperty( DUMMY_PREFIX + "0" ) ); assertEquals( SECOND_ELEMENT, mapper.getProperty( DUMMY_PREFIX + "1" ) ); } public void testRoundtrip() throws Exception { mapper.setClasspath( DUMMY_PREFIX, classpathWithTwoElements); Classpath recreatedClasspath = readClasspathFromProperties(); assertEquals( classpathWithTwoElements, recreatedClasspath ); } private Classpath createClasspathWithTwoElements() { Classpath classpath = new Classpath(); classpath.addClassPathElementUrl( FIRST_ELEMENT ); classpath.addClassPathElementUrl( SECOND_ELEMENT ); return classpath; } private Classpath readClasspathFromProperties() { return mapper.getClasspath( DUMMY_PREFIX); } } surefire-2.10/surefire-booter/src/test/java/org/apache/maven/surefire/booter/output/0000755000175000017500000000000011645102475027430 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.javasurefire-2.10/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.j0000644000175000017500000001166611556104214032541 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor lice nse 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. */ import java.io.File; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.Properties; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.testset.DirectoryScannerParameters; import org.apache.maven.surefire.testset.TestArtifactInfo; import org.apache.maven.surefire.testset.TestRequest; import org.apache.maven.surefire.util.NestedRuntimeException; import junit.framework.TestCase; /** * @author Kristian Rosenvold */ public class SurefireReflectorTest extends TestCase { public void testSetDirectoryScannerParameters() throws Exception { SurefireReflector surefireReflector = getReflector(); Object foo = getFoo(); DirectoryScannerParameters directoryScannerParameters = new DirectoryScannerParameters( new File( "ABC" ), new ArrayList(), new ArrayList(), Boolean.FALSE, "hourly" ); surefireReflector.setDirectoryScannerParameters( foo, directoryScannerParameters ); assertTrue( isCalled( foo ).booleanValue() ); } public void testTestSuiteDefinition() throws Exception { SurefireReflector surefireReflector = getReflector(); Object foo = getFoo(); TestRequest testSuiteDefinition = new TestRequest( Arrays.asList( new File[]{ new File( "file1" ), new File( "file2" ) } ), new File( "TestSOurce" ), "aUserRequestedTest", "aMethodRequested" ); surefireReflector.setTestSuiteDefinition( foo, testSuiteDefinition ); assertTrue( isCalled( foo ).booleanValue() ); } public void testProviderProperties() throws Exception { SurefireReflector surefireReflector = getReflector(); Object foo = getFoo(); surefireReflector.setProviderProperties( foo, new Properties() ); assertTrue( isCalled( foo ).booleanValue() ); } public void testReporterConfiguration() throws Exception { SurefireReflector surefireReflector = getReflector(); Object foo = getFoo(); ReporterConfiguration reporterConfiguration = getReporterConfiguration(); surefireReflector.setReporterConfigurationAware( foo, reporterConfiguration ); assertTrue( isCalled( foo ).booleanValue() ); } private ReporterConfiguration getReporterConfiguration() { return new ReporterConfiguration( new File( "CDE" ), Boolean.TRUE ); } public void testTestClassLoaderAware() throws Exception { SurefireReflector surefireReflector = getReflector(); Object foo = getFoo(); surefireReflector.setTestClassLoader( foo, getClass().getClassLoader(), getClass().getClassLoader() ); assertTrue( isCalled( foo ).booleanValue() ); } public void testArtifactInfoAware() throws Exception { SurefireReflector surefireReflector = getReflector(); Object foo = getFoo(); TestArtifactInfo testArtifactInfo = new TestArtifactInfo( "12.3", "test" ); surefireReflector.setTestArtifactInfo( foo, testArtifactInfo ); assertTrue( isCalled( foo ).booleanValue() ); } private SurefireReflector getReflector() { return new SurefireReflector( this.getClass().getClassLoader() ); } public Object getFoo() { // Todo: Setup a different classloader so we can really test crossing return new Foo(); } private Boolean isCalled( Object foo ) { final Method isCalled; try { isCalled = foo.getClass().getMethod( "isCalled", new Class[0] ); return (Boolean) isCalled.invoke( foo, new Object[0] ); } catch ( IllegalAccessException e ) { throw new NestedRuntimeException( e ); } catch ( InvocationTargetException e ) { throw new NestedRuntimeException( e ); } catch ( NoSuchMethodException e ) { throw new NestedRuntimeException( e ); } } } surefire-2.10/surefire-booter/src/test/java/org/apache/maven/surefire/booter/Foo.java0000644000175000017500000000564311557340256027471 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.util.Properties; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.testset.DirectoryScannerParameters; import org.apache.maven.surefire.testset.TestArtifactInfo; import org.apache.maven.surefire.testset.TestRequest; /** * @author Kristian Rosenvold */ public class Foo implements DirectoryScannerParametersAware, TestRequestAware, ProviderPropertiesAware, ReporterConfigurationAware, SurefireClassLoadersAware, TestArtifactInfoAware { DirectoryScannerParameters directoryScannerParameters; TestRequest testSuiteDefinition; Properties providerProperties; ReporterConfiguration reporterConfiguration; ClassLoader surefireClassLoader; ClassLoader testClassLoader; TestRequest testRequest; TestArtifactInfo testArtifactInfo; boolean called = false; public void setDirectoryScannerParameters( DirectoryScannerParameters directoryScanner ) { this.directoryScannerParameters = directoryScanner; this.called = true; } /** @noinspection UnusedDeclaration * @return true if it has been callsed */ public Boolean isCalled() { return Boolean.valueOf( called); } public void setProviderProperties( Properties providerProperties ) { this.providerProperties = providerProperties; this.called = true; } public void setReporterConfiguration( ReporterConfiguration reporterConfiguration ) { this.reporterConfiguration = reporterConfiguration; this.called = true; } public void setClassLoaders( ClassLoader surefireClassLoader, ClassLoader testClassLoader ) { this.testClassLoader = testClassLoader; this.surefireClassLoader = surefireClassLoader; this.called = true; } public void setTestRequest( TestRequest testRequest1 ) { this.testRequest = testRequest1; this.called = true; } public void setTestArtifactInfo( TestArtifactInfo testArtifactInfo ) { this.testArtifactInfo = testArtifactInfo; this.called = true; } } surefire-2.10/surefire-booter/src/test/java/org/apache/maven/surefire/booter/ClasspathTest.java0000644000175000017500000001336011533742067031523 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.io.File; import java.util.List; import junit.framework.TestCase; /** * @author Kristian Rosenvold */ public class ClasspathTest extends TestCase { private static final String DUMMY_PROPERTY_NAME = "dummyProperty"; private static final String DUMMY_URL_1 = "foo.jar"; private static final String DUMMY_URL_2 = "bar.jar"; public void testShouldWriteEmptyPropertyForEmptyClasspath() throws Exception { Classpath classpath = new Classpath(); classpath.writeToSystemProperty( DUMMY_PROPERTY_NAME ); assertEquals( "", System.getProperty( DUMMY_PROPERTY_NAME ) ); } public void testShouldWriteSeparatedElementsAsSystemProperty() throws Exception { Classpath classpath = new Classpath(); classpath.addClassPathElementUrl( DUMMY_URL_1 ); classpath.addClassPathElementUrl( DUMMY_URL_2 ); classpath.writeToSystemProperty( DUMMY_PROPERTY_NAME ); assertEquals( DUMMY_URL_1 + File.pathSeparatorChar + DUMMY_URL_2 + File.pathSeparatorChar, System.getProperty( DUMMY_PROPERTY_NAME ) ); } public void testShouldAddNoDuplicateElements() { Classpath classpath = new Classpath(); classpath.addClassPathElementUrl( DUMMY_URL_1 ); classpath.addClassPathElementUrl( DUMMY_URL_1 ); assertClasspathConsistsOfElements( classpath, new String[] { DUMMY_URL_1 } ); } public void testGetAsUrlList() throws Exception { final List asUrlList = createClasspathWithTwoElements().getAsUrlList(); assertEquals( 2, asUrlList.size() ); assertTrue( asUrlList.get( 0 ).toString().endsWith( DUMMY_URL_1 ) ); assertTrue( asUrlList.get( 1 ).toString().endsWith( DUMMY_URL_2 ) ); } public void testShouldJoinTwoNullClasspaths() { Classpath joinedClasspath = Classpath.join( null, null ); assertEmptyClasspath( joinedClasspath ); } public void testShouldHaveAllElementsAfterJoiningTwoDifferentClasspaths() throws Exception { Classpath firstClasspath = new Classpath(); firstClasspath.addClassPathElementUrl( DUMMY_URL_1 ); Classpath secondClasspath = new Classpath(); secondClasspath.addClassPathElementUrl( DUMMY_URL_2 ); Classpath joinedClasspath = Classpath.join( firstClasspath, secondClasspath ); assertClasspathConsistsOfElements( joinedClasspath, new String[] { DUMMY_URL_1, DUMMY_URL_2 } ); } public void testShouldNotHaveDuplicatesAfterJoiningTowClasspathsWithEqualElements() throws Exception { Classpath firstClasspath = new Classpath(); firstClasspath.addClassPathElementUrl( DUMMY_URL_1 ); Classpath secondClasspath = new Classpath(); secondClasspath.addClassPathElementUrl( DUMMY_URL_1 ); Classpath joinedClasspath = Classpath.join( firstClasspath, secondClasspath ); assertClasspathConsistsOfElements( joinedClasspath, new String[] { DUMMY_URL_1 } ); } public void testShouldNotBeAbleToRemoveElement() throws Exception { try { Classpath classpath = createClasspathWithTwoElements(); classpath.getClassPath().remove( 0 ); } catch (java.lang.UnsupportedOperationException ignore){ } } private void assertClasspathConsistsOfElements( Classpath classpath, String[] elements ) { List classpathElements = classpath.getClassPath(); for ( int i = 0; i < elements.length; ++i ) { assertTrue( "The element '" + elements[i] + " is missing.", classpathElements.contains( elements[i] ) ); } assertEquals( "Wrong number of classpath elements.", elements.length, classpathElements.size() ); } private void assertEmptyClasspath( Classpath classpath ) { List classpathElements = classpath.getClassPath(); assertEquals( "Wrong number of classpath elements.", 0, classpathElements.size() ); } private Classpath createClasspathWithTwoElements() { Classpath classpath = new Classpath(); classpath.addClassPathElementUrl( DUMMY_URL_1 ); classpath.addClassPathElementUrl( DUMMY_URL_2 ); return classpath; } public void testShouldThrowIllegalArgumentExceptionWhenNullIsAddedAsClassPathElementUrl() throws Exception { Classpath classpath = new Classpath(); try { classpath.addClassPathElementUrl( null ); fail("IllegalArgumentException not thrown."); } catch (IllegalArgumentException expected) { } } public void testShouldNotAddNullAsClassPathElementUrl() throws Exception { Classpath classpath = new Classpath(); try { classpath.addClassPathElementUrl( null ); } catch (IllegalArgumentException ignored) { } assertEmptyClasspath( classpath ); } } surefire-2.10/surefire-booter/src/main/0000755000175000017500000000000011645102475016660 5ustar tonytonysurefire-2.10/surefire-booter/src/main/java/0000755000175000017500000000000011645102475017601 5ustar tonytonysurefire-2.10/surefire-booter/src/main/java/org/0000755000175000017500000000000011645102475020370 5ustar tonytonysurefire-2.10/surefire-booter/src/main/java/org/apache/0000755000175000017500000000000011645102475021611 5ustar tonytonysurefire-2.10/surefire-booter/src/main/java/org/apache/maven/0000755000175000017500000000000011645102475022717 5ustar tonytonysurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/0000755000175000017500000000000011645102475024543 5ustar tonytonysurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/0000755000175000017500000000000011645102475026035 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterDeserializer.javasurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterDeserializer.java0000644000175000017500000001151311625457076032506 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.testset.DirectoryScannerParameters; import org.apache.maven.surefire.testset.TestArtifactInfo; import org.apache.maven.surefire.testset.TestRequest; /** * Knows how to serialize and deserialize the booter configuration. *

* The internal serialization format is through a properties file. The long-term goal of this * class is not to expose this implementation information to its clients. This still leaks somewhat, * and there are some cases where properties are being accessed as "Properties" instead of * more representative domain objects. *

* * @author Jason van Zyl * @author Emmanuel Venisse * @author Kristian Rosenvold * @version $Id$ */ public class BooterDeserializer implements BooterConstants { private final PropertiesWrapper properties; public BooterDeserializer( InputStream inputStream ) throws IOException { properties = SystemPropertyManager.loadProperties( inputStream ); } public ProviderConfiguration deserialize() { final File reportsDirectory = new File( properties.getProperty( REPORTSDIRECTORY ) ); final String testNgVersion = properties.getProperty( TESTARTIFACT_VERSION ); final String testArtifactClassifier = properties.getProperty( TESTARTIFACT_CLASSIFIER ); final TypeEncodedValue typeEncodedTestForFork = properties.getTypeEncodedValue( FORKTESTSET ); final String requestedTest = properties.getProperty( REQUESTEDTEST ); final String requestedTestMethod = properties.getProperty( REQUESTEDTESTMETHOD ); final File sourceDirectory = properties.getFileProperty( SOURCE_DIRECTORY ); final List excludesList = properties.getStringList( EXCLUDES_PROPERTY_PREFIX ); final List includesList = properties.getStringList( INCLUDES_PROPERTY_PREFIX ); final List testSuiteXmlFiles = properties.getStringList( TEST_SUITE_XML_FILES ); final File testClassesDirectory = properties.getFileProperty( TEST_CLASSES_DIRECTORY ); final String runOrder = properties.getProperty( RUN_ORDER ); DirectoryScannerParameters dirScannerParams = new DirectoryScannerParameters( testClassesDirectory, includesList, excludesList, properties.getBooleanObjectProperty( FAILIFNOTESTS ), runOrder ); TestArtifactInfo testNg = new TestArtifactInfo( testNgVersion, testArtifactClassifier ); TestRequest testSuiteDefinition = new TestRequest( testSuiteXmlFiles, sourceDirectory, requestedTest, requestedTestMethod ); ReporterConfiguration reporterConfiguration = new ReporterConfiguration( reportsDirectory, properties.getBooleanObjectProperty( ISTRIMSTACKTRACE ) ); return new ProviderConfiguration( dirScannerParams, properties.getBooleanProperty( FAILIFNOTESTS ), reporterConfiguration, testNg, testSuiteDefinition, properties.getProperties(), typeEncodedTestForFork ); } public StartupConfiguration getProviderConfiguration() { boolean useSystemClassLoader = properties.getBooleanProperty( USESYSTEMCLASSLOADER ); boolean useManifestOnlyJar = properties.getBooleanProperty( USEMANIFESTONLYJAR ); String providerConfiguration = properties.getProperty( PROVIDER_CONFIGURATION ); String forkMode = properties.getProperty( FORKMODE ); ClassLoaderConfiguration classLoaderConfiguration = new ClassLoaderConfiguration( useSystemClassLoader, useManifestOnlyJar ); ClasspathConfiguration classpathConfiguration = new ClasspathConfiguration( properties ); return StartupConfiguration.inForkedVm( providerConfiguration, classpathConfiguration, classLoaderConfiguration, forkMode ); } } surefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/TypeEncodedValue.java0000644000175000017500000000663311625457076032120 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.io.ByteArrayInputStream; import java.io.File; import java.util.Properties; import org.apache.maven.surefire.util.NestedRuntimeException; import org.apache.maven.surefire.util.ReflectionUtils; /** * @author Kristian Rosenvold */ public class TypeEncodedValue { String type; String value; public TypeEncodedValue( String type, String value ) { this.type = type; this.value = value; } public String getType() { return type; } public boolean isTypeClass() { return Class.class.getName().equals( type ); } public Object getDecodedValue() { if ( type.trim().length() == 0 ) { return null; } else if ( type.equals( String.class.getName() ) ) { return value; } else if ( isTypeClass() ) { return ReflectionUtils.loadClass( Thread.currentThread().getContextClassLoader(), value ); } else if ( type.equals( File.class.getName() ) ) { return new File( value ); } else if ( type.equals( Boolean.class.getName() ) ) { return Boolean.valueOf( value ); } else if ( type.equals( Integer.class.getName() ) ) { return Integer.valueOf( value ); } else if ( type.equals( Properties.class.getName() ) ) { final Properties result = new Properties(); try { ByteArrayInputStream bais = new ByteArrayInputStream( value.getBytes( "8859_1" ) ); result.load( bais ); } catch ( Exception e ) { throw new NestedRuntimeException( "bug in property conversion", e ); } return result; } else { throw new IllegalArgumentException( "Unknown parameter type: " + type ); } } public boolean equals( Object o ) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; } TypeEncodedValue that = (TypeEncodedValue) o; if ( type != null ? !type.equals( that.type ) : that.type != null ) { return false; } return !( value != null ? !value.equals( that.value ) : that.value != null ); } public int hashCode() { int result = type != null ? type.hashCode() : 0; result = 31 * result + ( value != null ? value.hashCode() : 0 ); return result; } } surefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java0000644000175000017500000001155311560334164032025 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.lang.reflect.Method; import java.util.Iterator; import org.apache.maven.surefire.providerapi.SurefireProvider; import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.surefire.testset.TestSetFailedException; import org.apache.maven.surefire.util.ReflectionUtils; /** * Creates the surefire provider. *

* * @author Kristian Rosenvold */ public class ProviderFactory { private final StartupConfiguration startupConfiguration; private final ProviderConfiguration providerConfiguration; private final ClassLoader surefireClassLoader; private final ClassLoader testsClassLoader; private final SurefireReflector surefireReflector; private final Object reporterManagerFactory; private static final Class[] invokeParamaters = new Class[]{ Object.class }; public ProviderFactory( StartupConfiguration startupConfiguration, ProviderConfiguration providerConfiguration, ClassLoader surefireClassLoader, ClassLoader testsClassLoader, Object reporterManagerFactory ) { this.providerConfiguration = providerConfiguration; this.surefireClassLoader = surefireClassLoader; this.startupConfiguration = startupConfiguration; this.surefireReflector = new SurefireReflector( surefireClassLoader ); this.testsClassLoader = testsClassLoader; this.reporterManagerFactory = reporterManagerFactory; } public SurefireProvider createProvider() { ClassLoader context = java.lang.Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader( surefireClassLoader ); StartupConfiguration starterConfiguration = startupConfiguration; final Object o = surefireReflector.createBooterConfiguration( surefireClassLoader, reporterManagerFactory ); surefireReflector.setTestSuiteDefinitionAware( o, providerConfiguration.getTestSuiteDefinition() ); surefireReflector.setProviderPropertiesAware( o, providerConfiguration.getProviderProperties() ); surefireReflector.setReporterConfigurationAware( o, providerConfiguration.getReporterConfiguration() ); surefireReflector.setTestClassLoaderAware( o, surefireClassLoader, testsClassLoader ); surefireReflector.setTestArtifactInfoAware( o, providerConfiguration.getTestArtifact() ); surefireReflector.setIfDirScannerAware( o, providerConfiguration.getDirScannerParams() ); Object provider = surefireReflector.instantiateProvider( starterConfiguration.getProviderClassName(), o ); Thread.currentThread().setContextClassLoader( context ); return new ProviderProxy( provider ); } private class ProviderProxy implements SurefireProvider { private final Object providerInOtherClassLoader; private ProviderProxy( Object providerInOtherClassLoader ) { this.providerInOtherClassLoader = providerInOtherClassLoader; } public Iterator getSuites() { return (Iterator) ReflectionUtils.invokeGetter( providerInOtherClassLoader, "getSuites" ); } public RunResult invoke( Object forkTestSet ) throws TestSetFailedException, ReporterException { final Method invoke = ReflectionUtils.getMethod( providerInOtherClassLoader.getClass(), "invoke", invokeParamaters ); final Object result = ReflectionUtils.invokeMethodWithArray( providerInOtherClassLoader, invoke, new Object[]{ forkTestSet } ); return (RunResult) surefireReflector.convertIfRunResult( result ); } public void cancel() { final Method invoke = ReflectionUtils.getMethod( providerInOtherClassLoader.getClass(), "cancel", new Class[]{ } ); ReflectionUtils.invokeMethodWithArray( providerInOtherClassLoader, invoke, null ); } } } surefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterConstants.java0000644000175000017500000000356511557330334032037 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ /** * Constants used by the serializer/deserializer * * @author Kristian Rosenvold */ public interface BooterConstants { String INCLUDES_PROPERTY_PREFIX = "includes"; String EXCLUDES_PROPERTY_PREFIX = "excludes"; String USESYSTEMCLASSLOADER = "useSystemClassLoader"; String USEMANIFESTONLYJAR = "useManifestOnlyJar"; String FAILIFNOTESTS = "failIfNoTests"; String ISTRIMSTACKTRACE = "isTrimStackTrace"; String REPORTSDIRECTORY = "reportsDirectory"; String FORKMODE = "forkMode"; String TESTARTIFACT_VERSION = "testFwJarVersion"; String TESTARTIFACT_CLASSIFIER = "testFwJarClassifier"; String REQUESTEDTEST = "requestedTest"; String REQUESTEDTESTMETHOD = "requestedTestMethod"; String SOURCE_DIRECTORY = "testSuiteDefinitionTestSourceDirectory"; String TEST_CLASSES_DIRECTORY = "testClassesDirectory"; String RUN_ORDER = "runOrder"; String TEST_SUITE_XML_FILES = "testSuiteXmlFiles"; String PROVIDER_CONFIGURATION = "providerConfiguration"; String FORKTESTSET = "forkTestSet"; } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/StartupConfiguration.javasurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/StartupConfiguration.ja0000644000175000017500000000607511557330334032552 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ /** * Configuration that is used by the SurefireStarter but does not make it into the provider itself. * * @author Kristian Rosenvold */ public class StartupConfiguration { private final String providerClassName; private final ClasspathConfiguration classpathConfiguration; private final ClassLoaderConfiguration classLoaderConfiguration; private final boolean isForkRequested; private final boolean isInForkedVm; public StartupConfiguration( String providerClassName, ClasspathConfiguration classpathConfiguration, ClassLoaderConfiguration classLoaderConfiguration, String forkMode, boolean inForkedVm ) { this.providerClassName = providerClassName; this.classpathConfiguration = classpathConfiguration; this.classLoaderConfiguration = classLoaderConfiguration; isForkRequested = !"never".equals( forkMode ); isInForkedVm = inForkedVm; } public static StartupConfiguration inForkedVm( String providerClassName, ClasspathConfiguration classpathConfiguration, ClassLoaderConfiguration classLoaderConfiguration, String forkMode ) { return new StartupConfiguration( providerClassName, classpathConfiguration, classLoaderConfiguration, forkMode, true ); } public ClasspathConfiguration getClasspathConfiguration() { return classpathConfiguration; } public boolean useSystemClassLoader() { // todo; I am not totally convinced this logic is as simple as it could be return classLoaderConfiguration.isUseSystemClassLoader() && ( isInForkedVm || isForkRequested ); } public boolean isManifestOnlyJarRequestedAndUsable() { return classLoaderConfiguration.isManifestOnlyJarRequestedAndUsable(); } public String getProviderClassName() { return providerClassName; } public ClassLoaderConfiguration getClassLoaderConfiguration() { return classLoaderConfiguration; } public boolean isShadefire() { return providerClassName.startsWith( "org.apache.maven.surefire.shadefire" ); } } surefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/Classpath.java0000644000175000017500000000723011533742067030627 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import org.apache.maven.surefire.util.UrlUtils; import java.io.File; import java.net.MalformedURLException; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; /** * An ordered list of classpath elements with set behaviour * * @author Kristian Rosenvold */ public class Classpath { public static Classpath join( Classpath firstClasspath, Classpath secondClasspath ) { Classpath joinedClasspath = new Classpath(); joinedClasspath.addElementsOfClasspath( firstClasspath ); joinedClasspath.addElementsOfClasspath( secondClasspath ); return joinedClasspath; } private final List elements = new ArrayList(); public Classpath() { } public Classpath( List elements ) { this(); addElements( elements ); } public void addClassPathElementUrl( String path ) { if ( path == null ) { throw new IllegalArgumentException( "Null is not a valid class path element url." ); } else if ( !elements.contains( path ) ) { elements.add( path ); } } private void addElements( List additionalElements ) { for ( Iterator it = additionalElements.iterator(); it.hasNext(); ) { String element = (String) it.next(); addClassPathElementUrl( element ); } } private void addElementsOfClasspath( Classpath otherClasspath ) { if ( otherClasspath != null ) { addElements( otherClasspath.elements ); } } public List getClassPath() { return Collections.unmodifiableList( elements ); } public List getAsUrlList() throws MalformedURLException { List urls = new ArrayList(); for ( Iterator i = elements.iterator(); i.hasNext(); ) { String url = (String) i.next(); File f = new File( url ); urls.add( UrlUtils.getURL( f ) ); } return urls; } public void writeToSystemProperty( String propertyName ) { StringBuffer sb = new StringBuffer(); for ( Iterator i = elements.iterator(); i.hasNext(); ) { sb.append( (String) i.next() ).append( File.pathSeparatorChar ); } System.setProperty( propertyName, sb.toString() ); } public boolean equals( Object o ) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; } Classpath classpath = (Classpath) o; return !( elements != null ? !elements.equals( classpath.elements ) : classpath.elements != null ); } public int hashCode() { return elements != null ? elements.hashCode() : 0; } } surefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireStarter.java0000644000175000017500000001762011625457076032047 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.io.PrintStream; import org.apache.maven.surefire.providerapi.SurefireProvider; import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.surefire.testset.TestSetFailedException; import org.apache.maven.surefire.util.NestedRuntimeException; import org.apache.maven.surefire.util.ReflectionUtils; /** * Invokes surefire with the correct classloader setup. *

* This part of the booter is always guaranteed to be in the * same vm as the tests will be run in. * * @author Jason van Zyl * @author Brett Porter * @author Emmanuel Venisse * @author Dan Fabulich * @author Kristian Rosenvold * @version $Id$ */ public class SurefireStarter { private final ProviderConfiguration providerConfiguration; private final StartupConfiguration startupConfiguration; private final static String SUREFIRE_TEST_CLASSPATH = "surefire.test.class.path"; private final StartupReportConfiguration startupReportConfiguration; public SurefireStarter( StartupConfiguration startupConfiguration, ProviderConfiguration providerConfiguration, StartupReportConfiguration startupReportConfiguration ) { this.providerConfiguration = providerConfiguration; this.startupConfiguration = startupConfiguration; this.startupReportConfiguration = startupReportConfiguration; } public RunResult runSuitesInProcessWhenForked( TypeEncodedValue testSet ) throws SurefireExecutionException { writeSurefireTestClasspathProperty(); final ClasspathConfiguration classpathConfiguration = startupConfiguration.getClasspathConfiguration(); // todo: Find out.... // Why is the classloader structure created differently when a testSet is specified ? // Smells like a legacy bug. Need to check issue tracker. ClassLoader testsClassLoader = classpathConfiguration.createTestClassLoaderConditionallySystem( startupConfiguration.useSystemClassLoader() ); ClassLoader surefireClassLoader = classpathConfiguration.createSurefireClassLoader( testsClassLoader ); SurefireReflector surefireReflector = new SurefireReflector( surefireClassLoader ); final Object forkingReporterFactory = createForkingReporterFactory( surefireReflector ); Object test = testSet.getDecodedValue(); return invokeProvider( test, testsClassLoader, surefireClassLoader, forkingReporterFactory ); } private Object createForkingReporterFactory( SurefireReflector surefireReflector ) { final Boolean trimStackTrace = this.providerConfiguration.getReporterConfiguration().isTrimStackTrace(); final PrintStream originalSystemOut = this.providerConfiguration.getReporterConfiguration().getOriginalSystemOut(); return surefireReflector.createForkingReporterFactory( trimStackTrace, originalSystemOut ); } // todo: Fix duplication in this method and runSuitesInProcess // This should be fixed "at a higher level", because this whole way // of organizing the code stinks. public RunResult runSuitesInProcessWhenForked() throws SurefireExecutionException { ClassLoader testsClassLoader = createInProcessTestClassLoader(); ClassLoader surefireClassLoader = createSurefireClassloader( testsClassLoader ); SurefireReflector surefireReflector = new SurefireReflector( surefireClassLoader ); final Object factory = createForkingReporterFactory( surefireReflector ); return invokeProvider( null, testsClassLoader, surefireClassLoader, factory ); } public RunResult runSuitesInProcess() throws SurefireExecutionException { // The test classloader must be constructed first to avoid issues with commons-logging until we properly // separate the TestNG classloader ClassLoader testsClassLoader = createInProcessTestClassLoader(); ClassLoader surefireClassLoader = createSurefireClassloader( testsClassLoader ); SurefireReflector surefireReflector = new SurefireReflector( surefireClassLoader ); final Object factory = surefireReflector.createReportingReporterFactory( startupReportConfiguration ); return invokeProvider( null, testsClassLoader, surefireClassLoader, factory ); } private ClassLoader createSurefireClassloader( ClassLoader testsClassLoader ) throws SurefireExecutionException { final ClasspathConfiguration classpathConfiguration = startupConfiguration.getClasspathConfiguration(); return classpathConfiguration.createSurefireClassLoader( testsClassLoader ); } private ClassLoader createInProcessTestClassLoader() throws SurefireExecutionException { writeSurefireTestClasspathProperty(); ClasspathConfiguration classpathConfiguration = startupConfiguration.getClasspathConfiguration(); if ( startupConfiguration.isManifestOnlyJarRequestedAndUsable() ) { ClassLoader testsClassLoader = getClass().getClassLoader(); // ClassLoader.getSystemClassLoader() // SUREFIRE-459, trick the app under test into thinking its classpath was conventional // (instead of a single manifest-only jar) System.setProperty( "surefire.real.class.path", System.getProperty( "java.class.path" ) ); classpathConfiguration.getTestClasspath().writeToSystemProperty( "java.class.path" ); return testsClassLoader; } else { return classpathConfiguration.createTestClassLoader(); } } private void writeSurefireTestClasspathProperty() { ClasspathConfiguration classpathConfiguration = startupConfiguration.getClasspathConfiguration(); classpathConfiguration.getTestClasspath().writeToSystemProperty( SUREFIRE_TEST_CLASSPATH ); } private RunResult invokeProvider( Object testSet, ClassLoader testsClassLoader, ClassLoader surefireClassLoader, Object factory ) { final PrintStream orgSystemOut = System.out; final PrintStream orgSystemErr = System.err; // Note that System.out/System.err are also read in the "ReporterConfiguration" instatiation // in createProvider below. These are the same values as here. ProviderFactory providerFactory = new ProviderFactory( startupConfiguration, providerConfiguration, surefireClassLoader, testsClassLoader, factory ); final SurefireProvider provider = providerFactory.createProvider(); try { return provider.invoke( testSet ); } catch ( TestSetFailedException e ) { throw new NestedRuntimeException( e ); } catch ( ReporterException e ) { throw new NestedRuntimeException( e ); } finally { if ( System.getSecurityManager() == null ) { System.setOut( orgSystemOut ); System.setErr( orgSystemErr ); } } } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClassLoaderConfiguration.javasurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClassLoaderConfiguratio0000644000175000017500000000325211500236575032527 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ /** * Configuration for forking tests. * * @author Brett Porter * @author Kenney Westerhof */ public class ClassLoaderConfiguration { private final boolean useSystemClassLoader; private final boolean useManifestOnlyJar; public ClassLoaderConfiguration( boolean useSystemClassLoader, boolean useManifestOnlyJar ) { this.useSystemClassLoader = useSystemClassLoader; this.useManifestOnlyJar = useManifestOnlyJar; } public boolean isUseSystemClassLoader() { return useSystemClassLoader; } public boolean isUseManifestOnlyJar() { return useManifestOnlyJar; } public boolean isManifestOnlyJarRequestedAndUsable() { return isUseSystemClassLoader() && useManifestOnlyJar; } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootsurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooterForkException.javasurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooterForkExcep0000644000175000017500000000240011557245722032527 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import org.apache.maven.surefire.util.NestedCheckedException; /** * Encapsulates exceptions thrown during Surefire forking. * * @version $Id: SurefireBooterForkException.java 1098271 2011-05-01 12:02:26Z krosenvold $ */ public class SurefireBooterForkException extends NestedCheckedException { public SurefireBooterForkException( String message, Throwable cause ) { super( message, cause ); } } surefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/output/0000755000175000017500000000000011645102475027375 5ustar tonytony././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClasspathConfiguration.javasurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ClasspathConfiguration.0000644000175000017500000001432211557245722032517 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.MalformedURLException; import java.net.URL; import java.util.Iterator; import java.util.List; import org.apache.maven.surefire.util.NestedRuntimeException; /** * Represents the classpaths for the BooterConfiguration. *

* * @author Jason van Zyl * @author Emmanuel Venisse * @author Kristian Rosenvold * @version $Id$ */ public class ClasspathConfiguration { private static final String CHILD_DELEGATION = "childDelegation"; private static final String ENABLE_ASSERTIONS = "enableAssertions"; private static final String CLASSPATH = "classPathUrl."; private static final String SUREFIRE_CLASSPATH = "surefireClassPathUrl."; private final Classpath classpathUrls; private final Classpath surefireClasspathUrls; /** * Whether to enable assertions or not (can be affected by the fork arguments, and the ability to do so based on the * JVM). */ private final boolean enableAssertions; // todo: @deprecated because the IsolatedClassLoader is really isolated - no parent. private final boolean childDelegation; public ClasspathConfiguration( boolean enableAssertions, boolean childDelegation ) { this( new Classpath(), new Classpath(), enableAssertions, childDelegation ); } ClasspathConfiguration( PropertiesWrapper properties ) { this( properties.getClasspath( CLASSPATH ), properties.getClasspath( SUREFIRE_CLASSPATH ), properties.getBooleanProperty( ENABLE_ASSERTIONS ), properties.getBooleanProperty( CHILD_DELEGATION ) ); } public ClasspathConfiguration( Classpath testClasspath, Classpath surefireClassPathUrls, boolean enableAssertions, boolean childDelegation ) { this.enableAssertions = enableAssertions; this.childDelegation = childDelegation; this.classpathUrls = testClasspath; this.surefireClasspathUrls = surefireClassPathUrls; } public void setForkProperties( PropertiesWrapper properties ) { properties.setClasspath( CLASSPATH, classpathUrls ); properties.setClasspath( SUREFIRE_CLASSPATH, surefireClasspathUrls ); properties.setProperty( ENABLE_ASSERTIONS, String.valueOf( enableAssertions ) ); properties.setProperty( CHILD_DELEGATION, String.valueOf( childDelegation ) ); } private static Method assertionStatusMethod; static { try { assertionStatusMethod = ClassLoader.class.getMethod( "setDefaultAssertionStatus", new Class[]{ boolean.class } ); } catch ( NoSuchMethodException e ) { assertionStatusMethod = null; } } public ClassLoader createTestClassLoaderConditionallySystem( boolean useSystemClassLoader ) throws SurefireExecutionException { return useSystemClassLoader ? ClassLoader.getSystemClassLoader() : createTestClassLoader( this.childDelegation ); } public ClassLoader createTestClassLoader( boolean childDelegation ) throws SurefireExecutionException { return createClassLoaderSEE( classpathUrls, null, childDelegation ); } public ClassLoader createTestClassLoader() throws SurefireExecutionException { return createClassLoaderSEE( classpathUrls, null, this.childDelegation ); } public ClassLoader createSurefireClassLoader( ClassLoader parent ) throws SurefireExecutionException { return createClassLoaderSEE( surefireClasspathUrls, parent, false ); } private ClassLoader createClassLoaderSEE( Classpath classPathUrls, ClassLoader parent, boolean childDelegation ) throws SurefireExecutionException { try { return createClassLoader( classPathUrls, parent, childDelegation ); } catch ( MalformedURLException e ) { throw new SurefireExecutionException( "When creating classloader", e ); } } private ClassLoader createClassLoader( Classpath classPathUrls, ClassLoader parent, boolean childDelegation ) throws MalformedURLException { List urls = classPathUrls.getAsUrlList(); IsolatedClassLoader classLoader = new IsolatedClassLoader( parent, childDelegation ); if ( assertionStatusMethod != null ) { try { Object[] args = new Object[]{ enableAssertions ? Boolean.TRUE : Boolean.FALSE }; if ( parent != null ) { assertionStatusMethod.invoke( parent, args ); } assertionStatusMethod.invoke( classLoader, args ); } catch ( IllegalAccessException e ) { throw new NestedRuntimeException( "Unable to access the assertion enablement method", e ); } catch ( InvocationTargetException e ) { throw new NestedRuntimeException( "Unable to invoke the assertion enablement method", e ); } } for ( Iterator iter = urls.iterator(); iter.hasNext(); ) { URL url = (URL) iter.next(); classLoader.addURL( url ); } return classLoader; } public Classpath getTestClasspath() { return classpathUrls; } } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/IsolatedClassLoader.javasurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/IsolatedClassLoader.jav0000644000175000017500000000472711527314571032433 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.net.URL; import java.net.URLClassLoader; import java.util.HashSet; import java.util.Set; /** * @noinspection CustomClassloader */ public class IsolatedClassLoader extends URLClassLoader { private final ClassLoader parent = ClassLoader.getSystemClassLoader(); private final Set urls = new HashSet(); private boolean childDelegation = true; private static final URL[] EMPTY_URL_ARRAY = new URL[0]; public IsolatedClassLoader( ClassLoader parent, boolean childDelegation ) { super( EMPTY_URL_ARRAY, parent ); this.childDelegation = childDelegation; } public void addURL( URL url ) { // avoid duplicates if ( !urls.contains( url ) ) { super.addURL( url ); urls.add( url ); } } public synchronized Class loadClass( String name ) throws ClassNotFoundException { Class c; if ( childDelegation ) { c = findLoadedClass( name ); ClassNotFoundException ex = null; if ( c == null ) { try { c = findClass( name ); } catch ( ClassNotFoundException e ) { ex = e; if ( parent != null ) { c = parent.loadClass( name ); } } } if ( c == null ) { throw ex; } } else { c = super.loadClass( name ); } return c; } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.javasurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.j0000644000175000017500000000732511625457076032551 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.io.File; import java.util.List; import java.util.Properties; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.testset.DirectoryScannerParameters; import org.apache.maven.surefire.testset.TestArtifactInfo; import org.apache.maven.surefire.testset.TestRequest; /** * Represents the surefire configuration that passes all the way into the provider * classloader and the provider. *

* * @author Jason van Zyl * @author Emmanuel Venisse * @author Kristian Rosenvold * @version $Id$ */ public class ProviderConfiguration { /** * @noinspection UnusedDeclaration */ public static final int TESTS_SUCCEEDED_EXIT_CODE = 0; public static final int TESTS_FAILED_EXIT_CODE = 255; public static final int NO_TESTS_EXIT_CODE = 254; private final DirectoryScannerParameters dirScannerParams; private final ReporterConfiguration reporterConfiguration; private final TestArtifactInfo testArtifact; private final TestRequest testSuiteDefinition; private final Properties providerProperties; private final boolean failIfNoTests; private final TypeEncodedValue forkTestSet; public ProviderConfiguration( DirectoryScannerParameters directoryScannerParameters, boolean failIfNoTests, ReporterConfiguration reporterConfiguration, TestArtifactInfo testArtifact, TestRequest testSuiteDefinition, Properties providerProperties, TypeEncodedValue typeEncodedTestSet ) { this.providerProperties = providerProperties; this.reporterConfiguration = reporterConfiguration; this.testArtifact = testArtifact; this.testSuiteDefinition = testSuiteDefinition; this.dirScannerParams = directoryScannerParameters; this.failIfNoTests = failIfNoTests; this.forkTestSet = typeEncodedTestSet; } public ReporterConfiguration getReporterConfiguration() { return reporterConfiguration; } public Boolean isFailIfNoTests() { return ( failIfNoTests ) ? Boolean.TRUE : Boolean.FALSE; } public File getBaseDir() { return dirScannerParams.getTestClassesDirectory(); } public DirectoryScannerParameters getDirScannerParams() { return dirScannerParams; } public List getIncludes() { return dirScannerParams.getIncludes(); } public List getExcludes() { return dirScannerParams.getExcludes(); } public TestArtifactInfo getTestArtifact() { return testArtifact; } public TestRequest getTestSuiteDefinition() { return testSuiteDefinition; } public Properties getProviderProperties() { return providerProperties; } public TypeEncodedValue getTestForFork() { return forkTestSet; } } surefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/PropertiesWrapper.java0000644000175000017500000001211211625457076032402 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Properties; import org.apache.maven.surefire.util.internal.StringUtils; /** * @author Kristian Rosenvold */ public class PropertiesWrapper { private final Properties properties; public PropertiesWrapper( Properties properties ) { if ( properties == null ) { throw new IllegalStateException( "Properties cannot be null" ); } this.properties = properties; } public Properties getProperties() { return properties; } public void setAsSystemProperties() { for ( Iterator i = properties.keySet().iterator(); i.hasNext(); ) { String key = (String) i.next(); System.setProperty( key, properties.getProperty( key ) ); } } public String getProperty( String key ) { return properties.getProperty( key ); } public boolean getBooleanProperty( String propertyName ) { final Boolean aBoolean = Boolean.valueOf( properties.getProperty( propertyName ) ); return aBoolean.booleanValue(); } public Boolean getBooleanObjectProperty( String propertyName ) { return Boolean.valueOf( properties.getProperty( propertyName ) ); } public File getFileProperty( String key ) { final String property = getProperty( key ); if ( property == null ) { return null; } TypeEncodedValue typeEncodedValue = new TypeEncodedValue( File.class.getName(), property ); return (File) typeEncodedValue.getDecodedValue(); } public List getStringList( String propertyPrefix ) { String value; List result = new ArrayList(); // Whoa, C !! for ( int i = 0; ( value = getProperty( propertyPrefix + i ) ) != null; i++ ) { result.add( value ); } return result; } /** * Retrieves as single object that is persisted with type encoding * * @param key The key for the propery * @return The object, of a supported type */ public TypeEncodedValue getTypeEncodedValue( String key ) { String typeEncoded = getProperty( key ); if ( typeEncoded == null ) { return null; } int typeSep = typeEncoded.indexOf( "|" ); String type = typeEncoded.substring( 0, typeSep ); String value = typeEncoded.substring( typeSep + 1 ); return new TypeEncodedValue( type, value ); } public void setProperty( String key, File file ) { if ( file != null ) { setProperty( key, file.toString() ); } } public void setProperty( String key, Boolean aBoolean ) { if ( aBoolean != null ) { setProperty( key, aBoolean.toString() ); } } Classpath getClasspath( String prefix ) { List elements = getStringList( prefix ); return new Classpath( elements ); } public void setClasspath( String prefix, Classpath classpath ) { List classpathElements = classpath.getClassPath(); for ( int i = 0; i < classpathElements.size(); ++i ) { String element = (String) classpathElements.get( i ); setProperty( prefix + i, element ); } } public void setProperty( String key, String value ) { if ( value != null ) { properties.setProperty( key, value ); } } public void addList( List items, String propertyPrefix ) { if ( items == null || items.size() == 0 ) { return; } int i = 0; for ( Iterator iterator = items.iterator(); iterator.hasNext(); ) { Object item = iterator.next(); if ( item == null ) { throw new NullPointerException( propertyPrefix + i + " has null value" ); } String[] stringArray = StringUtils.split( item.toString(), "," ); for ( int j = 0; j < stringArray.length; j++ ) { properties.setProperty( propertyPrefix + i, stringArray[j] ); i++; } } } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SystemPropertyManager.javasurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SystemPropertyManager.j0000644000175000017500000000576011535763365032555 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * @author Kristian Rosenvold */ public class SystemPropertyManager { /** * Loads the properties, closes the stream * * @param inStream The stream to read from, will be closed * @return The properties * @throws java.io.IOException If something bad happens */ public static PropertiesWrapper loadProperties( InputStream inStream ) throws IOException { Properties p = new Properties(); try { p.load( inStream ); } finally { close( inStream ); } return new PropertiesWrapper( p ); } private static PropertiesWrapper loadProperties( File file ) throws IOException { return loadProperties( new FileInputStream( file ) ); } public static void setSystemProperties( File file ) throws IOException { PropertiesWrapper p = loadProperties( file ); p.setAsSystemProperties(); } public static File writePropertiesFile( Properties properties, File tempDirectory, String name, boolean isDebug ) throws IOException { File file = File.createTempFile( name, "tmp", tempDirectory ); if ( !isDebug ) { file.deleteOnExit(); } writePropertiesFile( file, name, properties ); return file; } public static void writePropertiesFile( File file, String name, Properties properties ) throws IOException { FileOutputStream out = new FileOutputStream( file ); try { properties.store( out, name ); } finally { out.close(); } } public static void close( InputStream inputStream ) { if ( inputStream == null ) { return; } try { inputStream.close(); } catch ( IOException ex ) { // ignore } } } surefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java0000644000175000017500000000631111625457076031276 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import org.apache.maven.surefire.suite.RunResult; /** * The part of the booter that is unique to a forked vm. *

* Deals with deserialization of the booter wire-level protocol *

* Todo: Look at relationship between this class and BooterSerializer (BooterDeserializer?) * * @author Jason van Zyl * @author Emmanuel Venisse * @author Kristian Rosenvold * @version $Id$ */ public class ForkedBooter { /** * This method is invoked when Surefire is forked - this method parses and organizes the arguments passed to it and * then calls the Surefire class' run method.

The system exit code will be 1 if an exception is thrown. * * @param args Commandline arguments * @throws Throwable Upon throwables */ public static void main( String[] args ) throws Throwable { try { if ( args.length > 1 ) { SystemPropertyManager.setSystemProperties( new File( args[1] ) ); } File surefirePropertiesFile = new File( args[0] ); InputStream stream = surefirePropertiesFile.exists() ? new FileInputStream( surefirePropertiesFile ) : null; BooterDeserializer booterDeserializer = new BooterDeserializer( stream ); ProviderConfiguration booterConfiguration = booterDeserializer.deserialize(); final StartupConfiguration providerConfiguration = booterDeserializer.getProviderConfiguration(); SurefireStarter starter = new SurefireStarter( providerConfiguration, booterConfiguration, null ); TypeEncodedValue forkedTestSet = booterConfiguration.getTestForFork(); final RunResult result = forkedTestSet != null ? starter.runSuitesInProcessWhenForked( forkedTestSet ) : starter.runSuitesInProcessWhenForked(); // noinspection CallToSystemExit System.exit( result.getBooterCode() ); } catch ( Throwable t ) { // Just throwing does getMessage() and a local trace - we want to call printStackTrace for a full trace // noinspection UseOfSystemOutOrSystemErr t.printStackTrace( System.err ); // noinspection ProhibitedExceptionThrown,CallToSystemExit System.exit( 1 ); } } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireExecutionException.javasurefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireExecutionExcept0000644000175000017500000000237410567521075032612 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import org.apache.maven.surefire.util.NestedCheckedException; /** * An error occurring during the invocation of Surefire via an alternate class loader. * * @author Brett Porter */ public class SurefireExecutionException extends NestedCheckedException { public SurefireExecutionException( String message, Throwable nested ) { super( message, nested ); } } surefire-2.10/surefire-booter/src/main/java/org/apache/maven/surefire/booter/shell/0000755000175000017500000000000011645102475027144 5ustar tonytonysurefire-2.10/pom.xml0000644000175000017500000002722311640163725013354 0ustar tonytony 4.0.0 maven-parent org.apache.maven 20 ../pom/maven/pom.xml org.apache.maven.surefire surefire 2.10 pom SureFire Surefire is a test framework project. http://maven.apache.org/surefire 2004 Jesse Kuhnert Vincent Siveton vincent.siveton@gmail.com ASF Java Developer Surefire User List surefire-users@maven.apache.org surefire-users-subscribe@maven.apache.org surefire-users-unsubscribe@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-surefire-users/ http://www.mail-archive.com/surefire-users@maven.apache.org http://markmail.org/list/org.apache.maven.surefire-users Surefire Developer List surefire-dev@maven.apache.org surefire-dev-subscribe@maven.apache.org surfire-dev-unsubscribe@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-surefire-dev/ http://www.mail-archive.com/surefire-dev@maven.apache.org http://markmail.org/list/org.apache.maven.surefire-dev Surefire Commits List surefire-commits-subscribe@maven.apache.org surefire-commits-unsubscribe@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-surefire-commits/ http://www.mail-archive.com/surefire-commits@maven.apache.org http://markmail.org/list/org.apache.maven.surefire-commits surefire-shadefire surefire-api surefire-booter surefire-providers maven-surefire-common maven-surefire-plugin maven-failsafe-plugin maven-surefire-report-plugin surefire-setup-integration-tests surefire-integration-tests scm:svn:http://svn.apache.org/repos/asf/maven/surefire/tags/surefire-2.10 scm:svn:https://svn.apache.org/repos/asf/maven/surefire/tags/surefire-2.10 http://svn.apache.org/viewcvs.cgi/maven/surefire/tags/surefire-2.10 jira http://jira.codehaus.org/browse/SUREFIRE Jenkins https://builds.apache.org/hudson/job/maven-surefire/ 2.0.9 2.8 org.apache.maven.surefire surefire-api ${project.version} org.apache.maven.surefire surefire-booter ${project.version} org.apache.maven.surefire maven-surefire-common ${project.version} org.apache.maven maven-core ${mavenVersion} org.apache.maven.wagon wagon-file org.apache.maven.wagon wagon-webdav org.apache.maven.wagon wagon-http-lightweight org.apache.maven.wagon wagon-ssh org.apache.maven.wagon wagon-ssh-external org.apache.maven.doxia doxia-sink-api commons-cli commons-cli org.codehaus.plexus plexus-interactivity-api org.apache.maven maven-plugin-api ${mavenVersion} org.apache.maven maven-artifact ${mavenVersion} org.apache.maven maven-project ${mavenVersion} org.apache.maven maven-model ${mavenVersion} org.apache.maven maven-toolchain ${mavenVersion} org.codehaus.plexus plexus-utils 2.1 jmock jmock 1.0.1 test junit junit 3.8.1 test junit junit test maven-compiler-plugin 1.3 1.3 maven-surefire-plugin ${shadedVersion} false maven-release-plugin https://svn.apache.org/repos/asf/maven/surefire/tags maven-compiler-plugin 2.3.2 1.3 1.3 org.apache.maven.plugins maven-shade-plugin 1.4 jdk1.3 maven-compiler-plugin true 1.3 ${JAVA_1_3_HOME}/bin/javac maven-surefire-plugin once true ${JAVA_1_3_HOME}/bin/java m2e target m2e.version ${m2BuildDirectory} org.maven.ide.eclipse lifecycle-mapping 0.10.0 customizable org.apache.maven.plugins:maven-resources-plugin:: surefire-2.10/maven-failsafe-plugin/0000755000175000017500000000000011645102474016202 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/pom.xml0000644000175000017500000003157411640163725017532 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire 2.10 ../pom.xml org.apache.maven.plugins maven-failsafe-plugin maven-plugin Maven Failsafe Plugin Maven User List users-subscribe@maven.apache.org users-unsubscribe@maven.apache.org users@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-users http://www.mail-archive.com/users@maven.apache.org/ http://old.nabble.com/Maven---Users-f178.html http://markmail.org/list/org.apache.maven.users Maven Developer List dev-subscribe@maven.apache.org dev-unsubscribe@maven.apache.org dev@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-dev http://www.mail-archive.com/dev@maven.apache.org/ http://old.nabble.com/Maven-Developers-f179.html http://markmail.org/list/org.apache.maven.dev Maven Commits List commits-subscribe@maven.apache.org commits-unsubscribe@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-commits http://www.mail-archive.com/commits@maven.apache.org http://old.nabble.com/Maven---Commits-f15575.html http://markmail.org/list/org.apache.maven.commits Maven Announcements List announce@maven.apache.org announce-subscribe@maven.apache.org announce-unsubscribe@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-announce/ http://www.mail-archive.com/announce@maven.apache.org http://old.nabble.com/Maven-Announcements-f15617.html http://markmail.org/list/org.apache.maven.announce Maven Issues List issues-subscribe@maven.apache.org issues-unsubscribe@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-issues/ http://www.mail-archive.com/issues@maven.apache.org http://old.nabble.com/Maven---Issues-f15573.html http://markmail.org/list/org.apache.maven.issues Maven Notifications List notifications-subscribe@maven.apache.org notifications-unsubscribe@maven.apache.org http://mail-archives.apache.org/mod_mbox/maven-notifications/ http://www.mail-archive.com/notifications@maven.apache.org http://old.nabble.com/Maven---Notifications-f15574.html http://markmail.org/list/org.apache.maven.notifications 2.0.9 apache.website scp://people.apache.org/www/maven.apache.org/plugins/maven-failsafe-plugin Failsafe Surefire org.apache.maven maven-plugin-api 2.0.9 org.apache.maven.surefire surefire-booter org.apache.maven.surefire maven-surefire-common org.codehaus.plexus plexus-utils org.apache.maven maven-artifact org.apache.maven maven-project org.apache.maven maven-core org.apache.maven maven-toolchain org.apache.maven.plugins maven-surefire-plugin 2.10 provided zip site-source maven-compiler-plugin 1.4 1.4 org.apache.maven.plugins maven-plugin-plugin 2.8 generated-helpmojo helpmojo maven-surefire-plugin org.apache.maven.surefire surefire-shadefire ${project.version} maven-site-plugin scp://people.apache.org/www/maven.apache.org/plugins/${project.artifactId}-${project.version} ${project.build.directory}/source-site org.codehaus.modello modello-maven-plugin 1.4.1 xpp3-reader xpp3-writer java src/main/mdo/failsafe-summary.mdo 2.6.0 org.apache.maven.plugins maven-invoker-plugin 1.5 src/it ${project.build.directory}/it ${project.build.directory}/local-repo true true verify dummy-*/pom.xml */pom.xml verify.bsh src/it/settings.xml maven-dependency-plugin site-site pre-site unpack-dependencies maven-surefire-plugin provided zip site-source ${project.build.directory}/source-site true org.apache.maven.plugins maven-plugin-plugin 2.7 1.4 jdk1.3 maven-compiler-plugin false 1.4 ci enableCiProfile true maven-docck-plugin 1.0 check run-its verify org.apache.maven.plugins maven-invoker-plugin false integration-test install run surefire-2.10/maven-failsafe-plugin/src/0000755000175000017500000000000011645102474016771 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/0000755000175000017500000000000011645102474017405 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/0000755000175000017500000000000011645102474023717 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/verify.bsh0000644000175000017500000000222011532210313025700 0ustar tonytony/* * 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. */ import java.io.*; import java.util.*; try { File file = new File(basedir, "target/failsafe-reports/failsafe-summary.xml"); if (!file.exists() || file.isDirectory()) { System.err.println("Could not find failsafe summary: " + file); return false; } } catch (Throwable t) { t.printStackTrace(); return false; } return true;surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/invoker.properties0000644000175000017500000000146311321563345027515 0ustar tonytony# # 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. # invoker.buildResult=failure surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/pom.xml0000644000175000017500000001131111501631351025221 0ustar tonytony 4.0.0 localhost jetty-war-test-failing 1.0 war run failing tests in jetty container javax.servlet servlet-api 2.5 provided junit junit 3.8.2 test net.sourceforge.htmlunit htmlunit 2.3 test true integration-test.properties ${basedir}/src/test/resources false integration-test.properties ${basedir}/src/test/resources org.mortbay.jetty maven-jetty-plugin 6.1.16 ${integration-test-stop-port} STOP / ${integration-test-port} 60000 start-jetty pre-integration-test stop run-exploded 0 true stop-jetty post-integration-test stop @project.groupId@ @project.artifactId@ @project.version@ integration-test integration-test verify verify maven-compiler-plugin 2.0.2 1.5 1.5 UTF-8 UTF-8 8083 18009 surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/0000755000175000017500000000000011645102474024506 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/test/0000755000175000017500000000000011645102474025465 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/test/java/0000755000175000017500000000000011645102474026406 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/test/java/basic/0000755000175000017500000000000011645102474027467 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/test/java/basic/BasicIT.java0000644000175000017500000000346011321563345031612 0ustar tonytonypackage basic; /* * 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. */ import java.util.Properties; import java.io.IOException; import junit.framework.*; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class BasicIT extends TestCase { private WebClient client; private String baseUrl; private final Properties properties = new Properties(); public void setUp() throws IOException { client = new WebClient(); properties.load( getClass().getResourceAsStream( "/integration-test.properties" ) ); baseUrl = properties.getProperty( "baseUrl" ); } public void tearDown() { if ( client != null ) { client.closeAllWindows(); client = null; } } public void testSmokes() throws Exception { client.setThrowExceptionOnFailingStatusCode( false ); HtmlPage page = client.getPage( baseUrl + "index.html" ); assertFalse( page.asText().contains( "Hello World" ) ); } } surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/test/resources/0000755000175000017500000000000011645102474027477 5ustar tonytony././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/test/resources/integration-test.propertiessurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/test/resources/integration-tes0000644000175000017500000000157711321563345032547 0ustar tonytony# # 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. # # # The url where the web-app has been deployed to # baseUrl=http://localhost:${integration-test-port}/surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/main/0000755000175000017500000000000011645102474025432 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/main/webapp/0000755000175000017500000000000011645102474026710 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/main/webapp/WEB-INF/0000755000175000017500000000000011645102474027737 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/main/webapp/WEB-INF/web.xml0000644000175000017500000000215511321563345031240 0ustar tonytony surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-failing/src/main/webapp/index.html0000644000175000017500000000163711321563345030713 0ustar tonytony Hello World

Hello World

surefire-2.10/maven-failsafe-plugin/src/it/settings.xml0000644000175000017500000000327411532210313021760 0ustar tonytony it-repo true local.central @localRepositoryUrl@ true true local.central @localRepositoryUrl@ true true surefire-2.10/maven-failsafe-plugin/src/it/working-directory/0000755000175000017500000000000011645102474023067 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/working-directory/pom.xml0000644000175000017500000000405411476371205024411 0ustar tonytony 4.0.0 localhost working-directory-test 1.0 Run tests in a nonexistent working directory junit junit 3.8.2 test @project.groupId@ @project.artifactId@ @project.version@ integration-test integration-test ${project.build.directory}/failsafe-working-directory surefire-2.10/maven-failsafe-plugin/src/it/working-directory/src/0000755000175000017500000000000011645102474023656 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/working-directory/src/test/0000755000175000017500000000000011645102474024635 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/working-directory/src/test/java/0000755000175000017500000000000011645102474025556 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/working-directory/src/test/java/MyIT.java0000644000175000017500000000166411532210313027235 0ustar tonytony/* * 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. */ import junit.framework.TestCase; public class MyIT extends TestCase { public void testSomething() { assertTrue(true); } } surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/0000755000175000017500000000000011645102474023752 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/verify.bsh0000644000175000017500000000222011532210313025733 0ustar tonytony/* * 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. */ import java.io.*; import java.util.*; try { File file = new File(basedir, "target/failsafe-reports/failsafe-summary.xml"); if (!file.exists() || file.isDirectory()) { System.err.println("Could not find failsafe summary: " + file); return false; } } catch (Throwable t) { t.printStackTrace(); return false; } return true;surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/invoker.properties0000644000175000017500000000146311321563345027550 0ustar tonytony# # 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. # invoker.buildResult=success surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/pom.xml0000644000175000017500000001130111501631351025253 0ustar tonytony 4.0.0 localhost jetty-war-test 1.0 war run passing tests in jetty container javax.servlet servlet-api 2.5 provided junit junit 3.8.2 test net.sourceforge.htmlunit htmlunit 2.3 test true integration-test.properties ${basedir}/src/test/resources false integration-test.properties ${basedir}/src/test/resources org.mortbay.jetty maven-jetty-plugin 6.1.16 ${integration-test-stop-port} STOP / ${integration-test-port} 60000 start-jetty pre-integration-test stop run-exploded 0 true stop-jetty post-integration-test stop @project.groupId@ @project.artifactId@ @project.version@ integration-test integration-test verify verify maven-compiler-plugin 2.0.2 1.5 1.5 UTF-8 UTF-8 8083 18009 surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/0000755000175000017500000000000011645102474024541 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/test/0000755000175000017500000000000011645102474025520 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/test/java/0000755000175000017500000000000011645102474026441 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/test/java/basic/0000755000175000017500000000000011645102474027522 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/test/java/basic/BasicIT.java0000644000175000017500000000345711321563345031653 0ustar tonytonypackage basic; /* * 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. */ import java.util.Properties; import java.io.IOException; import junit.framework.*; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class BasicIT extends TestCase { private WebClient client; private String baseUrl; private final Properties properties = new Properties(); public void setUp() throws IOException { client = new WebClient(); properties.load( getClass().getResourceAsStream( "/integration-test.properties" ) ); baseUrl = properties.getProperty( "baseUrl" ); } public void tearDown() { if ( client != null ) { client.closeAllWindows(); client = null; } } public void testSmokes() throws Exception { client.setThrowExceptionOnFailingStatusCode( false ); HtmlPage page = client.getPage( baseUrl + "index.html" ); assertTrue( page.asText().contains( "Hello World" ) ); } } surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/test/resources/0000755000175000017500000000000011645102474027532 5ustar tonytony././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/test/resources/integration-test.propertiessurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/test/resources/integration-tes0000644000175000017500000000157711321563345032602 0ustar tonytony# # 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. # # # The url where the web-app has been deployed to # baseUrl=http://localhost:${integration-test-port}/surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/main/0000755000175000017500000000000011645102474025465 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/main/webapp/0000755000175000017500000000000011645102474026743 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/main/webapp/WEB-INF/0000755000175000017500000000000011645102474027772 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/main/webapp/WEB-INF/web.xml0000644000175000017500000000215511321563345031273 0ustar tonytony surefire-2.10/maven-failsafe-plugin/src/it/jetty-war-test-passing/src/main/webapp/index.html0000644000175000017500000000163711321563345030746 0ustar tonytony Hello World

Hello World

surefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries-failing/0000755000175000017500000000000011645102474024652 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries-failing/invoker.properties0000644000175000017500000000146311426523261030447 0ustar tonytony# # 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. # invoker.buildResult=failure surefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries-failing/pom.xml0000644000175000017500000000626511476371205026202 0ustar tonytony 4.0.0 localhost working-directory-test 1.0 Run tests multiple times junit junit 3.8.2 test @project.groupId@ @project.artifactId@ @project.version@ integration-test integration-test ${project.build.directory}/failsafe-reports/failsafe-summary-1.xml acceptance-test integration-test **/AT*.java **/*AT.java **/*ATCase.java ${project.build.directory}/failsafe-reports/failsafe-summary-2.xml verify verify ${project.build.directory}/failsafe-reports/failsafe-summary-1.xml ${project.build.directory}/failsafe-reports/failsafe-summary-2.xml surefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries-failing/src/0000755000175000017500000000000011645102474025441 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries-failing/src/test/0000755000175000017500000000000011645102474026420 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries-failing/src/test/java/0000755000175000017500000000000011645102474027341 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries-failing/src/test/java/MyAT.java0000644000175000017500000000166411532210313031010 0ustar tonytony/* * 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. */ import junit.framework.TestCase; public class MyAT extends TestCase { public void testSomething() { assertTrue(false); } } surefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries-failing/src/test/java/MyIT.java0000644000175000017500000000166411532210313031020 0ustar tonytony/* * 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. */ import junit.framework.TestCase; public class MyIT extends TestCase { public void testSomething() { assertTrue(true); } } surefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries/0000755000175000017500000000000011645102474023243 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries/pom.xml0000644000175000017500000000572011476371205024566 0ustar tonytony 4.0.0 localhost working-directory-test 1.0 Run tests multiple times junit junit 3.8.2 test @project.groupId@ @project.artifactId@ @project.version@ integration-test1 integration-test ${project.build.directory}/failsafe-reports/failsafe-summary-1.xml integration-test2 integration-test ${project.build.directory}/failsafe-reports/failsafe-summary-2.xml verify verify ${project.build.directory}/failsafe-reports/failsafe-summary-1.xml ${project.build.directory}/failsafe-reports/failsafe-summary-2.xml surefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries/src/0000755000175000017500000000000011645102474024032 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries/src/test/0000755000175000017500000000000011645102474025011 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries/src/test/java/0000755000175000017500000000000011645102474025732 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/it/multiple-summaries/src/test/java/MyIT.java0000644000175000017500000000166411532210313027411 0ustar tonytony/* * 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. */ import junit.framework.TestCase; public class MyIT extends TestCase { public void testSomething() { assertTrue(true); } } surefire-2.10/maven-failsafe-plugin/src/main/0000755000175000017500000000000011645102474017715 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/main/java/0000755000175000017500000000000011645102474020636 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/main/java/org/0000755000175000017500000000000011645102474021425 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/main/java/org/apache/0000755000175000017500000000000011645102474022646 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/main/java/org/apache/maven/0000755000175000017500000000000011645102474023754 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/0000755000175000017500000000000011645102474025252 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/0000755000175000017500000000000011645102474027024 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/VerifyMojo.java0000644000175000017500000002372311557340256031773 0ustar tonytonypackage org.apache.maven.plugin.failsafe; /* * 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. */ import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugin.surefire.SurefireHelper; import org.apache.maven.plugin.surefire.SurefireReportParameters; import org.apache.maven.surefire.failsafe.model.FailsafeSummary; import org.apache.maven.surefire.failsafe.model.io.xpp3.FailsafeSummaryXpp3Reader; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; /** * Verify integration tests ran using Surefire. * * @author Stephen Connolly * @author Jason van Zyl * @requiresProject true * @goal verify * @phase verify * @threadSafe */ public class VerifyMojo extends AbstractMojo implements SurefireReportParameters { /** * Set this to 'true' to skip running tests, but still compile them. Its use is NOT RECOMMENDED, but quite * convenient on occasion. * * @parameter expression="${skipTests}" * @since 2.4 */ private boolean skipTests; /** * Set this to 'true' to skip running integration tests, but still compile them. Its use is NOT RECOMMENDED, but quite * convenient on occasion. * * @parameter expression="${skipITs}" * @since 2.4.3-alpha-2 */ private boolean skipITs; /** * This old parameter is just like skipTests, but bound to the old property maven.test.skip.exec. * * @parameter expression="${maven.test.skip.exec}" * @since 2.3 * @deprecated Use -DskipTests instead. */ private boolean skipExec; /** * Set this to 'true' to bypass unit tests entirely. Its use is NOT RECOMMENDED, especially if you * enable it using the "maven.test.skip" property, because maven.test.skip disables both running the * tests and compiling the tests. Consider using the skipTests parameter instead. * * @parameter default-value="false" expression="${maven.test.skip}" */ private boolean skip; /** * Set this to true to ignore a failure during testing. Its use is NOT RECOMMENDED, but quite convenient on * occasion. * * @parameter default-value="false" expression="${maven.test.failure.ignore}" */ private boolean testFailureIgnore; /** * The base directory of the project being tested. This can be obtained in your unit test by * System.getProperty("basedir"). * * @parameter default-value="${basedir}" */ private File basedir; /** * The directory containing generated test classes of the project being tested. * This will be included at the beginning the test classpath. * * @parameter default-value="${project.build.testOutputDirectory}" */ private File testClassesDirectory; /** * Base directory where all reports are written to. * * @parameter default-value="${project.build.directory}/failsafe-reports" */ private File reportsDirectory; /** * The summary file to read integration test results from. * * @parameter expression="${project.build.directory}/failsafe-reports/failsafe-summary.xml" * @required * @noinspection UnusedDeclaration */ private File summaryFile; /** * Additional summary files to read integration test results from. * * @parameter * @since 2.6 * @noinspection UnusedDeclaration, MismatchedReadAndWriteOfArray */ private File[] summaryFiles; /** * Set this to "true" to cause a failure if there are no tests to run. * * @parameter expression="${failIfNoTests}" * @since 2.4 */ private Boolean failIfNoTests; /** * The character encoding scheme to be applied. * * @parameter expression="${encoding}" default-value="${project.reporting.outputEncoding}" * @noinspection UnusedDeclaration */ private String encoding; public void execute() throws MojoExecutionException, MojoFailureException { if ( verifyParameters() ) { getLog().info( StringUtils.capitalizeFirstLetter( getPluginName() ) + " report directory: " + getReportsDirectory() ); int result; try { String encoding; if ( StringUtils.isEmpty( this.encoding ) ) { getLog().warn( "File encoding has not been set, using platform encoding " + ReaderFactory.FILE_ENCODING + ", i.e. build is platform dependent!" ); encoding = ReaderFactory.FILE_ENCODING; } else { encoding = this.encoding; } final FailsafeSummary summary; if ( !summaryFile.isFile() && summaryFiles != null ) { summary = new FailsafeSummary(); } else { summary = readSummary( encoding, summaryFile ); } if ( summaryFiles != null ) { for ( int i = 0; i < summaryFiles.length; i++ ) { summary.merge( readSummary( encoding, summaryFiles[i] ) ); } } result = summary.getResult(); } catch ( IOException e ) { throw new MojoExecutionException( e.getMessage(), e ); } catch ( XmlPullParserException e ) { throw new MojoExecutionException( e.getMessage(), e ); } SurefireHelper.reportExecution( this, result, getLog() ); } } private FailsafeSummary readSummary( String encoding, File summaryFile ) throws IOException, XmlPullParserException { FileInputStream fileInputStream = null; BufferedInputStream bufferedInputStream = null; Reader reader = null; try { fileInputStream = new FileInputStream( summaryFile ); bufferedInputStream = new BufferedInputStream( fileInputStream ); reader = new InputStreamReader( bufferedInputStream, encoding ); FailsafeSummaryXpp3Reader xpp3Reader = new FailsafeSummaryXpp3Reader(); return xpp3Reader.read( reader ); } finally { IOUtil.close( reader ); IOUtil.close( bufferedInputStream ); IOUtil.close( fileInputStream ); } } protected boolean verifyParameters() throws MojoFailureException { if ( isSkip() || isSkipTests() || isSkipITs() || isSkipExec() ) { getLog().info( "Tests are skipped." ); return false; } if ( !getTestClassesDirectory().exists() ) { if ( getFailIfNoTests() != null && getFailIfNoTests().booleanValue() ) { throw new MojoFailureException( "No tests to run!" ); } getLog().info( "No tests to run." ); return false; } return true; } protected String getPluginName() { return "failsafe"; } protected String[] getDefaultIncludes() { return null; } public boolean isSkipTests() { return skipTests; } public void setSkipTests( boolean skipTests ) { this.skipTests = skipTests; } public boolean isSkipITs() { return skipITs; } public void setSkipITs( boolean skipITs ) { this.skipITs = skipITs; } public boolean isSkipExec() { return skipExec; } public void setSkipExec( boolean skipExec ) { this.skipExec = skipExec; } public boolean isSkip() { return skip; } public void setSkip( boolean skip ) { this.skip = skip; } public boolean isTestFailureIgnore() { return testFailureIgnore; } public void setTestFailureIgnore( boolean testFailureIgnore ) { this.testFailureIgnore = testFailureIgnore; } public File getBasedir() { return basedir; } public void setBasedir( File basedir ) { this.basedir = basedir; } public File getTestClassesDirectory() { return testClassesDirectory; } public void setTestClassesDirectory( File testClassesDirectory ) { this.testClassesDirectory = testClassesDirectory; } public File getReportsDirectory() { return reportsDirectory; } public void setReportsDirectory( File reportsDirectory ) { this.reportsDirectory = reportsDirectory; } public Boolean getFailIfNoTests() { return failIfNoTests; } public void setFailIfNoTests( Boolean failIfNoTests ) { this.failIfNoTests = failIfNoTests; } } surefire-2.10/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/package.html0000644000175000017500000000175611577127107031322 0ustar tonytony

Provides Mojo goals for running integration tests and subsequently failing the build in a safe way.

././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.javasurefire-2.10/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMo0000644000175000017500000011304111604702065032363 0ustar tonytonypackage org.apache.maven.plugin.failsafe; /* * 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. */ import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactResolver; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugin.surefire.AbstractSurefireMojo; import org.apache.maven.plugin.surefire.Summary; import org.apache.maven.plugin.surefire.booterclient.ChecksumCalculator; import org.apache.maven.project.MavenProject; import org.apache.maven.surefire.booter.ProviderConfiguration; import org.apache.maven.surefire.failsafe.model.FailsafeSummary; import org.apache.maven.surefire.failsafe.model.io.xpp3.FailsafeSummaryXpp3Writer; import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.toolchain.ToolchainManager; import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.StringUtils; /** * Run integration tests using Surefire. * * @author Jason van Zyl * @author Stephen Connolly * @requiresProject true * @requiresDependencyResolution test * @goal integration-test * @phase integration-test * @threadSafe * @noinspection JavaDoc */ public class IntegrationTestMojo extends AbstractSurefireMojo { /** * Set this to "true" to skip running tests, but still compile them. Its use is NOT RECOMMENDED, but quite * convenient on occasion. * * @parameter default-value="false" expression="${skipTests}" * @since 2.4 */ private boolean skipTests; /** * Set this to "true" to skip running integration tests, but still compile them. Its use is NOT RECOMMENDED, but * quite convenient on occasion. * * @parameter expression="${skipITs}" * @since 2.4.3-alpha-2 */ private boolean skipITs; /** * This old parameter is just like skipTests, but bound to the old property "maven.test.skip.exec". * * @parameter expression="${maven.test.skip.exec}" * @since 2.3 * @deprecated Use skipTests instead. */ private boolean skipExec; /** * Set this to "true" to bypass unit tests entirely. Its use is NOT RECOMMENDED, especially if you enable it using * the "maven.test.skip" property, because maven.test.skip disables both running the tests and compiling the tests. * Consider using the skipTests parameter instead. * * @parameter default-value="false" expression="${maven.test.skip}" */ private boolean skip; /** * The base directory of the project being tested. This can be obtained in your integration test via * System.getProperty("basedir"). * * @parameter default-value="${basedir}" */ private File basedir; /** * The directory containing generated test classes of the project being tested. This will be included at the * beginning of the test classpath. * * @parameter default-value="${project.build.testOutputDirectory}" */ private File testClassesDirectory; /** * The directory containing generated classes of the project being tested. This will be included after the test * classes in the test classpath. * * @parameter default-value="${project.build.outputDirectory}" */ private File classesDirectory; /** * The Maven Project Object. * * @parameter default-value="${project}" * @readonly */ private MavenProject project; /** * List of dependencies to exclude from the test classpath. Each dependency string must follow the format * groupId:artifactId. For example: org.acme:project-a * * @parameter * @since 2.6 */ private List classpathDependencyExcludes; /** * A dependency scope to exclude from the test classpath. The scope should be one of the scopes defined by * org.apache.maven.artifact.Artifact. This includes the following: *

*

    *
  • compile - system, provided, compile *
  • runtime - compile, runtime *
  • compile+runtime - system, provided, compile, runtime *
  • runtime+system - system, compile, runtime *
  • test - system, provided, compile, runtime, test *
* * @parameter default-value="" * @since 2.6 */ private String classpathDependencyScopeExclude; /** * Additional elements to be appended to the classpath. * * @parameter * @since 2.4 */ private List additionalClasspathElements; /** * Base directory where all reports are written to. * * @parameter default-value="${project.build.directory}/failsafe-reports" */ private File reportsDirectory; /** * The test source directory containing test class sources. * * @parameter default-value="${project.build.testSourceDirectory}" * @required * @since 2.2 */ private File testSourceDirectory; /** * Specify this parameter to run individual tests by file name, overriding the includes/excludes * parameters. Each pattern you specify here will be used to create an include pattern formatted like * **/${test}.java, so you can just type "-Dit.test=MyTest" to run a single test called * "foo/MyTest.java".
* This parameter overrides the includes/excludes parameters, and the TestNG suiteXmlFiles * parameter. *

* since 2.7.3 You can execute a limited number of method in the test with adding #myMethod or #my*ethod. Si type * "-Dtest=MyTest#myMethod" supported for junit 4.x and testNg * * @parameter expression="${it.test}" */ private String test; /** * A list of <include> elements specifying the tests (by pattern) that should be included in testing. When not * specified and when the test parameter is not specified, the default includes will be
* <includes>
*  <include>**/IT*.java</include>
*  <include>**/*IT.java</include>
*  <include>**/*ITCase.java</include>
* </includes>
*
*

* Each include item may also contain a comma-separated sublist of items, which will be treated as multiple *  <include> entries.
*

* This parameter is ignored if the TestNG suiteXmlFiles parameter is specified. * * @parameter */ private List includes; /** * A list of <exclude> elements specifying the tests (by pattern) that should be excluded in testing. When not * specified and when the test parameter is not specified, the default excludes will be
* <excludes>
*  <exclude>**/*$*</exclude>
* </excludes>
*
(which excludes all inner classes).
* This parameter is ignored if the TestNG suiteXmlFiles parameter is specified. *

* Each exclude item may also contain a comma-separated sublist of items, which will be treated as multiple *  <exclude> entries.
* * @parameter */ private List excludes; /** * ArtifactRepository of the localRepository. To obtain the directory of localRepository in unit tests use * System.getProperty("localRepository"). * * @parameter expression="${localRepository}" * @required * @readonly */ private ArtifactRepository localRepository; /** * List of System properties to pass to the JUnit tests. * * @parameter * @deprecated Use systemPropertyVariables instead. */ private Properties systemProperties; /** * List of System properties to pass to the JUnit tests. * * @parameter * @since 2.5 */ private Map systemPropertyVariables; /** * List of System properties, loaded from a file, to pass to the JUnit tests. * * @parameter * @since 2.8.2 */ private File systemPropertiesFile; /** * List of properties for configuring all TestNG related configurations. This is the new preferred method of * configuring TestNG. * * @parameter * @since 2.4 */ private Properties properties; /** * Map of plugin artifacts. * * @parameter expression="${plugin.artifactMap}" * @required * @readonly */ private Map pluginArtifactMap; /** * Map of project artifacts. * * @parameter expression="${project.artifactMap}" * @required * @readonly */ private Map projectArtifactMap; /** * The summary file to write integration test results to. * * @parameter expression="${project.build.directory}/failsafe-reports/failsafe-summary.xml" * @required */ private File summaryFile; /** * Option to print summary of test suites or just print the test cases that have errors. * * @parameter expression="${failsafe.printSummary}" default-value="true" */ private boolean printSummary; /** * Selects the formatting for the test report to be generated. Can be set as "brief" or "plain". * * @parameter expression="${failsafe.reportFormat}" default-value="brief" */ private String reportFormat; /** * Add custom text into report filename: TEST-testClassName-reportNameSuffix.xml, * testClassName-reportNameSuffix.txt and testClassName-reportNameSuffix-output.txt. * File TEST-testClassName-reportNameSuffix.xml has changed attributes 'testsuite'--'name' * and 'testcase'--'classname' - reportNameSuffix is added to the attribute value. * * @parameter expression="${surefire.reportNameSuffix}" default-value="" */ private String reportNameSuffix; /** * Option to generate a file test report or just output the test report to the console. * * @parameter expression="${failsafe.useFile}" default-value="true" */ private boolean useFile; /** * Set this to "true" to redirect the unit test standard output to a file (found in * reportsDirectory/testName-output.txt). * * @parameter expression="${maven.test.redirectTestOutputToFile}" default-value="false" * @since 2.3 */ private boolean redirectTestOutputToFile; /** * Set this to "true" to cause a failure if there are no tests to run. Defaults to "false". * * @parameter expression="${failIfNoTests}" * @since 2.4 */ private Boolean failIfNoTests; /** * Option to specify the forking mode. Can be "never", "once" or "always". "none" and "pertest" are also accepted * for backwards compatibility. "always" forks for each test-class. * * @parameter expression="${forkMode}" default-value="once" * @since 2.1 */ private String forkMode; /** * Option to specify the jvm (or path to the java executable) to use with the forking options. For the default, the * jvm will be a new instance of the same VM as the one used to run Maven. JVM settings are not inherited from * MAVEN_OPTS. * * @parameter expression="${jvm}" * @since 2.1 */ private String jvm; /** * Arbitrary JVM options to set on the command line. * * @parameter expression="${argLine}" * @since 2.1 */ private String argLine; /** * Attach a debugger to the forked JVM. If set to "true", the process will suspend and wait for a debugger to attach * on port 5005. If set to some other string, that string will be appended to the argLine, allowing you to configure * arbitrary debuggability options (without overwriting the other options specified through the argLine * parameter). * * @parameter expression="${maven.failsafe.debug}" * @since 2.4 */ private String debugForkedProcess; /** * Kill the forked test process after a certain number of seconds. If set to 0, wait forever for the process, never * timing out. * * @parameter expression="${failsafe.timeout}" * @since 2.4 */ private int forkedProcessTimeoutInSeconds; /** * Additional environment variables to set on the command line. * * @parameter * @since 2.1.3 */ private Map environmentVariables = new HashMap(); /** * Command line working directory. * * @parameter expression="${basedir}" * @since 2.1.3 */ private File workingDirectory; /** * When false it makes tests run using the standard classloader delegation instead of the default Maven isolated * classloader. Only used when forking (forkMode is not "none").
* Setting it to false helps with some problems caused by conflicts between xml parsers in the classpath and the * Java 5 provider parser. * * @parameter expression="${childDelegation}" default-value="false" * @since 2.1 */ private boolean childDelegation; /** * (TestNG only) Groups for this test. Only classes/methods/etc decorated with one of the groups specified here will * be included in test run, if specified.
* This parameter is ignored if the suiteXmlFiles parameter is specified. * * @parameter expression="${groups}" * @since 2.2 */ private String groups; /** * (TestNG only) Excluded groups. Any methods/classes/etc with one of the groups specified in this list will * specifically not be run.
* This parameter is ignored if the suiteXmlFiles parameter is specified. * * @parameter expression="${excludedGroups}" * @since 2.2 */ private String excludedGroups; /** * (TestNG only) List of <suiteXmlFile> elements specifying TestNG suite xml file locations. Note that * suiteXmlFiles is incompatible with several other parameters of this plugin, like * includes/excludes.
* This parameter is ignored if the test parameter is specified (allowing you to run a single test * instead of an entire suite). * * @parameter * @since 2.2 */ private File[] suiteXmlFiles; /** * Allows you to specify the name of the JUnit artifact. If not set, junit:junit will be used. * * @parameter expression="${junitArtifactName}" default-value="junit:junit" * @since 2.3.1 */ private String junitArtifactName; /** * Allows you to specify the name of the TestNG artifact. If not set, org.testng:testng will be used. * * @parameter expression="${testNGArtifactName}" default-value="org.testng:testng" * @since 2.3.1 */ private String testNGArtifactName; /** * (TestNG/JUnit 4.7 provider only) The attribute thread-count allows you to specify how many threads should be * allocated for this execution. Only makes sense to use in conjunction with the parallel parameter. * * @parameter expression="${threadCount}" * @since 2.2 */ private int threadCount; /** * (JUnit 4.7 provider) Indicates that threadCount is per cpu core. * * @parameter expression="${perCoreThreadCount}" default-value="true" * @since 2.5 */ private boolean perCoreThreadCount; /** * (JUnit 4.7 provider) Indicates that the thread pool will be unlimited. The parallel parameter and * the actual number of classes/methods will decide. Setting this to "true" effectively disables * perCoreThreadCount and threadCount. Defaults to "false". * * @parameter expression="${useUnlimitedThreads}" default-value="false" * @since 2.5 */ private boolean useUnlimitedThreads; /** * (TestNG only) When you use the parallel attribute, TestNG will try to run all your test methods in * separate threads, except for methods that depend on each other, which will be run in the same thread in order to * respect their order of execution. *

* (JUnit 4.7 provider) Supports values "classes"/"methods"/"both" to run in separate threads, as controlled by * threadCount. * * @parameter expression="${parallel}" * @todo test how this works with forking, and console/file output parallelism * @since 2.2 */ private String parallel; /** * Whether to trim the stack trace in the reports to just the lines within the test, or show the full trace. * * @parameter expression="${trimStackTrace}" default-value="true" * @since 2.2 */ private boolean trimStackTrace; /** * Resolves the artifacts needed. * * @component */ private ArtifactResolver artifactResolver; /** * Creates the artifact. * * @component */ private ArtifactFactory artifactFactory; /** * The remote plugin repositories declared in the POM. * * @parameter expression="${project.pluginArtifactRepositories}" * @since 2.2 */ private List remoteRepositories; /** * For retrieval of artifact's metadata. * * @component */ private ArtifactMetadataSource metadataSource; private Properties originalSystemProperties; /** * systemPropertyVariables + systemProperties */ private Properties internalSystemProperties = new Properties(); /** * Flag to disable the generation of report files in xml format. * * @parameter expression="${disableXmlReport}" default-value="false" * @since 2.2 */ private boolean disableXmlReport; /** * Option to pass dependencies to the system's classloader instead of using an isolated class loader when forking. * Prevents problems with JDKs which implement the service provider lookup mechanism by using the system's * classloader. * * @parameter expression="${failsafe.useSystemClassLoader}" default-value="true" * @since 2.3 */ private boolean useSystemClassLoader; /** * By default, Surefire forks your tests using a manifest-only JAR; set this parameter to "false" to force it to * launch your tests with a plain old Java classpath. (See * http://maven.apache.org/plugins/maven-surefire-plugin/examples/class-loading.html for a more detailed explanation * of manifest-only JARs and their benefits.) *

* Beware, setting this to "false" may cause your tests to fail on Windows if your classpath is too long. * * @parameter expression="${failsafe.useManifestOnlyJar}" default-value="true" * @since 2.4.3 */ private boolean useManifestOnlyJar; /** * By default, Surefire enables JVM assertions for the execution of your test cases. To disable the assertions, set * this flag to "false". * * @parameter expression="${enableAssertions}" default-value="true" * @since 2.3.1 */ private boolean enableAssertions; /** * The current build session instance. * * @parameter expression="${session}" * @required * @readonly */ private MavenSession session; /** * (TestNG only) Define the factory class used to create all test instances. * * @parameter expression="${objectFactory}" * @since 2.5 */ private String objectFactory; /** * The character encoding scheme to be applied. * * @parameter expression="${encoding}" default-value="${project.reporting.outputEncoding}" */ private String encoding; /** * @parameter default-value="${session.parallel}" * @readonly */ private Boolean parallelMavenExecution; /** * Defines the order the tests will be run in. Supported values are "alphabetical", "reversealphabetical", "random", * "hourly" (alphabetical on even hours, reverse alphabetical on odd hours) and "filesystem". *

*

* Odd/Even for hourly is determined at the time the of scanning the classpath, meaning it could change during a * multi-module build. * * @parameter default-value="filesystem" * @since 2.7 */ private String runOrder; /** * @component */ private ToolchainManager toolchainManager; protected void handleSummary( Summary summary ) throws MojoExecutionException, MojoFailureException { FailsafeSummary failsafeSummary = createFailsafeSummaryFromSummary( summary ); writeSummary( failsafeSummary ); } private FailsafeSummary createFailsafeSummaryFromSummary( Summary summary ) { FailsafeSummary failsafeSummary = new FailsafeSummary(); if ( summary.isErrorFree() ) { RunResult result = summary.getResultOfLastSuccessfulRun(); if ( result != null ) { failsafeSummary.setResult( result.getForkedProcessCode() ); } } else { failsafeSummary.setResult( ProviderConfiguration.TESTS_FAILED_EXIT_CODE ); failsafeSummary.setException( summary.getFirstException().getMessage() ); } return failsafeSummary; } private void writeSummary( FailsafeSummary summary ) throws MojoExecutionException { File summaryFile = getSummaryFile(); if ( !summaryFile.getParentFile().isDirectory() ) { summaryFile.getParentFile().mkdirs(); } try { FileOutputStream fileOutputStream = new FileOutputStream( summaryFile ); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream( fileOutputStream ); Writer writer = new OutputStreamWriter( bufferedOutputStream, getEncodingOrDefault() ); FailsafeSummaryXpp3Writer xpp3Writer = new FailsafeSummaryXpp3Writer(); xpp3Writer.write( writer, summary ); writer.close(); bufferedOutputStream.close(); fileOutputStream.close(); } catch ( IOException e ) { throw new MojoExecutionException( e.getMessage(), e ); } } private String getEncodingOrDefault() { if ( StringUtils.isEmpty( encoding ) ) { getLog().warn( "File encoding has not been set, using platform encoding " + ReaderFactory.FILE_ENCODING + ", i.e. build is platform dependent!" ); return ReaderFactory.FILE_ENCODING; } else { return encoding; } } protected boolean isSkipExecution() { return isSkip() || isSkipTests() || isSkipITs() || isSkipExec(); } protected String getPluginName() { return "failsafe"; } protected String[] getDefaultIncludes() { return new String[]{"**/IT*.java", "**/*IT.java", "**/*ITCase.java"}; } public boolean isSkipTests() { return skipTests; } public void setSkipTests( boolean skipTests ) { this.skipTests = skipTests; } public boolean isSkipITs() { return skipITs; } public void setSkipITs( boolean skipITs ) { this.skipITs = skipITs; } public boolean isSkipExec() { return skipExec; } public void setSkipExec( boolean skipExec ) { this.skipExec = skipExec; } public boolean isSkip() { return skip; } public void setSkip( boolean skip ) { this.skip = skip; } public File getBasedir() { return basedir; } public void setBasedir( File basedir ) { this.basedir = basedir; } public File getTestClassesDirectory() { return testClassesDirectory; } public void setTestClassesDirectory( File testClassesDirectory ) { this.testClassesDirectory = testClassesDirectory; } public File getClassesDirectory() { return classesDirectory; } public void setClassesDirectory( File classesDirectory ) { this.classesDirectory = classesDirectory; } public MavenProject getProject() { return project; } public void setProject( MavenProject project ) { this.project = project; } public List getClasspathDependencyExcludes() { return classpathDependencyExcludes; } public void setClasspathDependencyExcludes( List classpathDependencyExcludes ) { this.classpathDependencyExcludes = classpathDependencyExcludes; } public String getClasspathDependencyScopeExclude() { return classpathDependencyScopeExclude; } public void setClasspathDependencyScopeExclude( String classpathDependencyScopeExclude ) { this.classpathDependencyScopeExclude = classpathDependencyScopeExclude; } public List getAdditionalClasspathElements() { return additionalClasspathElements; } public void setAdditionalClasspathElements( List additionalClasspathElements ) { this.additionalClasspathElements = additionalClasspathElements; } public File getReportsDirectory() { return reportsDirectory; } public void setReportsDirectory( File reportsDirectory ) { this.reportsDirectory = reportsDirectory; } public File getTestSourceDirectory() { return testSourceDirectory; } public void setTestSourceDirectory( File testSourceDirectory ) { this.testSourceDirectory = testSourceDirectory; } public String getTest() { if ( StringUtils.isBlank( test ) ) { return null; } int index = test.indexOf( '#' ); if ( index >= 0 ) { return test.substring( 0, index ); } return test; } public void setTest( String test ) { this.test = test; } /** * @since 2.7.3 */ public String getTestMethod() { if ( StringUtils.isBlank( test ) ) { return null; } int index = this.test.indexOf( '#' ); if ( index >= 0 ) { return this.test.substring( index + 1, this.test.length() ); } return null; } public List getIncludes() { return includes; } public void setIncludes( List includes ) { this.includes = includes; } public List getExcludes() { return excludes; } public void setExcludes( List excludes ) { this.excludes = excludes; } public ArtifactRepository getLocalRepository() { return localRepository; } public void setLocalRepository( ArtifactRepository localRepository ) { this.localRepository = localRepository; } public Properties getSystemProperties() { return systemProperties; } public void setSystemProperties( Properties systemProperties ) { this.systemProperties = systemProperties; } public Map getSystemPropertyVariables() { return systemPropertyVariables; } public void setSystemPropertyVariables( Map systemPropertyVariables ) { this.systemPropertyVariables = systemPropertyVariables; } public File getSystemPropertiesFile() { return systemPropertiesFile; } public void setSystemPropertiesFile( File systemPropertiesFile ) { this.systemPropertiesFile = systemPropertiesFile; } public Properties getProperties() { return properties; } public void setProperties( Properties properties ) { this.properties = properties; } public Map getPluginArtifactMap() { return pluginArtifactMap; } public void setPluginArtifactMap( Map pluginArtifactMap ) { this.pluginArtifactMap = pluginArtifactMap; } public Map getProjectArtifactMap() { return projectArtifactMap; } public void setProjectArtifactMap( Map projectArtifactMap ) { this.projectArtifactMap = projectArtifactMap; } public File getSummaryFile() { return summaryFile; } public void setSummaryFile( File summaryFile ) { this.summaryFile = summaryFile; } public boolean isPrintSummary() { return printSummary; } public void setPrintSummary( boolean printSummary ) { this.printSummary = printSummary; } public String getReportFormat() { return reportFormat; } public void setReportFormat( String reportFormat ) { this.reportFormat = reportFormat; } public String getReportNameSuffix() { return reportNameSuffix; } public void setReportNameSuffix( String reportNameSuffix ) { this.reportNameSuffix = reportNameSuffix; } public boolean isUseFile() { return useFile; } public void setUseFile( boolean useFile ) { this.useFile = useFile; } public boolean isRedirectTestOutputToFile() { return redirectTestOutputToFile; } public void setRedirectTestOutputToFile( boolean redirectTestOutputToFile ) { this.redirectTestOutputToFile = redirectTestOutputToFile; } public Boolean getFailIfNoTests() { return failIfNoTests; } public void setFailIfNoTests( Boolean failIfNoTests ) { this.failIfNoTests = failIfNoTests; } public String getForkMode() { return forkMode; } public void setForkMode( String forkMode ) { this.forkMode = forkMode; } public String getJvm() { return jvm; } public void setJvm( String jvm ) { this.jvm = jvm; } public String getArgLine() { return argLine; } public void setArgLine( String argLine ) { this.argLine = argLine; } public String getDebugForkedProcess() { return debugForkedProcess; } public void setDebugForkedProcess( String debugForkedProcess ) { this.debugForkedProcess = debugForkedProcess; } public int getForkedProcessTimeoutInSeconds() { return forkedProcessTimeoutInSeconds; } public void setForkedProcessTimeoutInSeconds( int forkedProcessTimeoutInSeconds ) { this.forkedProcessTimeoutInSeconds = forkedProcessTimeoutInSeconds; } public Map getEnvironmentVariables() { return environmentVariables; } public void setEnvironmentVariables( Map environmentVariables ) { this.environmentVariables = environmentVariables; } public File getWorkingDirectory() { return workingDirectory; } public void setWorkingDirectory( File workingDirectory ) { this.workingDirectory = workingDirectory; } public boolean isChildDelegation() { return childDelegation; } public void setChildDelegation( boolean childDelegation ) { this.childDelegation = childDelegation; } public String getGroups() { return groups; } public void setGroups( String groups ) { this.groups = groups; } public String getExcludedGroups() { return excludedGroups; } public void setExcludedGroups( String excludedGroups ) { this.excludedGroups = excludedGroups; } public File[] getSuiteXmlFiles() { return suiteXmlFiles; } public void setSuiteXmlFiles( File[] suiteXmlFiles ) { this.suiteXmlFiles = suiteXmlFiles; } public String getJunitArtifactName() { return junitArtifactName; } public void setJunitArtifactName( String junitArtifactName ) { this.junitArtifactName = junitArtifactName; } public String getTestNGArtifactName() { return testNGArtifactName; } public void setTestNGArtifactName( String testNGArtifactName ) { this.testNGArtifactName = testNGArtifactName; } public int getThreadCount() { return threadCount; } public void setThreadCount( int threadCount ) { this.threadCount = threadCount; } public boolean getPerCoreThreadCount() { return perCoreThreadCount; } public void setPerCoreThreadCount( boolean perCoreThreadCount ) { this.perCoreThreadCount = perCoreThreadCount; } public boolean getUseUnlimitedThreads() { return useUnlimitedThreads; } public void setUseUnlimitedThreads( boolean useUnlimitedThreads ) { this.useUnlimitedThreads = useUnlimitedThreads; } public String getParallel() { return parallel; } public void setParallel( String parallel ) { this.parallel = parallel; } public boolean isTrimStackTrace() { return trimStackTrace; } public void setTrimStackTrace( boolean trimStackTrace ) { this.trimStackTrace = trimStackTrace; } public ArtifactResolver getArtifactResolver() { return artifactResolver; } public void setArtifactResolver( ArtifactResolver artifactResolver ) { this.artifactResolver = artifactResolver; } public ArtifactFactory getArtifactFactory() { return artifactFactory; } public void setArtifactFactory( ArtifactFactory artifactFactory ) { this.artifactFactory = artifactFactory; } public List getRemoteRepositories() { return remoteRepositories; } public void setRemoteRepositories( List remoteRepositories ) { this.remoteRepositories = remoteRepositories; } public ArtifactMetadataSource getMetadataSource() { return metadataSource; } public void setMetadataSource( ArtifactMetadataSource metadataSource ) { this.metadataSource = metadataSource; } public Properties getOriginalSystemProperties() { return originalSystemProperties; } public void setOriginalSystemProperties( Properties originalSystemProperties ) { this.originalSystemProperties = originalSystemProperties; } public Properties getInternalSystemProperties() { return internalSystemProperties; } public void setInternalSystemProperties( Properties internalSystemProperties ) { this.internalSystemProperties = internalSystemProperties; } public boolean isDisableXmlReport() { return disableXmlReport; } public void setDisableXmlReport( boolean disableXmlReport ) { this.disableXmlReport = disableXmlReport; } public boolean isUseSystemClassLoader() { return useSystemClassLoader; } public void setUseSystemClassLoader( boolean useSystemClassLoader ) { this.useSystemClassLoader = useSystemClassLoader; } public boolean isUseManifestOnlyJar() { return useManifestOnlyJar; } public void setUseManifestOnlyJar( boolean useManifestOnlyJar ) { this.useManifestOnlyJar = useManifestOnlyJar; } public boolean isEnableAssertions() { return enableAssertions; } public void setEnableAssertions( boolean enableAssertions ) { this.enableAssertions = enableAssertions; } public MavenSession getSession() { return session; } public void setSession( MavenSession session ) { this.session = session; } public String getObjectFactory() { return objectFactory; } public void setObjectFactory( String objectFactory ) { this.objectFactory = objectFactory; } public ToolchainManager getToolchainManager() { return toolchainManager; } public void setToolchainManager( ToolchainManager toolchainManager ) { this.toolchainManager = toolchainManager; } // the following will be refactored out once the common code is all in one place public boolean isTestFailureIgnore() { return true; // ignore } public void setTestFailureIgnore( boolean testFailureIgnore ) { // ignore } public boolean isMavenParallel() { return parallelMavenExecution != null && parallelMavenExecution.booleanValue(); } public String getRunOrder() { return runOrder; } public void setRunOrder( String runOrder ) { this.runOrder = runOrder; } protected void addPluginSpecificChecksumItems( ChecksumCalculator checksum ) { checksum.add( skipITs ); checksum.add( summaryFile ); } } surefire-2.10/maven-failsafe-plugin/src/main/mdo/0000755000175000017500000000000011645102474020474 5ustar tonytonysurefire-2.10/maven-failsafe-plugin/src/main/mdo/failsafe-summary.mdo0000644000175000017500000001046211477261561024453 0ustar tonytony failsafe-summary FailsafeSummary A summary of tests executed by the Maven Failsafe Plugin. package org.apache.maven.surefire.failsafe.model namespace FailsafeSummary Describes the results of executing tests 2.4.3+ result 2.4.3+ true int The surefire result code exception 2.4.3+ false String The exception that caused surefire to bomb out 2.6.0 surefire-2.10/surefire-providers/0000755000175000017500000000000011645102474015667 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/0000755000175000017500000000000011645102474020726 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/pom.xml0000644000175000017500000000672311640163725022254 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire-providers 2.10 ../pom.xml surefire-junit4 SureFire JUnit4 Runner junit junit 4.0 provided org.apache.maven.surefire common-junit4 ${project.version} org.codehaus.plexus plexus-utils src/main/resources/META-INF META-INF maven-compiler-plugin 1.5 1.5 maven-surefire-plugin ${java.home}/bin/java org.apache.maven.plugins maven-shade-plugin 1.4 package shade true org.apache.maven.surefire:common-junit3 org.apache.maven.surefire:common-junit4 org.codehaus.plexus:plexus-utils org.codehaus.plexus.util org.apache.maven.surefire.shade.org.codehaus.plexus.util surefire-2.10/surefire-providers/surefire-junit4/src/0000755000175000017500000000000011645102474021515 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/test/0000755000175000017500000000000011645102474022474 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/test/java/0000755000175000017500000000000011645102474023415 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/test/java/org/0000755000175000017500000000000011645102474024204 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/test/java/org/apache/0000755000175000017500000000000011645102474025425 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/0000755000175000017500000000000011645102474026533 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030357 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/0000755000175000017500000000000011645102474031574 5ustar tonytony././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.javasurefire-2.10/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUni0000644000175000017500000000306011556104214032356 0ustar tonytonypackage org.apache.maven.surefire.junit4; /* * 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. */ import java.util.Properties; import org.apache.maven.surefire.booter.BaseProviderFactory; import org.apache.maven.surefire.testset.TestRequest; import junit.framework.TestCase; /** * @author Kristian Rosenvold */ public class JUnit4ProviderTest extends TestCase { public void testCreateProvider(){ BaseProviderFactory providerParameters = new BaseProviderFactory(null); providerParameters.setProviderProperties( new Properties() ); providerParameters.setClassLoaders( this.getClass().getClassLoader(), this.getClass().getClassLoader() ); providerParameters.setTestRequest( new TestRequest( null, null, null ) ); assertNotNull(new JUnit4Provider( providerParameters )); } } surefire-2.10/surefire-providers/surefire-junit4/src/main/0000755000175000017500000000000011645102474022441 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/main/java/0000755000175000017500000000000011645102474023362 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/main/java/org/0000755000175000017500000000000011645102474024151 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/main/java/org/apache/0000755000175000017500000000000011645102474025372 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/0000755000175000017500000000000011645102474026500 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030324 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/0000755000175000017500000000000011645102474031541 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4TestSet.javasurefire-2.10/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUni0000644000175000017500000000370511557340256032342 0ustar tonytonypackage org.apache.maven.surefire.junit4; /* * 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. */ import java.lang.reflect.Method; import org.apache.maven.surefire.testset.TestSetFailedException; import org.apache.maven.surefire.util.internal.StringUtils; import org.codehaus.plexus.util.SelectorUtils; import org.junit.runner.Request; import org.junit.runner.Runner; import org.junit.runner.notification.RunNotifier; class JUnit4TestSet { public static void execute( Class testClass, RunNotifier fNotifier, String testMethod ) throws TestSetFailedException { if ( !StringUtils.isBlank( testMethod ) ) { Method[] methods = testClass.getMethods(); for (int i = 0,size = methods.length;i customRunListeners; private final JUnit4TestChecker jUnit4TestChecker; private final String requestedTestMethod; private TestsToRun testsToRun; private final ProviderParameters providerParameters; public JUnit4Provider( ProviderParameters booterParameters ) { this.providerParameters = booterParameters; this.testClassLoader = booterParameters.getTestClassLoader(); this.directoryScanner = booterParameters.getDirectoryScanner(); customRunListeners = JUnit4RunListenerFactory. createCustomListeners( booterParameters.getProviderProperties().getProperty( "listener" ) ); jUnit4TestChecker = new JUnit4TestChecker( testClassLoader ); requestedTestMethod = booterParameters.getTestRequest().getRequestedTestMethod(); } public RunResult invoke( Object forkTestSet ) throws TestSetFailedException, ReporterException { if ( testsToRun == null ) { testsToRun = forkTestSet == null ? scanClassPath() : TestsToRun.fromClass( (Class) forkTestSet ); } upgradeCheck(); final ReporterFactory reporterFactory = providerParameters.getReporterFactory(); final RunListener reporter = reporterFactory.createReporter(); ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporter ); JUnit4RunListener jUnit4TestSetReporter = new JUnit4RunListener( reporter ); Result result = new Result(); RunNotifier runNotifer = getRunNotifer( jUnit4TestSetReporter, result, customRunListeners ); runNotifer.fireTestRunStarted( null ); for ( Class clazz : testsToRun.getLocatedClasses() ) { executeTestSet( clazz, reporter, runNotifer ); } runNotifer.fireTestRunFinished( result ); closeRunNotifer( jUnit4TestSetReporter, customRunListeners ); return reporterFactory.close(); } private void executeTestSet( Class clazz, RunListener reporter, RunNotifier listeners ) throws ReporterException, TestSetFailedException { final ReportEntry report = new SimpleReportEntry( this.getClass().getName(), clazz.getName() ); reporter.testSetStarting( report ); try { JUnit4TestSet.execute( clazz, listeners, this.requestedTestMethod ); } catch ( TestSetFailedException e ) { throw e; } catch ( Throwable e ) { reporter.testError( new SimpleReportEntry( report.getSourceName(), report.getName(), new PojoStackTraceWriter( report.getSourceName(), report.getName(), e ) ) ); } finally { reporter.testSetCompleted( report ); } } private RunNotifier getRunNotifer( org.junit.runner.notification.RunListener main, Result result, List others ) { RunNotifier fNotifier = new RunNotifier(); fNotifier.addListener( main ); fNotifier.addListener( result.createListener() ); for ( org.junit.runner.notification.RunListener listener : others ) { fNotifier.addListener( listener ); } return fNotifier; } // I am not entierly sure as to why we do this explicit freeing, it's one of those // pieces of code that just seem to linger on in here ;) private void closeRunNotifer( org.junit.runner.notification.RunListener main, List others ) { RunNotifier fNotifier = new RunNotifier(); fNotifier.removeListener( main ); for ( org.junit.runner.notification.RunListener listener : others ) { fNotifier.removeListener( listener ); } } public Iterator getSuites() { testsToRun = scanClassPath(); return testsToRun.iterator(); } private TestsToRun scanClassPath() { return directoryScanner.locateTestClasses( testClassLoader, jUnit4TestChecker ); } private void upgradeCheck() throws TestSetFailedException { if ( isJunit4UpgradeCheck() && ( (DefaultDirectoryScanner) directoryScanner ).getClassesSkippedByValidation().size() > 0 ) { StringBuilder reason = new StringBuilder(); reason.append( "Updated check failed\n" ); reason.append( "There are tests that would be run with junit4 / surefire 2.6 but not with [2.7,):\n" ); //noinspection unchecked for ( Class testClass : (List) ( (DefaultDirectoryScanner) directoryScanner ).getClassesSkippedByValidation() ) { reason.append( " " ); reason.append( testClass.getCanonicalName() ); reason.append( "\n" ); } throw new TestSetFailedException( reason.toString() ); } } private boolean isJunit4UpgradeCheck() { final String property = System.getProperty( "surefire.junit4.upgradecheck" ); return property != null; } } surefire-2.10/surefire-providers/surefire-junit4/src/main/resources/0000755000175000017500000000000011645102474024453 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/main/resources/META-INF/0000755000175000017500000000000011645102474025613 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit4/src/main/resources/META-INF/services/0000755000175000017500000000000011645102474027436 5ustar tonytony././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit4/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvidersurefire-2.10/surefire-providers/surefire-junit4/src/main/resources/META-INF/services/org.apache.mav0000644000175000017500000000006011476536715032161 0ustar tonytonyorg.apache.maven.surefire.junit4.JUnit4Provider surefire-2.10/surefire-providers/surefire-junit47/0000755000175000017500000000000011645102474021015 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/pom.xml0000644000175000017500000000714711640163725022344 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire-providers 2.10 ../pom.xml surefire-junit47 SureFire JUnitCore Runner junit junit 4.8.1 provided org.codehaus.plexus plexus-utils org.mockito mockito-all 1.7 test org.apache.maven.surefire common-junit4 ${project.version} src/main/resources/META-INF META-INF maven-compiler-plugin true 1.5 1.5 1.5 maven-surefire-plugin ${java.home}/bin/java false org.apache.maven.surefire surefire-shadefire ${project.version} org.apache.maven.plugins maven-shade-plugin package shade org.apache.maven.surefire:common-junit3 org.apache.maven.surefire:common-junit4 surefire-2.10/surefire-providers/surefire-junit47/src/0000755000175000017500000000000011645102474021604 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/test/0000755000175000017500000000000011645102474022563 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/test/java/0000755000175000017500000000000011645102474023504 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/0000755000175000017500000000000011645102474024273 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/0000755000175000017500000000000011645102474025514 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/0000755000175000017500000000000011645102474026622 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030446 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/surefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/0000755000175000017500000000000011645102474032450 5ustar tonytony././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListenerTest.javasurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/0000644000175000017500000000363711537466426032475 0ustar tonytonypackage org.apache.maven.surefire.junitcore; import org.apache.maven.surefire.junit4.MockReporter; import java.util.HashMap; import junit.framework.TestCase; import org.junit.Assume; import org.junit.Test; import org.junit.runner.Computer; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.RunListener; /** * @author Kristian Rosenvold */ public class JUnitCoreRunListenerTest extends TestCase { public void testTestRunStarted() throws Exception { RunListener jUnit4TestSetReporter = new JUnitCoreRunListener( new MockReporter( ) , new HashMap( ) ); JUnitCore core = new JUnitCore(); core.addListener( jUnit4TestSetReporter ); Result result = core.run( new Computer(), STest1.class, STest2.class); core.removeListener( jUnit4TestSetReporter ); assertEquals(2, result.getRunCount()); } public void testFailedAssumption() throws Exception { RunListener jUnit4TestSetReporter = new JUnitCoreRunListener( new MockReporter( ) , new HashMap( ) ); JUnitCore core = new JUnitCore(); core.addListener( jUnit4TestSetReporter ); Result result = core.run( new Computer(), TestWithAssumptionFailure.class); core.removeListener( jUnit4TestSetReporter ); assertEquals(1, result.getRunCount()); } public static class STest1 { @Test public void testSomething(){ } } public static class STest2 { @Test public void testSomething2(){ } } public static class TestWithAssumptionFailure { @Test public void testSomething2() { Assume.assumeTrue(false); } } } ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConfigurableParallelComputerTest.javasurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/0000644000175000017500000002441111557340256032460 0ustar tonytony/* * 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. */ package org.apache.maven.surefire.junitcore; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import junit.framework.TestCase; import org.junit.Test; import org.junit.runner.Computer; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.RunListener; /** * Simple test of ConfigurableParallelComputer. * * @author Kristian Rosenvold */ public class ConfigurableParallelComputerTest extends TestCase { private static final int NUMTESTS = 1000; // I'm sorry about all the sout's in this test; but if you deadlock when building you will appreciate it. @Test public void testAnythingYouWantToPlayWith() throws Exception { Result result = new Result(); Class[] realClasses = new Class[]{ Dummy.class, Dummy2.class }; DiagnosticRunListener diagnosticRunListener = new DiagnosticRunListener( false, result.createListener() ); JUnitCore jUnitCore = getJunitCore( diagnosticRunListener ); ConfigurableParallelComputer computer = new ConfigurableParallelComputer( true, false ); jUnitCore.run( computer, realClasses ); computer.close(); assertEquals( "All tests should succeed, right ?", 5, result.getRunCount() ); } @Test public void testOneMethod() throws ExecutionException { JUnitCore jUnitCore = new JUnitCore(); ConfigurableParallelComputer computer = new ConfigurableParallelComputer( false, true ); jUnitCore.run( computer, new Class[]{ Dummy.class, Dummy.class, Dummy.class } ); computer.close(); } @Test public void testSerial() throws Exception { Result result = new Result(); Class[] realClasses = getClassList(); JUnitCore jUnitCore = getJunitCore( result ); Computer computer = new Computer(); timedRun( NUMTESTS, result, realClasses, jUnitCore, computer ); } @Test public void testFullTestRunPC() throws Exception { Result result = new Result(); Class[] realClasses = getClassList(); JUnitCore jUnitCore = getJunitCore( result ); Computer computer = new ConfigurableParallelComputer( true, true ); timedRun( NUMTESTS, result, realClasses, jUnitCore, computer ); } @Test public void testWithFailingAssertionCPC() throws Exception { runWithFailingAssertion( new ConfigurableParallelComputer( false, true, 6, true ) ); runWithFailingAssertion( new ConfigurableParallelComputer( true, false, 12, false ) ); runWithFailingAssertion( new ConfigurableParallelComputer( true, true, 2, false ) ); } @Test public void testWithSlowTestJustAfew() throws Exception { Result result = new Result(); final Computer computer = new ConfigurableParallelComputer( false, true, 3, false ); Class[] realClasses = getClassList( SlowTest.class, 5 ); // 300 ms in methods, 600 in classes JUnitCore jUnitCore = getJunitCore( result ); runIt( realClasses, jUnitCore, computer ); } private void runWithFailingAssertion( Computer computer ) throws ExecutionException { Result result = new Result(); Class[] realClasses = getClassList( FailingAssertions.class ); JUnitCore jUnitCore = getJunitCore( result ); runIt( realClasses, jUnitCore, computer ); assertEquals( "No tests should fail, right ?", NUMTESTS, result.getFailures().size() ); assertEquals( "All tests should succeed, right ?", 0, result.getIgnoreCount() ); assertEquals( "All tests should succeed, right ?", NUMTESTS * 3, result.getRunCount() ); } @Test public void testWithFailure() throws Exception { Computer computer = new ConfigurableParallelComputer( false, true, 4, true ); Result result = new Result(); Class[] realClasses = getClassList( Failure.class ); JUnitCore jUnitCore = getJunitCore( result ); runIt( realClasses, jUnitCore, computer ); assertEquals( "No tests should fail, right ?", NUMTESTS, result.getFailures().size() ); assertEquals( "All tests should succeed, right ?", 0, result.getIgnoreCount() ); assertEquals( "All tests should succeed, right ?", NUMTESTS * 3, result.getRunCount() ); } @Test public void testFixedThreadPool() throws Exception { Result result = new Result(); Class[] realClasses = getClassList(); JUnitCore jUnitCore = getJunitCore( result ); ConfigurableParallelComputer computer = new ConfigurableParallelComputer( false, true, 2, false ); long resp = timedRun( NUMTESTS, result, realClasses, jUnitCore, computer ); } @Test public void testClassesUnlimited() throws Exception { Result result = new Result(); Class[] realClasses = getClassList(); JUnitCore jUnitCore = getJunitCore( result ); ConfigurableParallelComputer computer = new ConfigurableParallelComputer( true, false ); timedRun( NUMTESTS, result, realClasses, jUnitCore, computer ); } @Test public void testBothUnlimited() throws Exception { Result result = new Result(); Class[] realClasses = getClassList(); DiagnosticRunListener diagnosticRunListener = new DiagnosticRunListener( false, result.createListener() ); JUnitCore jUnitCore = getJunitCore( diagnosticRunListener ); ConfigurableParallelComputer computer = new ConfigurableParallelComputer( true, true ); timedRun( NUMTESTS, result, realClasses, jUnitCore, computer ); } private JUnitCore getJunitCore( Result result ) { RunListener listener = result.createListener(); JUnitCore jUnitCore = new JUnitCore(); jUnitCore.addListener( listener ); return jUnitCore; } private JUnitCore getJunitCore( RunListener listener ) { JUnitCore jUnitCore = new JUnitCore(); jUnitCore.addListener( listener ); return jUnitCore; } private long runIt( Class[] realClasses, JUnitCore jUnitCore, Computer computer ) throws ExecutionException { long start = System.currentTimeMillis(); jUnitCore.run( computer, realClasses ); if ( computer instanceof ConfigurableParallelComputer ) { ( (ConfigurableParallelComputer) computer ).close(); } return System.currentTimeMillis() - start; } private long timedRun( int NUMTESTS, Result result, Class[] realClasses, JUnitCore jUnitCore, Computer computer ) throws ExecutionException { long time = runIt( realClasses, jUnitCore, computer ); assertEquals( "No tests should fail, right ?", 0, result.getFailures().size() ); assertEquals( "All tests should succeed, right ?", 0, result.getIgnoreCount() ); assertEquals( "All tests should succeed, right ?", NUMTESTS * 3, result.getRunCount() ); return time; } private Class[] getClassList() { return getClassList( Dummy.class, NUMTESTS ); } private Class[] getClassList( Class testClass ) { return getClassList( testClass, NUMTESTS ); } private Class[] getClassList( Class testClass, int numItems ) { List realClasses = new ArrayList(); for ( int i = 0; i < numItems; i++ ) { realClasses.add( testClass ); } return realClasses.toArray( new Class[realClasses.size()] ); } static void sleepReallyEvenOnWindows(long ms) throws InterruptedException { long endAt = System.currentTimeMillis() + ms; Thread.sleep( ms); while ( endAt > System.currentTimeMillis()){ Thread.sleep( ms/10); Thread.yield(); } } public static class Dummy { @Test public void testNotMuch() { } @Test public void testStub1() { // Add your code here } @Test public void testStub2() { // Add your code here } } public static class Dummy2 { @Test public void testNotMuch() { } @Test public void testDummy2() { // Add your code here } } public static class SlowTest { final int scaling = 100; @Test public void testNotMuch() throws InterruptedException { sleepReallyEvenOnWindows( scaling ); } @Test public void testNotMuch2() throws InterruptedException { sleepReallyEvenOnWindows( 3 * scaling ); } @Test public void testNotMuch3() throws InterruptedException { sleepReallyEvenOnWindows( 2 * scaling ); } } public static class FailingAssertions { @Test public void testNotMuch() { } @Test public void testNotMuch2() { } @Test public void testWithFail() { fail( "We excpect this" ); } } public static class Failure { @Test public void testNotMuch() { } @Test public void testNotMuch2() { } @Test public void testWithException() { throw new RuntimeException( "We expect this" ); } } }././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreParametersTest.javasurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/0000644000175000017500000001167411537144450032463 0ustar tonytony/* * 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. */ package org.apache.maven.surefire.junitcore; import junit.framework.TestCase; import org.junit.Test; import java.util.Properties; import static org.junit.Assert.*; /* * @author Kristian Rosenvold, kristian.rosenvold@gmail com */ public class JUnitCoreParametersTest extends TestCase { public void testIsParallelMethod() throws Exception { assertFalse( getTestSetClasses().isParallelMethod() ); assertTrue( getTestSetMethods().isParallelMethod() ); assertFalse( getTestSetBoth().isParallelMethod() ); } public void testIsParallelClasses() throws Exception { assertTrue( getTestSetClasses().isParallelClasses() ); assertFalse( getTestSetMethods().isParallelClasses() ); assertFalse( getTestSetBoth().isParallelClasses() ); } public void testIsParallelBoth() throws Exception { assertFalse( getTestSetClasses().isParallelBoth() ); assertFalse( getTestSetMethods().isParallelBoth() ); assertTrue( getTestSetBoth().isParallelBoth() ); } public void testIsPerCoreThreadCount() throws Exception { assertFalse( getTestSetClasses().isPerCoreThreadCount() ); assertFalse( getTestSetMethods().isPerCoreThreadCount() ); assertTrue( getTestSetBoth().isPerCoreThreadCount() ); } public void testGetThreadCount() throws Exception { assertFalse( getTestSetClasses().isPerCoreThreadCount() ); assertFalse( getTestSetMethods().isPerCoreThreadCount() ); assertTrue( getTestSetBoth().isPerCoreThreadCount() ); } public void testIsUseUnlimitedThreads() throws Exception { assertFalse( getTestSetClasses().isUseUnlimitedThreads() ); assertTrue( getTestSetMethods().isUseUnlimitedThreads() ); assertFalse( getTestSetBoth().isUseUnlimitedThreads() ); } public void testIsNoThreading() throws Exception { assertFalse( getTestSetClasses().isNoThreading() ); assertFalse( getTestSetMethods().isNoThreading() ); assertFalse( getTestSetBoth().isNoThreading() ); } public void testIsAnyParallelitySelected() throws Exception { assertTrue( getTestSetClasses().isAnyParallelitySelected() ); assertTrue( getTestSetMethods().isAnyParallelitySelected() ); assertTrue( getTestSetBoth().isAnyParallelitySelected() ); } public void testToString() throws Exception { assertNotNull( getTestSetBoth().toString() ); } public Properties getPropsetClasses() { Properties props = new Properties(); props.setProperty( JUnitCoreParameters.PARALLEL_KEY, "classes" ); props.setProperty( JUnitCoreParameters.PERCORETHREADCOUNT_KEY, "false" ); props.setProperty( JUnitCoreParameters.THREADCOUNT_KEY, "2" ); props.setProperty( JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY, "false" ); return props; } public Properties getPropsetMethods() { Properties props = new Properties(); props.setProperty( JUnitCoreParameters.PARALLEL_KEY, "methods" ); props.setProperty( JUnitCoreParameters.PERCORETHREADCOUNT_KEY, "false" ); props.setProperty( JUnitCoreParameters.THREADCOUNT_KEY, "2" ); props.setProperty( JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY, "true" ); return props; } public Properties getPropsetBoth() { Properties props = new Properties(); props.setProperty( JUnitCoreParameters.PARALLEL_KEY, "both" ); props.setProperty( JUnitCoreParameters.PERCORETHREADCOUNT_KEY, "true" ); props.setProperty( JUnitCoreParameters.THREADCOUNT_KEY, "7" ); props.setProperty( JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY, "false" ); return props; } private JUnitCoreParameters getTestSetBoth() { return new JUnitCoreParameters( getPropsetBoth() ); } private JUnitCoreParameters getTestSetClasses() { return new JUnitCoreParameters( getPropsetClasses() ); } private JUnitCoreParameters getTestSetMethods() { return new JUnitCoreParameters( getPropsetMethods() ); } } ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MavenSurefireJUnit47RunnerTest.javasurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/0000644000175000017500000001614711563247454032472 0ustar tonytony/* * JBoss, Home of Professional Open Source * Copyright 2009, Red Hat Middleware LLC, and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * 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. */ package org.apache.maven.surefire.junitcore; import java.io.File; import java.util.HashMap; import org.apache.maven.plugin.surefire.report.FileReporterFactory; import org.apache.maven.surefire.booter.StartupReportConfiguration; import org.apache.maven.surefire.report.DefaultConsoleReporter; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.report.RunListener; import junit.framework.Assert; import junit.framework.TestCase; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.Computer; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; /** * TestCase that expose "No tests were executed!" on Test failure using Maven Surefire 2.6-SNAPSHOT * and the JUnit 4.7 Runner. *

* ------------------------------------------------------- * T E S T S * ------------------------------------------------------- *

* Results : *

* Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 *

* [INFO] ------------------------------------------------------------------------ * [INFO] BUILD FAILURE * [INFO] ------------------------------------------------------------------------ * [INFO] Total time: 11.011s * [INFO] Finished at: Thu Jul 15 13:59:14 CEST 2010 * [INFO] Final Memory: 24M/355M * [INFO] ------------------------------------------------------------------------ * [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test * (default-test) on project xxxxxx: No tests were executed! (Set -DfailIfNoTests=false to * ignore this error.) -> [Help 1] *

*

* * junit * junit * 4.8.1 * test * *

* * org.apache.maven.surefire * surefire-booter * 2.6-SNAPSHOT * test * * * org.apache.maven.plugins * maven-surefire-plugin * 2.6-SNAPSHOT * test * * * org.apache.maven.surefire * surefire-junit47 * 2.6-SNAPSHOT * test * * * @author Aslak Knutsen * @version $Revision: $ */ public class MavenSurefireJUnit47RunnerTest extends TestCase { /* * Assumption: * The ConcurrentReportingRunListener assumes a Test will be Started before it Fails or Finishes. * * Reality: * JUnits ParentRunner is responsible for adding the BeforeClass/AfterClass statements to the * statement execution chain. After BeforeClass is executed, a Statement that delegates to the * abstract method: runChild(T child, RunNotifier notifier) is called. As the JavaDoc explains: * "Subclasses are responsible for making sure that relevant test events are reported through {@code notifier}". * When a @BeforeClass fail, the child that should handle the relevant test events(Started, Failed, Finished) * is never executed. * * Result: * When Test Failed event is received in ConcurrentReportingRunListener without a Started event received first, * it causes a NullPointException because there is no ClassReporter setup for that class yet. When this Exception * is thrown from the ConcurrentReportingRunListener, JUnit catches the exception and reports is as a Failed test. * But to avoid a wild loop, it removes the failing Listener before calling Failed test again. Since the * ConcurrentReportingRunListener now is removed from the chain it will never receive the RunFinished event * and the recorded state will never be replayed on the ReportManager. * * The End result: ReporterManager falsely believe no Test were run. * */ @SuppressWarnings( { "unchecked", "ThrowableResultOfMethodCallIgnored" } ) public void testSurefireShouldBeAbleToReportRunStatusEvenWithFailingTests() throws Exception { ReporterFactory reporterManagerFactory = new FileReporterFactory( StartupReportConfiguration.defaultNoXml() ); final HashMap classMethodCounts = new HashMap(); RunListener reporter = ConcurrentReporterManager.createInstance( classMethodCounts, reporterManagerFactory, false, false, new DefaultConsoleReporter( System.out ) ); org.junit.runner.notification.RunListener concurrentReportingRunListener = new JUnitCoreRunListener( reporter, classMethodCounts ); Computer computer = new Computer(); JUnitCore junitCore = new JUnitCore(); junitCore.addListener( concurrentReportingRunListener ); Result result = junitCore.run( computer, FailingTestClassTestNot.class ); junitCore.removeListener( concurrentReportingRunListener ); Assert.assertEquals( "JUnit should report correctly number of test ran(Finished)", 0, result.getRunCount() ); // Sys.out swallowed in ConsoleReporter.. for ( Failure failure : result.getFailures() ) { System.out.println( failure.getException().getMessage() ); } Assert.assertEquals( "There should only be one Exception reported, the one from the failing TestCase", 1, result.getFailureCount() ); Assert.assertEquals( "The exception thrown by the failing TestCase", RuntimeException.class, result.getFailures().get( 0 ).getException().getClass() ); reporterManagerFactory.close(); } private ReporterConfiguration getReporterConfiguration() { return new ReporterConfiguration( new File( "." ), true ); } /** * Simple TestCase to force a Exception in @BeforeClass. */ public static class FailingTestClassTestNot { @BeforeClass public static void failingBeforeClass() throws Exception { throw new RuntimeException( "Opps, we failed in @BeforeClass" ); } @Test public void shouldNeverBeCalled() throws Exception { Assert.assertTrue( true ); } } } ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/DiagnosticRunListener.javasurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/0000644000175000017500000001026011557340256032455 0ustar tonytony/* * Copyright 2002-2009 the original author or authors. * * 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. * * Also licensed under CPL http://junit.sourceforge.net/cpl-v10.html */ package org.apache.maven.surefire.junitcore; import java.util.concurrent.atomic.AtomicInteger; import org.junit.runner.Description; import org.junit.runner.Result; import org.junit.runner.notification.Failure; import org.junit.runner.notification.RunListener; /* * @author Kristian Rosenvold, kristianAzeniorD0Tno */ public class DiagnosticRunListener extends RunListener { private final AtomicInteger numTestStarted = new AtomicInteger(); private final AtomicInteger numTestFailed = new AtomicInteger(); private final AtomicInteger numTestAssumptionsFailed = new AtomicInteger(); private final AtomicInteger numTestFinished = new AtomicInteger(); private final AtomicInteger numTestIgnored = new AtomicInteger(); private final boolean printToConsole; private final RunListener target; private void print(String event, Description description) { if (printToConsole) System.out.println(Thread.currentThread().toString() + ", event = " + event + ", " + description); } private void print(String event, Result description) { if (printToConsole) System.out.println(Thread.currentThread().toString() + ", event = " + event + ", " + description); } private void print(String event, Failure description) { if (printToConsole) System.out.println(Thread.currentThread().toString() + ", event = " + event + ", " + description); } public DiagnosticRunListener(boolean printToConsole, RunListener target) { this.printToConsole = printToConsole; this.target = target; } @Override public void testRunStarted(Description description) throws Exception { print("testRunStarted", description); if (target != null) target.testRunStarted( description); } @Override public void testRunFinished(Result result) throws Exception { print("testRunFinished", result); if (target != null) target.testRunFinished( result); } @Override public void testStarted(Description description) throws Exception { numTestStarted.incrementAndGet(); print("testStarted", description); if (target != null) target.testStarted( description); } @Override public void testFinished(Description description) throws Exception { numTestFinished.incrementAndGet(); print("testFinished", description); if (target != null) target.testFinished( description); } @Override public void testFailure(Failure failure) throws Exception { numTestFailed.incrementAndGet(); print("testFailure", failure); if (target != null) target.testFailure( failure); } @Override public void testAssumptionFailure(Failure failure) { numTestAssumptionsFailed.incrementAndGet(); print("testAssumptionFailure", failure); if (target != null) target.testAssumptionFailure( failure); } @Override public void testIgnored(Description description) throws Exception { numTestIgnored.incrementAndGet(); print("testIgnored", description); if (target != null) target.testIgnored( description); } @Override public String toString() { return "DiagnosticRunListener{" + "numTestIgnored=" + numTestIgnored + ", numTestStarted=" + numTestStarted + ", numTestFailed=" + numTestFailed + ", numTestAssumptionsFailed=" + numTestAssumptionsFailed + ", numTestFinished=" + numTestFinished + '}'; } } ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentReporterManagerTest.javasurefire-2.10/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/0000644000175000017500000002662411563247454032473 0ustar tonytony/* * 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. */ package org.apache.maven.surefire.junitcore; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.PrintStream; import java.util.HashMap; import java.util.Map; import org.apache.maven.plugin.surefire.report.FileReporterFactory; import org.apache.maven.surefire.booter.StartupReportConfiguration; import org.apache.maven.surefire.report.DefaultConsoleReporter; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.RunStatistics; import org.apache.maven.surefire.testset.TestSetFailedException; import junit.framework.Assert; import junit.framework.TestCase; import junit.framework.TestSuite; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.Computer; import org.junit.runner.JUnitCore; /* * @author Kristian Rosenvold */ public class ConcurrentReporterManagerTest extends TestCase { // Tests are in order of increasing complexity public void testNoErrorsCounting() throws Exception { runClasses( 3, 0, 0, DummyAllOk.class ); } public void testNoErrorsCounting2() throws Exception { runClasses( 2, 0, 0, Dummy3.class ); } public void testOneIgnoreCounting() throws Exception { runClasses( 3, 1, 0, DummyWithOneIgnore.class ); } public void testOneFailureCounting() throws Exception { runClasses( 3, 0, 1, DummyWithFailure.class ); } public void testWithErrorsCountingDemultiplexed() throws Exception { runClasses( 6, 1, 1, DummyWithOneIgnore.class, DummyWithFailure.class ); } public void testJunitResultCountingDemultiplexed() throws Exception { runClasses( 8, 1, 1, DummyWithOneIgnore.class, DummyWithFailure.class, Dummy3.class ); } public void testJunitResultCountingJUnit3Demultiplexed() throws Exception { runClasses( 3, 0, 0, Junit3Tc1.class, Junit3Tc2.class ); } public void testJunitResultCountingJUnit3OddTest() throws Exception { runClasses( 2, 0, 0, Junit3OddTest1.class ); } public void testJunit3WithNestedSuite() throws TestSetFailedException { runClasses( 4, 0, 0, Junit3WithNestedSuite.class ); } public void testJunit3NestedSuite() throws Exception { runClasses( 2, 0, 0, Junit3OddTest1.class ); } public void testSimpleOutput() throws Exception { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); PrintStream collector = new PrintStream( byteArrayOutputStream ); PrintStream orgOur = System.out; System.setOut( collector ); RunStatistics result = runClasses( Dummy3.class ); assertReporter( result, 2, 0, 0, "msgs" ); String foo = new String( byteArrayOutputStream.toByteArray() ); assertNotNull( foo ); System.setOut( orgOur ); } public void testOutputOrdering() throws Exception { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); PrintStream collector = new PrintStream( byteArrayOutputStream ); PrintStream orgOur = System.out; System.setOut( collector ); RunStatistics result = runClasses( DummyWithOneIgnore.class, DummyWithFailure.class, Dummy3.class ); assertReporter( result, 8, 1, 1, "msgs" ); String foo = new String( byteArrayOutputStream.toByteArray() ); assertNotNull( foo ); System.setOut( orgOur ); // final List stringList = result.getEvents(); // assertEquals( 23, stringList.size() ); } private void runClasses( int success, int ignored, int failure, Class... classes ) throws TestSetFailedException { ReporterFactory reporterFactory = createReporterFactory(); HashMap classMethodCounts = new HashMap(); final DefaultConsoleReporter defaultConsoleReporter = new DefaultConsoleReporter( System.out ); RunListener reporter = new ClassesParallelRunListener( classMethodCounts, reporterFactory, defaultConsoleReporter ); JUnitCoreRunListener runListener = new JUnitCoreRunListener( reporter, classMethodCounts ); RunStatistics result = runClasses( reporterFactory, runListener, classes ); assertReporter( result, success, ignored, failure, "classes" ); classMethodCounts.clear(); reporterFactory = createReporterFactory(); reporter = new MethodsParallelRunListener( classMethodCounts, reporterFactory, true, defaultConsoleReporter ); runListener = new JUnitCoreRunListener( reporter, classMethodCounts ); result = runClasses( reporterFactory, runListener, classes ); assertReporter( result, success, ignored, failure, "methods" ); } private RunStatistics runClasses( Class... classes ) throws TestSetFailedException { HashMap classMethodCounts = new HashMap(); final ReporterFactory reporterManagerFactory = createReporterFactory(); org.junit.runner.notification.RunListener demultiplexingRunListener = createRunListener( reporterManagerFactory, classMethodCounts ); JUnitCore jUnitCore = new JUnitCore(); jUnitCore.addListener( demultiplexingRunListener ); Computer computer = new Computer(); jUnitCore.run( computer, classes ); reporterManagerFactory.close(); return reporterManagerFactory.getGlobalRunStatistics(); } private RunStatistics runClasses( ReporterFactory reporterManagerFactory, org.junit.runner.notification.RunListener demultiplexingRunListener, Class... classes ) throws TestSetFailedException { JUnitCore jUnitCore = new JUnitCore(); jUnitCore.addListener( demultiplexingRunListener ); Computer computer = new Computer(); jUnitCore.run( computer, classes ); return reporterManagerFactory.getGlobalRunStatistics(); } private org.junit.runner.notification.RunListener createRunListener( ReporterFactory reporterFactory, Map testSetMap ) throws TestSetFailedException { return new JUnitCoreRunListener( new ClassesParallelRunListener( testSetMap, reporterFactory, new DefaultConsoleReporter( System.out ) ), testSetMap ); } public static class DummyWithOneIgnore { @Test public void testNotMuch() { } @Ignore @Test public void testStub1() { } @Test public void testStub2() { } } public static class DummyWithFailure { @Test public void testBeforeFail() { } @Test public void testWillFail() { Assert.fail( "We will fail" ); } @Test public void testAfterFail() { } } public static class DummyAllOk { @Test public void testNotMuchA() { } @Test public void testStub1A() { } @Test public void testStub2A() { } } public static class Dummy3 { @Test public void testNotMuchA() { System.out.println( "tNMA1" ); System.err.println( "tNMA1err" ); } @Test public void testStub2A() { System.out.println( "tS2A" ); System.err.println( "tS2AErr" ); } } public static class Junit3Tc1 extends TestCase { public Junit3Tc1() { super( "testNotMuchJunit3TC1" ); } public void testNotMuchJunit3TC1() { System.out.println( "Junit3TC1" ); } public static junit.framework.Test suite() { TestSuite suite = new TestSuite(); suite.addTest( new Junit3Tc1() ); return suite; } } public static class Junit3Tc2 extends TestCase { public Junit3Tc2( String testMethod ) { super( testMethod ); } public void testNotMuchJunit3TC2() { System.out.println( "Junit3TC2" ); } public void testStubJ3TC2A() { System.out.println( "testStubJ3TC2A" ); } public static junit.framework.Test suite() { TestSuite suite = new TestSuite(); suite.addTest( new Junit3Tc2( "testNotMuchJunit3TC2" ) ); suite.addTest( new Junit3Tc2( "testStubJ3TC2A" ) ); return suite; } } public static class Junit3OddTest1 extends TestCase { public static junit.framework.Test suite() { TestSuite suite = new TestSuite(); suite.addTest( new Junit3OddTest1( "testMe" ) ); suite.addTest( new Junit3OddTest1( "testMe" ) ); return suite; } public Junit3OddTest1( String name ) { super( name ); } public void testMe() { assertTrue( true ); } } public static class Junit3WithNestedSuite extends TestCase { public static junit.framework.Test suite() { TestSuite suite = new TestSuite(); suite.addTest( new Junit3WithNestedSuite( "testMe2" ) ); suite.addTest( new Junit3WithNestedSuite( "testMe2" ) ); suite.addTestSuite( Junit3Tc2.class ); return suite; } public Junit3WithNestedSuite( String name ) { super( name ); } public void testMe2() { assertTrue( true ); } } private ReporterFactory createReporterFactory() { return new FileReporterFactory( StartupReportConfiguration.defaultNoXml() ); } public static ReporterConfiguration getTestReporterConfiguration() { return new ReporterConfiguration( new File( "." ), Boolean.TRUE ); } private void assertReporter( RunStatistics result, int success, int ignored, int failure, String message ) { assertEquals( message, success, result.getCompletedCount() ); assertEquals( message, failure, result.getFailureSources().size() ); assertEquals( message, ignored, result.getSkipped() ); } } surefire-2.10/surefire-providers/surefire-junit47/src/main/0000755000175000017500000000000011645102474022530 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/main/java/0000755000175000017500000000000011645102474023451 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/0000755000175000017500000000000011645102474024240 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/0000755000175000017500000000000011645102474025461 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/0000755000175000017500000000000011645102474026567 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030413 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/surefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000755000175000017500000000000011645102474032415 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/AsynchronousRunner.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000000443711576636220032433 0ustar tonytonypackage org.apache.maven.surefire.junitcore; /* * 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. */ import org.apache.maven.surefire.util.NestedRuntimeException; import org.junit.runners.model.RunnerScheduler; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; /** * @author Kristian Rosenvold */ public class AsynchronousRunner implements RunnerScheduler { private final List> futures = Collections.synchronizedList(new ArrayList>()); private final ExecutorService fService; public AsynchronousRunner(ExecutorService fService) { this.fService = fService; } public void schedule( final Runnable childStatement ) { futures.add( fService.submit( Executors.callable(childStatement) ) ); } public void finished() { try { waitForCompletion(); } catch ( ExecutionException e ) { throw new NestedRuntimeException( e ); } } public void waitForCompletion() throws ExecutionException { for ( Future each : futures ) { try { each.get(); } catch ( InterruptedException e ) { throw new NestedRuntimeException( e ); } } } } ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000000375611563247454032441 0ustar tonytonypackage org.apache.maven.surefire.junitcore; /* * 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. */ import java.util.Map; import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.testset.TestSetFailedException; /** * @author Kristian Rosenvold */ public class MethodsParallelRunListener extends ConcurrentReporterManager { private volatile TestSet lastStarted; private final Object lock = new Object(); public MethodsParallelRunListener( Map classMethodCounts, ReporterFactory reporterFactory, boolean reportImmediately, ConsoleLogger consoleLogger ) throws TestSetFailedException { super( reporterFactory, consoleLogger, reportImmediately, classMethodCounts ); } @Override public void checkIfTestSetCanBeReported( TestSet testSetForTest ) { synchronized ( lock ) { if ( testSetForTest != lastStarted ) { if ( lastStarted != null ) { lastStarted.setAllScheduled( getRunListener() ); } lastStarted = testSetForTest; } } } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/SynchronousRunner.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000000056211576636220032426 0ustar tonytonypackage org.apache.maven.surefire.junitcore; import org.junit.runners.model.RunnerScheduler; /** * @author Kristian Rosenvold */ class SynchronousRunner implements RunnerScheduler { public void schedule( final Runnable childStatement ) { childStatement.run(); } public void finished() { } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000000577111573227313032431 0ustar tonytonypackage org.apache.maven.surefire.junitcore; /* * 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. */ import java.util.ArrayList; import java.util.Map; import org.apache.maven.surefire.common.junit4.JUnit4RunListener; import org.apache.maven.surefire.report.RunListener; import org.junit.runner.Description; import org.junit.runner.Result; public class JUnitCoreRunListener extends JUnit4RunListener { private final Map classMethodCounts; /** * @param reporter the report manager to log testing events to * @param classMethodCounts A map of methods */ public JUnitCoreRunListener( RunListener reporter, Map classMethodCounts ) { super( reporter ); this.classMethodCounts = classMethodCounts; } /** * Called right before any tests from a specific class are run. * * @see org.junit.runner.notification.RunListener#testRunStarted(org.junit.runner.Description) */ public void testRunStarted( Description description ) throws Exception { fillTestCountMap( description ); reporter.testSetStarting( null ); // Not entirely meaningful as we can see } @Override public void testRunFinished( Result result ) throws Exception { reporter.testSetCompleted( null ); } private void fillTestCountMap( Description description ) { final ArrayList children = description.getChildren(); TestSet testSet = new TestSet( description ); Class itemTestClass = null; for ( Description item : children ) { if ( item.isTest() && item.getMethodName() != null ) { testSet.incrementTestMethodCount(); if ( itemTestClass == null ) { itemTestClass = item.getTestClass(); } } else if ( item.getChildren().size() > 0 ) { fillTestCountMap( item ); } else { classMethodCounts.put( item.getClassName(), testSet ); } } if ( itemTestClass != null ) { classMethodCounts.put( itemTestClass.getName(), testSet ); } } } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000000775511556104214032430 0ustar tonytonypackage org.apache.maven.surefire.junitcore; /* * 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. */ import java.util.List; import java.util.concurrent.ExecutionException; import org.apache.maven.surefire.testset.TestSetFailedException; import org.apache.maven.surefire.util.TestsToRun; import org.junit.runner.Computer; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.RunListener; /** * Encapsulates access to JUnitCore * * @author Kristian Rosenvold */ class JUnitCoreWrapper { public static void execute( TestsToRun testsToRun, JUnitCoreParameters jUnitCoreParameters, List listeners ) throws TestSetFailedException { Computer computer = getComputer( jUnitCoreParameters ); JUnitCore junitCore = new JUnitCore(); for ( RunListener runListener : listeners ) { junitCore.addListener( runListener ); } try { final Result run = junitCore.run( computer, testsToRun.getLocatedClasses() ); if ( run.getFailureCount() > 0 ) { // There is something interesting going on here; // the "run" result can contain other exceptions that did not occur as // part of the test run, for instance if something bad happened in the // RunListener. But it also contains regular problems from the test-run. // I am not entirely sure of what to do with this; it might even be // that these errors are the correct errors to report back to the client. } } finally { closeIfConfigurable( computer ); for ( RunListener runListener : listeners ) { junitCore.removeListener( runListener ); } } } private static void closeIfConfigurable( Computer computer ) throws TestSetFailedException { if ( computer instanceof ConfigurableParallelComputer ) { try { ( (ConfigurableParallelComputer) computer ).close(); } catch ( ExecutionException e ) { throw new TestSetFailedException( e ); } } } private static Computer getComputer( JUnitCoreParameters jUnitCoreParameters ) throws TestSetFailedException { if ( jUnitCoreParameters.isNoThreading() ) { return new Computer(); } return getConfigurableParallelComputer( jUnitCoreParameters ); } private static Computer getConfigurableParallelComputer( JUnitCoreParameters jUnitCoreParameters ) throws TestSetFailedException { if ( jUnitCoreParameters.isUseUnlimitedThreads() ) { return new ConfigurableParallelComputer(); } else { return new ConfigurableParallelComputer( jUnitCoreParameters.isParallelClasses() | jUnitCoreParameters.isParallelBoth(), jUnitCoreParameters.isParallelMethod() | jUnitCoreParameters.isParallelBoth(), jUnitCoreParameters.getThreadCount(), jUnitCoreParameters.isPerCoreThreadCount() ); } } } ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreParameters.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000000552211506565132032423 0ustar tonytonypackage org.apache.maven.surefire.junitcore; /* * 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. */ import java.util.Properties; /** * @author Kristian Rosenvold */ class JUnitCoreParameters { private final String parallel; private final Boolean perCoreThreadCount; private final int threadCount; private final Boolean useUnlimitedThreads; public static final String PARALLEL_KEY = "parallel"; public static final String PERCORETHREADCOUNT_KEY = "perCoreThreadCount"; public static final String THREADCOUNT_KEY = "threadCount"; public static final String USEUNLIMITEDTHREADS_KEY = "useUnlimitedThreads"; public JUnitCoreParameters( Properties properties ) { this.parallel = properties.getProperty( PARALLEL_KEY, "none" ).toLowerCase(); this.perCoreThreadCount = Boolean.valueOf( properties.getProperty( PERCORETHREADCOUNT_KEY, "true" ) ); this.threadCount = Integer.valueOf( properties.getProperty( THREADCOUNT_KEY, "2" ) ); this.useUnlimitedThreads = Boolean.valueOf( properties.getProperty( USEUNLIMITEDTHREADS_KEY, "false" ) ); } public boolean isParallelMethod() { return "methods".equals( parallel ); } public boolean isParallelClasses() { return "classes".equals( parallel ); } public boolean isParallelBoth() { return "both".equals( parallel ); } public Boolean isPerCoreThreadCount() { return perCoreThreadCount; } public int getThreadCount() { return threadCount; } public Boolean isUseUnlimitedThreads() { return useUnlimitedThreads; } public boolean isNoThreading() { return !( isParallelClasses() || isParallelMethod() || isParallelBoth() ); } public boolean isAnyParallelitySelected() { return !isNoThreading(); } @Override public String toString() { return "parallel='" + parallel + '\'' + ", perCoreThreadCount=" + perCoreThreadCount + ", threadCount=" + threadCount + ", useUnlimitedThreads=" + useUnlimitedThreads; } } ././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentReporterManager.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000001410611563247454032430 0ustar tonytonypackage org.apache.maven.surefire.junitcore; /* * 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. */ import java.util.Map; import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.report.ConsoleOutputReceiver; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.testset.TestSetFailedException; /** * @author Kristian Rosenvold */ public abstract class ConcurrentReporterManager implements RunListener, ConsoleOutputReceiver { private final Map classMethodCounts; // private final ReporterConfiguration reporterConfiguration; private final ThreadLocal reporterManagerThreadLocal = new ThreadLocal(); private final boolean reportImmediately; private final ReporterFactory reporterFactory; private final ConsoleLogger consoleLogger; ConcurrentReporterManager( ReporterFactory reporterFactory, ConsoleLogger consoleLogger, boolean reportImmediately, Map classMethodCounts ) throws TestSetFailedException { this.reportImmediately = reportImmediately; this.reporterFactory = reporterFactory; this.classMethodCounts = classMethodCounts; this.consoleLogger = consoleLogger; } public void testSetStarting( ReportEntry description ) { } public void testSetCompleted( ReportEntry result ) { final RunListener reporterManager = getRunListener(); for ( TestSet testSet : classMethodCounts.values() ) { testSet.replay( reporterManager ); } } public void testFailed( ReportEntry failure ) { getOrCreateTestMethod( failure ).testFailure( failure ); } public void testError( ReportEntry failure ) { getOrCreateTestMethod( failure ).testError( failure ); } public void testSkipped( ReportEntry description ) { TestSet testSet = getTestSet( description ); TestMethod testMethod = getTestSet( description ).createTestMethod( description ); testMethod.testIgnored( description ); testSet.incrementFinishedTests( getRunListener(), reportImmediately ); } public void testAssumptionFailure( ReportEntry failure ) { getOrCreateTestMethod( failure ).testIgnored( failure ); } public void testStarting( ReportEntry description ) { TestSet testSet = getTestSet( description ); final TestMethod testMethod = testSet.createTestMethod( description ); testMethod.attachToThread(); checkIfTestSetCanBeReported( testSet ); testSet.attachToThread(); } public void testSucceeded( ReportEntry report ) { getTestMethod().testFinished(); TestSet.getThreadTestSet().incrementFinishedTests( getRunListener(), reportImmediately ); detachTestMethodFromThread(); } private TestMethod getOrCreateTestMethod( ReportEntry description ) { TestMethod threadTestMethod = TestMethod.getThreadTestMethod(); if ( threadTestMethod != null ) { return threadTestMethod; } TestSet testSet = getTestSet( description ); return testSet.createTestMethod( description ); } protected abstract void checkIfTestSetCanBeReported( TestSet testSetForTest ); TestMethod getTestMethod() { return TestMethod.getThreadTestMethod(); } void detachTestMethodFromThread() { TestMethod.detachFromCurrentThread(); } TestSet getTestSet( ReportEntry description ) { return classMethodCounts.get( description.getSourceName() ); } RunListener getRunListener() { RunListener runListener = reporterManagerThreadLocal.get(); if ( runListener == null ) { runListener = reporterFactory.createReporter(); reporterManagerThreadLocal.set( runListener ); } return runListener; } public static ConcurrentReporterManager createInstance( Map classMethodCounts, ReporterFactory reporterManagerFactory, boolean parallelClasses, boolean parallelBoth, ConsoleLogger consoleLogger ) throws TestSetFailedException { if ( parallelClasses ) { return new ClassesParallelRunListener( classMethodCounts, reporterManagerFactory, consoleLogger ); } return new MethodsParallelRunListener( classMethodCounts, reporterManagerFactory, !parallelBoth, consoleLogger ); } public void writeTestOutput( byte[] buf, int off, int len, boolean stdout ) { TestMethod threadTestMethod = TestMethod.getThreadTestMethod(); if ( threadTestMethod != null ) { final LogicalStream logicalStream = threadTestMethod.getLogicalStream(); logicalStream.write( stdout, buf, off, len ); } else { // Not able to assocaite output with any thread. Just dump to console consoleLogger.info( new String( buf, off, len ) ); } } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000000764511557340256032437 0ustar tonytonypackage org.apache.maven.surefire.junitcore; /* * 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. */ import org.apache.maven.surefire.report.ConsoleOutputReceiver; import org.apache.maven.surefire.report.ConsoleOutputReceiverForCurrentThread; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.RunListener; /** * Represents the test-state of a single test method that is run. *

* Notes about thread safety: This instance is serially confined to 1-3 threads (construction, test-run, reporting), * without any actual parallel access */ class TestMethod implements ConsoleOutputReceiver { private final ReportEntry description; private final long startTime; private long endTime; private volatile ReportEntry testFailure; private volatile ReportEntry testError; private volatile ReportEntry ignored; private static final InheritableThreadLocal TEST_METHOD = new InheritableThreadLocal(); private volatile LogicalStream output; public TestMethod( ReportEntry description ) { this.description = description; startTime = System.currentTimeMillis(); } public void testFinished() { setEndTime(); } public void testIgnored( ReportEntry description ) { ignored = description; setEndTime(); } public void testFailure( ReportEntry failure ) { this.testFailure = failure; } public void testError( ReportEntry failure ) { this.testError = failure; setEndTime(); } private void setEndTime() { this.endTime = System.currentTimeMillis(); } public int getElapsed() { return (int) ( endTime - startTime ); } public void replay( RunListener reporter ) { if ( ignored != null ) { reporter.testSkipped( createReportEntry() ); return; } reporter.testStarting( createReportEntry() ); if ( output != null ) { output.writeDetails( ( (ConsoleOutputReceiver) reporter ) ); } if ( testFailure != null ) { reporter.testFailed( testFailure ); } else if ( testError != null ) { reporter.testError( testError ); } else { reporter.testSucceeded( createReportEntry() ); } } private ReportEntry createReportEntry() { return this.description; } public void attachToThread() { TEST_METHOD.set( this ); ConsoleOutputReceiverForCurrentThread.set( this ); } public static void detachFromCurrentThread() { TEST_METHOD.remove(); ConsoleOutputReceiverForCurrentThread.remove(); } public static TestMethod getThreadTestMethod() { return TEST_METHOD.get(); } public LogicalStream getLogicalStream() { if ( output == null ) { output = new LogicalStream(); } return output; } public void writeTestOutput( byte[] buf, int off, int len, boolean stdout ) { getLogicalStream().write( stdout, buf, off, len ); } } ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000000342311563247454032430 0ustar tonytonypackage org.apache.maven.surefire.junitcore; /* * 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. */ import java.util.Map; import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.testset.TestSetFailedException; /** * @author Kristian Rosenvold */ public class ClassesParallelRunListener extends ConcurrentReporterManager { public ClassesParallelRunListener( Map classMethodCounts, ReporterFactory reporterFactory, ConsoleLogger consoleLogger ) throws TestSetFailedException { super( reporterFactory, consoleLogger, false, classMethodCounts ); } @Override public void checkIfTestSetCanBeReported( TestSet testSetForTest ) { TestSet currentlyAttached = TestSet.getThreadTestSet(); if ( currentlyAttached != null && currentlyAttached != testSetForTest ) { currentlyAttached.setAllScheduled( getRunListener() ); } } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000000450311557330334032421 0ustar tonytonypackage org.apache.maven.surefire.junitcore; /* * 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. */ import java.util.ArrayList; import java.util.List; import org.apache.maven.surefire.report.ConsoleOutputReceiver; import org.apache.maven.surefire.util.internal.ByteBuffer; /** * A stream-like object that preserves ordering between stdout/stderr */ public class LogicalStream { private final List output = new ArrayList(); class Entry { final boolean stdout; final byte[] b; final int off; final int len; Entry( boolean stdout, byte[] b, int off, int len ) { this.stdout = stdout; this.b = ByteBuffer.copy( b, off, len ); this.off = 0; this.len = len; } public void writeDetails( ConsoleOutputReceiver outputReceiver ) { outputReceiver.writeTestOutput( b, off, len, stdout ); } @Override public String toString() { return new String( b, off, len ); } public boolean isBlankLine() { return "\n".equals( toString() ); } } public synchronized void write( boolean stdout, byte b[], int off, int len ) { Entry entry = new Entry( stdout, b, off, len ); if ( !entry.isBlankLine() ) { output.add( entry ); } } public void writeDetails( ConsoleOutputReceiver outputReceiver ) { for ( Entry entry : output ) { entry.writeDetails( outputReceiver ); } } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000001102611561573446032427 0ustar tonytonypackage org.apache.maven.surefire.junitcore; /* * 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. */ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.SimpleReportEntry; import org.apache.maven.surefire.util.NestedRuntimeException; import org.junit.runner.Description; /** * * Represents the test-state of a testset that is run. */ public class TestSet { private final Description testSetDescription; private final AtomicInteger numberOfCompletedChildren = new AtomicInteger( 0 ); // While the two parameters below may seem duplicated, it is not entirely the case, // since numberOfTests has the correct value from the start, while testMethods grows as method execution starts. private final AtomicInteger numberOfTests = new AtomicInteger( 0 ); private final List testMethods = Collections.synchronizedList( new ArrayList() ); private static final InheritableThreadLocal testSet = new InheritableThreadLocal(); private final AtomicBoolean allScheduled = new AtomicBoolean(); private final AtomicBoolean played = new AtomicBoolean(); public TestSet( Description testSetDescription ) { this.testSetDescription = testSetDescription; } public void replay( RunListener target ) { if ( !played.compareAndSet( false, true ) ) { return; } try { int elapsed = 0; for ( TestMethod testMethod : testMethods ) { elapsed += testMethod.getElapsed(); } ReportEntry report = createReportEntry( null ); target.testSetStarting( report ); for ( TestMethod testMethod : testMethods ) { testMethod.replay( target ); } report = createReportEntry( elapsed ); target.testSetCompleted( report ); } catch ( Exception e ) { throw new NestedRuntimeException( e ); } } public TestMethod createTestMethod( ReportEntry description ) { TestMethod testMethod = new TestMethod( description ); addTestMethod( testMethod ); return testMethod; } private ReportEntry createReportEntry( Integer elapsed ) { boolean isJunit3 = testSetDescription.getTestClass() == null; String classNameToUse = isJunit3 ? testSetDescription.getChildren().get( 0 ).getClassName() : testSetDescription.getClassName(); return new SimpleReportEntry( classNameToUse, classNameToUse, elapsed ); } public void incrementTestMethodCount() { numberOfTests.incrementAndGet(); } public void addTestMethod( TestMethod testMethod ) { testMethods.add( testMethod ); } public void incrementFinishedTests( RunListener reporterManager, boolean reportImmediately ) { numberOfCompletedChildren.incrementAndGet(); if ( allScheduled.get() && isAllTestsDone() && reportImmediately ) { replay( reporterManager ); } } public void setAllScheduled( RunListener reporterManager ) { allScheduled.set( true ); if ( isAllTestsDone() ) { replay( reporterManager ); } } private boolean isAllTestsDone() { return testMethods.size() == numberOfCompletedChildren.get(); } public void attachToThread() { testSet.set( this ); } public static TestSet getThreadTestSet() { return testSet.get(); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000001136111563247454032430 0ustar tonytonypackage org.apache.maven.surefire.junitcore; /* * 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. */ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.apache.maven.surefire.common.junit4.JUnit4RunListenerFactory; import org.apache.maven.surefire.common.junit4.JUnit4TestChecker; import org.apache.maven.surefire.providerapi.AbstractProvider; import org.apache.maven.surefire.providerapi.ProviderParameters; import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.report.ConsoleOutputCapture; import org.apache.maven.surefire.report.ConsoleOutputReceiver; import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.surefire.testset.TestSetFailedException; import org.apache.maven.surefire.util.DirectoryScanner; import org.apache.maven.surefire.util.ScannerFilter; import org.apache.maven.surefire.util.TestsToRun; /** * @author Kristian Rosenvold */ @SuppressWarnings( { "UnusedDeclaration" } ) public class JUnitCoreProvider extends AbstractProvider { private final ClassLoader testClassLoader; private final DirectoryScanner directoryScanner; private final JUnitCoreParameters jUnitCoreParameters; private final ScannerFilter scannerFilter; private final List customRunListeners; private final ProviderParameters providerParameters; private TestsToRun testsToRun; public JUnitCoreProvider( ProviderParameters providerParameters ) { this.providerParameters = providerParameters; this.testClassLoader = providerParameters.getTestClassLoader(); this.directoryScanner = providerParameters.getDirectoryScanner(); this.jUnitCoreParameters = new JUnitCoreParameters( providerParameters.getProviderProperties() ); this.scannerFilter = new JUnit4TestChecker( testClassLoader ); customRunListeners = JUnit4RunListenerFactory. createCustomListeners( providerParameters.getProviderProperties().getProperty( "listener" ) ); } public Boolean isRunnable() { return Boolean.TRUE; } public Iterator getSuites() { testsToRun = scanClassPath(); return testsToRun.iterator(); } public RunResult invoke( Object forkTestSet ) throws TestSetFailedException, ReporterException { final String message = "Concurrency config is " + jUnitCoreParameters.toString() + "\n"; final ReporterFactory reporterFactory = providerParameters.getReporterFactory(); final ConsoleLogger consoleLogger = providerParameters.getConsoleLogger(); consoleLogger.info( message ); if ( testsToRun == null ) { testsToRun = forkTestSet == null ? scanClassPath() : TestsToRun.fromClass( (Class) forkTestSet ); } final Map testSetMap = new ConcurrentHashMap(); RunListener listener = ConcurrentReporterManager.createInstance( testSetMap, reporterFactory, jUnitCoreParameters.isParallelClasses(), jUnitCoreParameters.isParallelBoth(), consoleLogger ); ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) listener ); org.junit.runner.notification.RunListener jUnit4RunListener = new JUnitCoreRunListener( listener, testSetMap ); customRunListeners.add( 0, jUnit4RunListener ); JUnitCoreWrapper.execute( testsToRun, jUnitCoreParameters, customRunListeners ); return reporterFactory.close(); } private TestsToRun scanClassPath() { return directoryScanner.locateTestClasses( testClassLoader, scannerFilter ); } } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConfigurableParallelComputer.javasurefire-2.10/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/0000644000175000017500000001141211576636220032422 0ustar tonytonypackage org.apache.maven.surefire.junitcore; /* * 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. */ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ExecutionException; import org.apache.maven.surefire.util.NestedRuntimeException; import org.junit.runner.Computer; import org.junit.runner.Runner; import org.junit.runners.ParentRunner; import org.junit.runners.model.InitializationError; import org.junit.runners.model.RunnerBuilder; import org.junit.runners.model.RunnerScheduler; /* * @author Kristian Rosenvold */ public class ConfigurableParallelComputer extends Computer { private final boolean fClasses; private final boolean fMethods; private final boolean fixedPool; private final ExecutorService fService; private final List nonBlockers = Collections.synchronizedList( new ArrayList() ); public ConfigurableParallelComputer() { this( true, true, Executors.newCachedThreadPool(), false ); } public ConfigurableParallelComputer( boolean fClasses, boolean fMethods ) { this( fClasses, fMethods, Executors.newCachedThreadPool(), false ); } public ConfigurableParallelComputer( boolean fClasses, boolean fMethods, Integer numberOfThreads, boolean perCore ) { this( fClasses, fMethods, Executors.newFixedThreadPool( numberOfThreads * ( perCore ? Runtime.getRuntime().availableProcessors() : 1 ) ), true ); } private ConfigurableParallelComputer( boolean fClasses, boolean fMethods, ExecutorService executorService, boolean fixedPool ) { this.fClasses = fClasses; this.fMethods = fMethods; fService = executorService; this.fixedPool = fixedPool; } @SuppressWarnings( { "UnusedDeclaration" } ) public void close() throws ExecutionException { for ( AsynchronousRunner nonBlocker : nonBlockers ) { nonBlocker.waitForCompletion(); } fService.shutdown(); try { fService.awaitTermination( 10, java.util.concurrent.TimeUnit.SECONDS ); } catch ( InterruptedException e ) { throw new NestedRuntimeException( e ); } } private Runner parallelize( Runner runner, RunnerScheduler runnerInterceptor ) { if ( runner instanceof ParentRunner ) { ( (ParentRunner) runner ).setScheduler( runnerInterceptor ); } return runner; } private RunnerScheduler getMethodInterceptor() { if ( fClasses && fMethods ) { final AsynchronousRunner blockingAsynchronousRunner = new AsynchronousRunner( fService ); nonBlockers.add( blockingAsynchronousRunner ); return blockingAsynchronousRunner; } return fMethods ? new AsynchronousRunner( fService ) : new SynchronousRunner(); } private RunnerScheduler getClassInterceptor() { if ( fClasses ) { return fMethods ? new SynchronousRunner() : new AsynchronousRunner( fService ); } return new SynchronousRunner(); } @Override public Runner getSuite( RunnerBuilder builder, java.lang.Class[] classes ) throws InitializationError { Runner suite = super.getSuite( builder, classes ); return fClasses ? parallelize( suite, getClassInterceptor() ) : suite; } @Override protected Runner getRunner( RunnerBuilder builder, Class testClass ) throws Throwable { Runner runner = super.getRunner( builder, testClass ); return fMethods ? parallelize( runner, getMethodInterceptor() ) : runner; } @Override public String toString() { return "ConfigurableParallelComputer{" + "classes=" + fClasses + ", methods=" + fMethods + ", fixedPool=" + fixedPool + '}'; } } surefire-2.10/surefire-providers/surefire-junit47/src/main/resources/0000755000175000017500000000000011645102474024542 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/main/resources/META-INF/0000755000175000017500000000000011645102474025702 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit47/src/main/resources/META-INF/services/0000755000175000017500000000000011645102474027525 5ustar tonytony././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit47/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvidersurefire-2.10/surefire-providers/surefire-junit47/src/main/resources/META-INF/services/org.apache.ma0000644000175000017500000000006611476536715032070 0ustar tonytonyorg.apache.maven.surefire.junitcore.JUnitCoreProvider surefire-2.10/surefire-providers/pom.xml0000644000175000017500000000433211640163725017207 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire 2.10 ../pom.xml surefire-providers pom SureFire Providers common-junit3 common-junit4 surefire-junit3 surefire-junit4 surefire-junit47 surefire-testng-utils surefire-testng org.apache.maven.surefire surefire-api maven-surefire-plugin org.apache.maven.surefire surefire-shadefire ${project.version} surefire-2.10/surefire-providers/surefire-junit3/0000755000175000017500000000000011645102474020725 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/pom.xml0000644000175000017500000000477511640163725022260 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire-providers 2.10 ../pom.xml surefire-junit3 SureFire JUnit Runner junit junit 3.8.1 provided org.apache.maven.surefire common-junit3 ${project.version} src/main/resources/META-INF META-INF org.apache.maven.plugins maven-shade-plugin package shade org.apache.maven.surefire:common-junit3 surefire-2.10/surefire-providers/surefire-junit3/src/0000755000175000017500000000000011645102474021514 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/test/0000755000175000017500000000000011645102474022473 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/test/java/0000755000175000017500000000000011645102474023414 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/test/java/org/0000755000175000017500000000000011645102474024203 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/test/java/org/apache/0000755000175000017500000000000011645102474025424 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/test/java/org/apache/maven/0000755000175000017500000000000011645102474026532 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/test/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030356 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/test/java/org/apache/maven/surefire/junit/0000755000175000017500000000000011645102474031507 5ustar tonytony././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit3/src/test/java/org/apache/maven/surefire/junit/JUnitTestSetTest.javasurefire-2.10/surefire-providers/surefire-junit3/src/test/java/org/apache/maven/surefire/junit/JUnit0000644000175000017500000000646311624531100032461 0ustar tonytonypackage org.apache.maven.surefire.junit; /* * 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. */ import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.apache.maven.surefire.common.junit3.JUnit3Reflector; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.testset.TestSetFailedException; import java.util.ArrayList; import java.util.List; public class JUnitTestSetTest extends TestCase { public void testExecuteSuiteClass() throws TestSetFailedException { ClassLoader testClassLoader = this.getClass().getClassLoader(); JUnit3Reflector reflector = new JUnit3Reflector( testClassLoader ); JUnitTestSet testSet = new JUnitTestSet( Suite.class, reflector ); SuccessListener listener = new SuccessListener(); testSet.execute( listener, testClassLoader ); List succeededTests = listener.getSucceededTests(); assertEquals( 1, succeededTests.size() ); assertEquals( "testSuccess(org.apache.maven.surefire.junit.JUnitTestSetTest$AlwaysSucceeds)", ( (ReportEntry) succeededTests.get( 0 ) ).getName() ); } public static final class AlwaysSucceeds extends TestCase { public void testSuccess() { assertTrue( true ); } } public static class SuccessListener implements RunListener { private List succeededTests = new ArrayList(); public void testSetStarting( ReportEntry report ) { } public void testSetCompleted( ReportEntry report ) { } public void testStarting( ReportEntry report ) { } public void testSucceeded( ReportEntry report ) { this.succeededTests.add( report ); } public void testAssumptionFailure( ReportEntry report ) { throw new IllegalStateException(); } public void testError( ReportEntry report ) { throw new IllegalStateException(); } public void testFailed( ReportEntry report ) { throw new IllegalStateException(); } public void testSkipped( ReportEntry report ) { throw new IllegalStateException(); } public List getSucceededTests() { return succeededTests; } } public static class Suite { public static Test suite() { TestSuite suite = new TestSuite(); suite.addTestSuite( AlwaysSucceeds.class ); return suite; } } } surefire-2.10/surefire-providers/surefire-junit3/src/main/0000755000175000017500000000000011645102474022440 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/main/java/0000755000175000017500000000000011645102474023361 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/0000755000175000017500000000000011645102474024150 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/0000755000175000017500000000000011645102474025371 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/0000755000175000017500000000000011645102474026477 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030323 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/0000755000175000017500000000000011645102474031454 5ustar tonytony././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoAndJUnit3Checker.javasurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoA0000644000175000017500000000351711512164307032411 0ustar tonytonypackage org.apache.maven.surefire.junit; /* * 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. */ import org.apache.maven.surefire.NonAbstractClassFilter; import org.apache.maven.surefire.common.junit3.JUnit3TestChecker; import org.apache.maven.surefire.util.ScannerFilter; /** * @author Kristian Rosenvold */ public class PojoAndJUnit3Checker implements ScannerFilter { private final JUnit3TestChecker jUnit3TestChecker; private final NonAbstractClassFilter nonAbstractClassFilter = new NonAbstractClassFilter(); public PojoAndJUnit3Checker( JUnit3TestChecker jUnit3TestChecker ) { this.jUnit3TestChecker = jUnit3TestChecker; } public boolean accept( Class testClass ) { return jUnit3TestChecker.accept( testClass ) || nonAbstractClassFilter.accept( testClass ) && isPojoTest( testClass ); } private boolean isPojoTest( Class testClass ) { try { testClass.getConstructor( new Class[0] ); return true; } catch ( Exception e ) { return false; } } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/SurefireTestSet.javasurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/Suref0000644000175000017500000000216111557245722032471 0ustar tonytonypackage org.apache.maven.surefire.junit; /* * 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. */ import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.testset.TestSetFailedException; public interface SurefireTestSet { void execute( RunListener reportManager, ClassLoader loader ) throws TestSetFailedException; String getName(); } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnitStackTraceWriter.javasurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit0000644000175000017500000000234411512164307032427 0ustar tonytonypackage org.apache.maven.surefire.junit; /* * 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. */ import org.apache.maven.surefire.report.PojoStackTraceWriter; /** * Stack trace writer for JUnit tests. * * @author Brett Porter */ public class JUnitStackTraceWriter extends PojoStackTraceWriter { public JUnitStackTraceWriter( String testClass, String testName, Throwable throwable ) { super( testClass, testName, throwable ); } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnitTestSet.javasurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit0000644000175000017500000001044311624531100032417 0ustar tonytonypackage org.apache.maven.surefire.junit; /* * 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. */ import org.apache.maven.surefire.common.junit3.JUnit3Reflector; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.testset.TestSetFailedException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public final class JUnitTestSet implements SurefireTestSet { private final Class testClass; private final JUnit3Reflector reflector; public JUnitTestSet( Class testClass, JUnit3Reflector reflector ) throws TestSetFailedException { if ( testClass == null ) { throw new NullPointerException( "testClass is null" ); } this.testClass = testClass; this.reflector = reflector; // ---------------------------------------------------------------------- // Strategy for executing JUnit tests // // o look for the suite method and if that is present execute that method // to get the test object. // // o look for test classes that are assignable from TestCase // // o look for test classes that only implement the Test interface // ---------------------------------------------------------------------- // The interface implemented by the dynamic proxy (TestListener), happens to be // the same as the param types of TestResult.addTestListener } public void execute( RunListener reporter, ClassLoader loader ) throws TestSetFailedException { Class testClass = getTestClass(); try { Object testObject = reflector.constructTestObject( testClass ); final Method runMethod; if ( this.reflector.getTestInterface().isAssignableFrom( testObject.getClass() ) ) { runMethod = this.reflector.getTestInterfaceRunMethod(); } else { runMethod = reflector.getRunMethod( this.testClass ); } Object instanceOfTestResult = reflector.getTestResultClass().newInstance(); TestListenerInvocationHandler invocationHandler = new TestListenerInvocationHandler( reporter ); Object testListener = Proxy.newProxyInstance( loader, reflector.getInterfacesImplementedByDynamicProxy(), invocationHandler ); Object[] addTestListenerParams = { testListener }; reflector.getAddListenerMethod().invoke( instanceOfTestResult, addTestListenerParams ); Object[] runParams = { instanceOfTestResult }; runMethod.invoke( testObject, runParams ); } catch ( IllegalArgumentException e ) { throw new TestSetFailedException( testClass.getName(), e ); } catch ( InstantiationException e ) { throw new TestSetFailedException( testClass.getName(), e ); } catch ( IllegalAccessException e ) { throw new TestSetFailedException( testClass.getName(), e ); } catch ( InvocationTargetException e ) { throw new TestSetFailedException( testClass.getName(), e.getTargetException() ); } catch ( NoSuchMethodException e ) { throw new TestSetFailedException( "Class is not a JUnit TestCase", e ); } } public String getName() { return testClass.getName(); } Class getTestClass() { return testClass; } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoTestSet.javasurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoT0000644000175000017500000002273111542662104032434 0ustar tonytonypackage org.apache.maven.surefire.junit; /* * 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. */ import org.apache.maven.surefire.report.PojoStackTraceWriter; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.SimpleReportEntry; import org.apache.maven.surefire.testset.TestSetFailedException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.List; public class PojoTestSet implements SurefireTestSet { private static final String TEST_METHOD_PREFIX = "test"; private static final Object[] EMPTY_OBJECT_ARRAY = new Object[0]; private final Object testObject; private List testMethods; private Method setUpMethod; private Method tearDownMethod; private final Class testClass; public PojoTestSet( Class testClass ) throws TestSetFailedException { if ( testClass == null ) { throw new NullPointerException( "testClass is null" ); } this.testClass = testClass; try { testObject = testClass.newInstance(); } catch ( InstantiationException e ) { throw new TestSetFailedException( "Unable to instantiate POJO '" + testClass + "'", e ); } catch ( IllegalAccessException e ) { throw new TestSetFailedException( "Unable to instantiate POJO '" + testClass + "'", e ); } } public void execute( RunListener reportManager, ClassLoader loader ) throws TestSetFailedException { if ( reportManager == null ) { throw new NullPointerException( "reportManager is null" ); } executeTestMethods( reportManager ); } private void executeTestMethods( RunListener reportManager ) { if ( reportManager == null ) { throw new NullPointerException( "reportManager is null" ); } if ( testMethods == null ) { discoverTestMethods(); } boolean abort = false; for ( int i = 0; i < testMethods.size() && !abort; ++i ) { abort = executeTestMethod( (Method) testMethods.get( i ), EMPTY_OBJECT_ARRAY, reportManager ); } } private boolean executeTestMethod( Method method, Object[] args, RunListener reportManager ) { if ( method == null || args == null || reportManager == null ) { throw new NullPointerException(); } String userFriendlyMethodName = method.getName() + '('; if ( args.length != 0 ) { userFriendlyMethodName += "Reporter"; } userFriendlyMethodName += ')'; ReportEntry report = new SimpleReportEntry( testObject.getClass().getName(), getTestName( userFriendlyMethodName ) ); reportManager.testStarting( report ); try { setUpFixture(); } catch ( Throwable e ) { report = new SimpleReportEntry( testObject.getClass().getName(), getTestName( userFriendlyMethodName ), new PojoStackTraceWriter( testObject.getClass().getName(), method.getName(), e ) ); reportManager.testFailed( report ); // A return value of true indicates to this class's executeTestMethods // method that it should abort and not attempt to execute // any other test methods. The other caller of this method, // TestRerunner.rerun, ignores this return value, because it is // only running one test. return true; } // Make sure that tearDownFixture try { method.invoke( testObject, args ); report = new SimpleReportEntry( testObject.getClass().getName(), getTestName( userFriendlyMethodName ) ); reportManager.testSucceeded( report ); } catch ( InvocationTargetException ite ) { Throwable t = ite.getTargetException(); report = new SimpleReportEntry( testObject.getClass().getName(), getTestName( userFriendlyMethodName ), new PojoStackTraceWriter( testObject.getClass().getName(), method.getName(), t ) ); reportManager.testFailed( report ); // Don't return here, because tearDownFixture should be called even // if the test method throws an exception. } catch ( Throwable t ) { report = new SimpleReportEntry( testObject.getClass().getName(), getTestName( userFriendlyMethodName ), new PojoStackTraceWriter( testObject.getClass().getName(), method.getName(), t ) ); reportManager.testFailed( report ); // Don't return here, because tearDownFixture should be called even // if the test method throws an exception. } try { tearDownFixture(); } catch ( Throwable t ) { // Treat any exception from tearDownFixture as a failure of the test. report = new SimpleReportEntry( testObject.getClass().getName(), getTestName( userFriendlyMethodName ), new PojoStackTraceWriter( testObject.getClass().getName(), method.getName(), t ) ); reportManager.testFailed( report ); // A return value of true indicates to this class's executeTestMethods // method that it should abort and not attempt to execute // any other test methods. The other caller of this method, // TestRerunner.rerun, ignores this return value, because it is // only running one test. return true; } // A return value of false indicates to this class's executeTestMethods // method that it should keep plowing ahead and invoke more test methods. // The other caller of this method, // TestRerunner.rerun, ignores this return value, because it is // only running one test. return false; } private String getTestName( String testMethodName ) { if ( testMethodName == null ) { throw new NullPointerException( "testMethodName is null" ); } return getTestClass().getName() + "." + testMethodName; } private void setUpFixture() throws Throwable { if (setUpMethod != null) setUpMethod.invoke( testObject, new Object[0] ); } private void tearDownFixture() throws Throwable { if (tearDownMethod != null) tearDownMethod.invoke( testObject, new Object[0] ); } private void discoverTestMethods() { if ( testMethods == null ) { testMethods = new ArrayList(); Method[] methods = getTestClass().getMethods(); for ( int i = 0; i < methods.length; ++i ) { Method m = methods[i]; if ( isValidTestMethod( m ) ) { String simpleName = m.getName(); // name must have 5 or more chars if ( simpleName.length() > 4 ) { String firstFour = simpleName.substring( 0, 4 ); // name must start with "test" if ( firstFour.equals( TEST_METHOD_PREFIX ) ) { testMethods.add( m ); } } } else if (m.getName().equals("setUp") && m.getParameterTypes().length == 0) { setUpMethod = m; } else if (m.getName().equals("tearDown") && m.getParameterTypes().length == 0) { tearDownMethod = m; } } } } private static boolean isValidTestMethod( Method m ) { boolean isInstanceMethod = !Modifier.isStatic( m.getModifiers() ); boolean returnsVoid = m.getReturnType().equals( void.class ); boolean hasNoParams = m.getParameterTypes().length == 0; return isInstanceMethod && returnsVoid && hasNoParams; } public String getName() { return testClass.getName(); } public Class getTestClass() { return testClass; } } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.javasurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit0000644000175000017500000001152511563027314032432 0ustar tonytonypackage org.apache.maven.surefire.junit; /* * 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. */ import java.util.Iterator; import org.apache.maven.surefire.common.junit3.JUnit3Reflector; import org.apache.maven.surefire.common.junit3.JUnit3TestChecker; import org.apache.maven.surefire.providerapi.AbstractProvider; import org.apache.maven.surefire.providerapi.ProviderParameters; import org.apache.maven.surefire.report.ConsoleOutputCapture; import org.apache.maven.surefire.report.ConsoleOutputReceiver; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.SimpleReportEntry; import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.surefire.testset.TestSetFailedException; import org.apache.maven.surefire.util.DirectoryScanner; import org.apache.maven.surefire.util.ReflectionUtils; import org.apache.maven.surefire.util.TestsToRun; /** * @author Kristian Rosenvold */ public class JUnit3Provider extends AbstractProvider { private final ClassLoader testClassLoader; private final DirectoryScanner directoryScanner; private final PojoAndJUnit3Checker testChecker; private final JUnit3TestChecker jUnit3TestChecker; private final JUnit3Reflector reflector; private final ProviderParameters providerParameters; private TestsToRun testsToRun; public JUnit3Provider( ProviderParameters booterParameters ) { this.providerParameters = booterParameters; this.testClassLoader = booterParameters.getTestClassLoader(); this.directoryScanner = booterParameters.getDirectoryScanner(); this.reflector = new JUnit3Reflector( testClassLoader ); jUnit3TestChecker = new JUnit3TestChecker( testClassLoader ); this.testChecker = new PojoAndJUnit3Checker( jUnit3TestChecker ); // Todo; use reflector } public RunResult invoke( Object forkTestSet ) throws TestSetFailedException, ReporterException { if ( testsToRun == null ) { testsToRun = forkTestSet == null ? scanClassPath() : TestsToRun.fromClass( (Class) forkTestSet ); } ReporterFactory reporterFactory = providerParameters.getReporterFactory(); final RunListener reporter = reporterFactory.createReporter(); ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporter ); final String smClassName = System.getProperty( "surefire.security.manager" ); if ( smClassName != null ) { SecurityManager securityManager = (SecurityManager) ReflectionUtils.instantiate( this.getClass().getClassLoader(), smClassName ); System.setSecurityManager( securityManager ); } for ( Iterator iter = testsToRun.iterator(); iter.hasNext(); ) { Class clazz = (Class) iter.next(); SurefireTestSet surefireTestSet = createTestSet( clazz ); executeTestSet( surefireTestSet, reporter, testClassLoader ); } return reporterFactory.close(); } private SurefireTestSet createTestSet( Class clazz ) throws TestSetFailedException { return reflector.isJUnit3Available() && jUnit3TestChecker.accept( clazz ) ? new JUnitTestSet( clazz, reflector ) : (SurefireTestSet) new PojoTestSet( clazz ); } private void executeTestSet( SurefireTestSet testSet, RunListener reporter, ClassLoader classLoader ) throws ReporterException, TestSetFailedException { ReportEntry report = new SimpleReportEntry( this.getClass().getName(), testSet.getName() ); reporter.testSetStarting( report ); testSet.execute( reporter, classLoader ); reporter.testSetCompleted( report ); } private TestsToRun scanClassPath() { return directoryScanner.locateTestClasses( testClassLoader, testChecker ); } public Iterator getSuites() { testsToRun = scanClassPath(); return testsToRun.iterator(); } } ././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.javasurefire-2.10/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/TestL0000644000175000017500000001375211542662104032437 0ustar tonytonypackage org.apache.maven.surefire.junit; /* * 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. */ import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.SimpleReportEntry; import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashSet; import java.util.Set; public class TestListenerInvocationHandler implements InvocationHandler { // The String names of the four methods in interface junit.framework.TestListener private static final String START_TEST = "startTest"; private static final String ADD_FAILURE = "addFailure"; private static final String ADD_ERROR = "addError"; private static final String END_TEST = "endTest"; private final Set failedTestsSet = new HashSet(); private RunListener reporter; private static final Class[] EMPTY_CLASS_ARRAY = new Class[]{ }; private static final String[] EMPTY_STRING_ARRAY = new String[]{ }; private static class FailedTest { private Object testThatFailed; private Thread threadOnWhichTestFailed; FailedTest( Object testThatFailed, Thread threadOnWhichTestFailed ) { if ( testThatFailed == null ) { throw new NullPointerException( "testThatFailed is null" ); } if ( threadOnWhichTestFailed == null ) { throw new NullPointerException( "threadOnWhichTestFailed is null" ); } this.testThatFailed = testThatFailed; this.threadOnWhichTestFailed = threadOnWhichTestFailed; } public boolean equals( Object obj ) { boolean retVal = true; if ( obj == null || getClass() != obj.getClass() ) { retVal = false; } else { FailedTest ft = (FailedTest) obj; if ( ft.testThatFailed != testThatFailed ) { retVal = false; } else if ( !ft.threadOnWhichTestFailed.equals( threadOnWhichTestFailed ) ) { retVal = false; } } return retVal; } public int hashCode() { return threadOnWhichTestFailed.hashCode(); } } public TestListenerInvocationHandler( RunListener reporter ) { if ( reporter == null ) { throw new NullPointerException( "reporter is null" ); } this.reporter = reporter; } public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable { String methodName = method.getName(); if ( methodName.equals( START_TEST ) ) { handleStartTest( args ); } else if ( methodName.equals( ADD_ERROR ) ) { handleAddError( args ); } else if ( methodName.equals( ADD_FAILURE ) ) { handleAddFailure( args ); } else if ( methodName.equals( END_TEST ) ) { handleEndTest( args ); } return null; } // Handler for TestListener.startTest(Test) public void handleStartTest( Object[] args ) { ReportEntry report = new SimpleReportEntry( args[0].getClass().getName(), args[0].toString() ); reporter.testStarting( report ); } // Handler for TestListener.addFailure(Test, Throwable) private void handleAddError( Object[] args ) throws IllegalAccessException, InvocationTargetException { ReportEntry report = new SimpleReportEntry( args[0].getClass().getName(), args[0].toString(), getStackTraceWriter( args ) ); reporter.testError( report ); failedTestsSet.add( new FailedTest( args[0], Thread.currentThread() ) ); } private JUnitStackTraceWriter getStackTraceWriter( Object[] args ) throws IllegalAccessException, InvocationTargetException { String testName; try { Method m = args[0].getClass().getMethod( "getName", EMPTY_CLASS_ARRAY ); testName = (String) m.invoke( args[0], EMPTY_STRING_ARRAY ); } catch ( NoSuchMethodException e ) { testName = "UNKNOWN"; } return new JUnitStackTraceWriter( args[0].getClass().getName(), testName, (Throwable) args[1] ); } private void handleAddFailure( Object[] args ) throws IllegalAccessException, InvocationTargetException { ReportEntry report = new SimpleReportEntry( args[0].getClass().getName(), args[0].toString(), getStackTraceWriter( args ) ); reporter.testFailed( report ); failedTestsSet.add( new FailedTest( args[0], Thread.currentThread() ) ); } private void handleEndTest( Object[] args ) { boolean testHadFailed = failedTestsSet.remove( new FailedTest( args[0], Thread.currentThread() ) ); if ( !testHadFailed ) { ReportEntry report = new SimpleReportEntry( args[0].getClass().getName(), args[0].toString() ); reporter.testSucceeded( report ); } } } surefire-2.10/surefire-providers/surefire-junit3/src/main/resources/0000755000175000017500000000000011645102474024452 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/main/resources/META-INF/0000755000175000017500000000000011645102474025612 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit3/src/main/resources/META-INF/services/0000755000175000017500000000000011645102474027435 5ustar tonytony././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootsurefire-2.10/surefire-providers/surefire-junit3/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvidersurefire-2.10/surefire-providers/surefire-junit3/src/main/resources/META-INF/services/org.apache.mav0000644000175000017500000000005711512164307032147 0ustar tonytonyorg.apache.maven.surefire.junit.JUnit3Provider surefire-2.10/surefire-providers/common-junit4/0000755000175000017500000000000011645102474020372 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/pom.xml0000644000175000017500000000370011640163725021710 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire-providers 2.10 ../pom.xml common-junit4 Shared JUnit4 Provider Code junit junit 4.0 provided org.apache.maven.surefire common-junit3 ${project.version} maven-compiler-plugin 1.5 1.5 surefire-2.10/surefire-providers/common-junit4/src/0000755000175000017500000000000011645102474021161 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/test/0000755000175000017500000000000011645102474022140 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/test/java/0000755000175000017500000000000011645102474023061 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/test/java/org/0000755000175000017500000000000011645102474023650 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/test/java/org/apache/0000755000175000017500000000000011645102474025071 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/test/java/org/apache/maven/0000755000175000017500000000000011645102474026177 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030023 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/junit4/0000755000175000017500000000000011645102474031240 5ustar tonytony././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4TestCheckerTest.javasurefire-2.10/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit40000644000175000017500000001251611557340256032311 0ustar tonytonypackage org.apache.maven.surefire.junit4; /* * 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. */ import org.apache.maven.surefire.common.junit4.JUnit4TestChecker; import org.apache.maven.surefire.testset.TestSetFailedException; import junit.framework.TestCase; import junit.framework.TestResult; import org.junit.Test; import org.junit.internal.runners.InitializationError; import org.junit.runner.Description; import org.junit.runner.RunWith; import org.junit.runner.Runner; import org.junit.runner.notification.RunNotifier; import org.junit.runners.Suite; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /** * @author Kristian Rosenvold */ public class JUnit4TestCheckerTest { private final JUnit4TestChecker jUnit4TestChecker = new JUnit4TestChecker( this.getClass().getClassLoader() ); @Test public void validJunit4Annotated() throws TestSetFailedException { assertTrue( jUnit4TestChecker.accept( JUnit4TestCheckerTest.class ) ); } @Test public void validJunit4itsAJunit3Test() throws TestSetFailedException { assertTrue( jUnit4TestChecker.accept( AlsoValid.class ) ); } @Test public void validJunitSubclassWithoutOwnTestmethods() throws TestSetFailedException { assertTrue( jUnit4TestChecker.accept( SubClassWithoutOwnTestMethods.class ) ); } @Test public void validSuite() throws TestSetFailedException { assertTrue( jUnit4TestChecker.accept( SuiteValid1.class ) ); } @Test public void validCustomSuite() throws TestSetFailedException { assertTrue( jUnit4TestChecker.accept( SuiteValid2.class ) ); } @Test public void validCustomRunner() throws TestSetFailedException { assertTrue( jUnit4TestChecker.accept( SuiteValidCustomRunner.class ) ); } @Test public void invalidTest() throws TestSetFailedException { assertFalse( jUnit4TestChecker.accept( NotValidTest.class ) ); } @Test public void dontAcceptAbstractClasses() { assertFalse( jUnit4TestChecker.accept( BaseClassWithTest.class ) ); } @Test public void suiteOnlyTest() { assertTrue( jUnit4TestChecker.accept( SuiteOnlyTest.class ) ); } @Test public void customSuiteOnlyTest() { assertTrue( jUnit4TestChecker.accept( CustomSuiteOnlyTest.class ) ); } @Test public void innerClassNotAutomaticallyTc(){ assertTrue( jUnit4TestChecker.accept( NestedTC.class)); assertFalse( jUnit4TestChecker.accept( NestedTC.Inner.class)); } public static class AlsoValid extends TestCase { public void testSomething() { } } public static class SuiteOnlyTest { public static junit.framework.Test suite() { return null; } } public static class CustomSuiteOnlyTest { public static MySuite2 suite() { return null; } } public static class MySuite2 implements junit.framework.Test { public int countTestCases() { return 0; } public void run( TestResult testResult ) { } } @SuppressWarnings( { "UnusedDeclaration" } ) public static class NotValidTest { public void testSomething() { } } public abstract static class BaseClassWithTest { @Test public void weAreAlsoATest() { } } public static class SubClassWithoutOwnTestMethods extends BaseClassWithTest { } @RunWith( Suite.class ) public static class SuiteValid1 { public void testSomething() { } } class CustomRunner extends Runner { @Override public Description getDescription() { return Description.createSuiteDescription( "CustomRunner" ); } @Override public void run( RunNotifier runNotifier ) { } } @RunWith( CustomRunner.class ) public static class SuiteValidCustomRunner { public void testSomething() { } } @RunWith( MySuite.class ) public static class SuiteValid2 { public void testSomething() { } } class MySuite extends Suite { MySuite( Class klass ) throws InitializationError { super( klass ); } } class NestedTC extends TestCase { public class Inner { } } } surefire-2.10/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/0000755000175000017500000000000011645102474031313 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/surefire-2.10/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit40000755000175000017500000000000011645102474032451 5ustar tonytony././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootsurefire-2.10/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/JUnit4RunListenerTest.javasurefire-2.10/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit40000644000175000017500000000660411553354371032464 0ustar tonytonypackage org.apache.maven.surefire.common.junit4; /* * 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. */ import java.util.concurrent.CountDownLatch; import org.apache.maven.surefire.junit4.MockReporter; import junit.framework.Assert; import org.junit.Test; import org.junit.runner.Description; import org.junit.runner.Request; import org.junit.runner.Runner; import org.junit.runner.notification.Failure; import org.junit.runner.notification.RunListener; import org.junit.runner.notification.RunNotifier; /** * @author Kristian Rosenvold */ public class JUnit4RunListenerTest { @Test public void testTestStarted() throws Exception { RunListener jUnit4TestSetReporter = new JUnit4RunListener( new MockReporter( ) ); Runner junitTestRunner = Request.classes( "abc", STest1.class, STest2.class ).getRunner(); RunNotifier runNotifier = new RunNotifier(); runNotifier.addListener( jUnit4TestSetReporter ); junitTestRunner.run( runNotifier ); } @Test public void testParallelInvocations() throws Exception { final MockReporter reporter = new MockReporter(); final RunListener jUnit4TestSetReporter = new JUnit4RunListener( reporter ); final CountDownLatch countDownLatch = new CountDownLatch( 1 ); final Description testSomething = Description.createTestDescription( STest1.class, "testSomething" ); final Description testSomething2 = Description.createTestDescription( STest2.class, "testSomething2" ); jUnit4TestSetReporter.testStarted( testSomething ); new Thread(new Runnable(){ public void run() { try { jUnit4TestSetReporter.testStarted( testSomething2 ); jUnit4TestSetReporter.testFailure( new Failure( testSomething2, new AssertionError( "Fud" ) )); jUnit4TestSetReporter.testFinished( testSomething2 ); countDownLatch.countDown(); } catch ( Exception e ) { throw new RuntimeException( e ); } } }).start(); countDownLatch.await(); jUnit4TestSetReporter.testFinished( testSomething ); Assert.assertEquals( "Failing tests", 1, reporter.getTestFailed() ); Assert.assertEquals( "Succeeded tests", 1, reporter.getTestSucceeded() ); } public static class STest1 { @Test public void testSomething() { } } public static class STest2 { @Test public void testSomething2() { } } } surefire-2.10/surefire-providers/common-junit4/src/main/0000755000175000017500000000000011645102474022105 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/main/java/0000755000175000017500000000000011645102474023026 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/main/java/org/0000755000175000017500000000000011645102474023615 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/0000755000175000017500000000000011645102474025036 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/0000755000175000017500000000000011645102474026144 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474027770 5ustar tonytonysurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/0000755000175000017500000000000011645102474031205 5ustar tonytony././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/MockReporter.javasurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/MockRe0000644000175000017500000000546011557340256032321 0ustar tonytonypackage org.apache.maven.surefire.junit4; /* * 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. */ import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.RunListener; /** * Internal use only */ public class MockReporter implements RunListener { private final List events = new ArrayList(); public static final String SET_STARTED = "SET_STARTED"; public static final String SET_COMPLETED = "SET_COMPLETED"; public static final String TEST_STARTED = "TEST_STARTED"; public static final String TEST_COMPLETED = "TEST_COMPLETED"; public static final String TEST_SKIPPED = "TEST_SKIPPED"; private final AtomicInteger testSucceeded = new AtomicInteger(); private final AtomicInteger testIgnored = new AtomicInteger(); private final AtomicInteger testFailed = new AtomicInteger(); private final AtomicInteger testError = new AtomicInteger(); public MockReporter() { } public void testSetStarting( ReportEntry report ) { events.add( SET_STARTED ); } public void testSetCompleted( ReportEntry report ) { events.add( SET_COMPLETED ); } public void testStarting( ReportEntry report ) { events.add( TEST_STARTED ); } public void testSucceeded( ReportEntry report ) { events.add( TEST_COMPLETED ); testSucceeded.incrementAndGet(); } public void testSkipped( ReportEntry report ) { events.add( TEST_SKIPPED ); testIgnored.incrementAndGet(); } public int getTestSucceeded() { return testSucceeded.get(); } public int getTestFailed() { return testFailed.get(); } public void testError( ReportEntry report ) { testError.incrementAndGet(); } public void testFailed( ReportEntry report ) { testFailed.incrementAndGet(); } public void testAssumptionFailure( ReportEntry report ) { } } surefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/0000755000175000017500000000000011645102474031260 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/surefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit40000755000175000017500000000000011645102474032416 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.javasurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit40000644000175000017500000001161311557340256032426 0ustar tonytonypackage org.apache.maven.surefire.common.junit4; /* * 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. */ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.SimpleReportEntry; import org.junit.runner.Description; import org.junit.runner.notification.Failure; public class JUnit4RunListener extends org.junit.runner.notification.RunListener { private static final Pattern PARENS = Pattern.compile( "^" + "[^\\(\\)]+" //non-parens + "\\((" // then an open-paren (start matching a group) + "[^\\\\(\\\\)]+" //non-parens + ")\\)" + "$" ); // then a close-paren (end group match) protected final RunListener reporter; /** * This flag is set after a failure has occurred so that a testSucceeded event is not fired. * This is necessary because JUnit4 always fires a testRunFinished event-- even if there was a failure. */ private final ThreadLocal failureFlag = new InheritableThreadLocal(); /** * Constructor. * * @param reporter the reporter to log testing events to */ public JUnit4RunListener( RunListener reporter ) { this.reporter = reporter; } // Testrun methods are not invoked when using the runner /** * Called when a specific test has been skipped (for whatever reason). * * @see org.junit.runner.notification.RunListener#testIgnored(org.junit.runner.Description) */ public void testIgnored( Description description ) throws Exception { reporter.testSkipped( createReportEntry( description ) ); } /** * Called when a specific test has started. * * @see org.junit.runner.notification.RunListener#testStarted(org.junit.runner.Description) */ public void testStarted( Description description ) throws Exception { reporter.testStarting( createReportEntry( description ) ); failureFlag.remove(); } /** * Called when a specific test has failed. * * @see org.junit.runner.notification.RunListener#testFailure(org.junit.runner.notification.Failure) */ @SuppressWarnings( { "ThrowableResultOfMethodCallIgnored" } ) public void testFailure( Failure failure ) throws Exception { ReportEntry report = new SimpleReportEntry( extractClassName( failure.getDescription() ), failure.getTestHeader(), new JUnit4StackTraceWriter( failure ) ); if ( failure.getException() instanceof AssertionError ) { this.reporter.testFailed( report ); } else { this.reporter.testError( report ); } failureFlag.set( Boolean.TRUE ); } @SuppressWarnings( { "UnusedDeclaration" } ) public void testAssumptionFailure( Failure failure ) { this.reporter.testAssumptionFailure( createReportEntry( failure.getDescription() ) ); failureFlag.set( Boolean.TRUE ); } /** * Called after a specific test has finished. * * @see org.junit.runner.notification.RunListener#testFinished(org.junit.runner.Description) */ public void testFinished( Description description ) throws Exception { Boolean failure = failureFlag.get(); if ( failure == null ) { reporter.testSucceeded( createReportEntry( description ) ); } } private SimpleReportEntry createReportEntry( Description description ) { return new SimpleReportEntry( extractClassName( description ), description.getDisplayName() ); } String extractClassName( Description description ) { String displayName = description.getDisplayName(); Matcher m = PARENS.matcher( displayName ); if ( !m.find() ) { return displayName; } return m.group( 1 ); } } ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootsurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.javasurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit40000644000175000017500000000427411520115211032410 0ustar tonytonypackage org.apache.maven.surefire.common.junit4; /* * 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. */ import org.apache.maven.surefire.report.StackTraceWriter; import org.junit.runner.notification.Failure; /** * Writes out a specific {@link org.junit.runner.notification.Failure} for * surefire as a stacktrace. * * @author Karl M. Davis */ public class JUnit4StackTraceWriter implements StackTraceWriter { // Member Variables private final Failure junitFailure; /** * Constructor. * * @param junitFailure the {@link Failure} that this will be operating on */ public JUnit4StackTraceWriter( Failure junitFailure ) { this.junitFailure = junitFailure; } /* * (non-Javadoc) * * @see org.apache.maven.surefire.report.StackTraceWriter#writeTraceToString() */ public String writeTraceToString() { return junitFailure.getTrace(); } /** * At the moment, returns the same as {@link #writeTraceToString()}. * * @see org.apache.maven.surefire.report.StackTraceWriter#writeTrimmedTraceToString() */ public String writeTrimmedTraceToString() { return junitFailure.getTrace(); } /** * Returns the exception associated with this failure. * * @see org.apache.maven.surefire.report.StackTraceWriter#getThrowable() */ public Throwable getThrowable() { return junitFailure.getException(); } } ././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootsurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListenerFactory.javasurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit40000644000175000017500000000331711516403023032413 0ustar tonytonypackage org.apache.maven.surefire.common.junit4; /* * 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. */ import org.apache.maven.surefire.util.ReflectionUtils; import org.junit.runner.notification.RunListener; import java.util.LinkedList; import java.util.List; /** * @author Kristian Rosenvold */ public class JUnit4RunListenerFactory { public static List createCustomListeners( String listenerProperty ) { List result = new LinkedList(); if ( listenerProperty == null ) { return result; } for ( String thisListenerName : listenerProperty.split( "," ) ) { RunListener customRunListener = (RunListener) ReflectionUtils.instantiate( Thread.currentThread().getContextClassLoader(), thisListenerName ); result.add( customRunListener ); } return result; } } ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4TestChecker.javasurefire-2.10/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit40000644000175000017500000000614311512164307032420 0ustar tonytonypackage org.apache.maven.surefire.common.junit4; /* * 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. */ import org.apache.maven.surefire.NonAbstractClassFilter; import org.apache.maven.surefire.common.junit3.JUnit3TestChecker; import org.apache.maven.surefire.util.ReflectionUtils; import org.apache.maven.surefire.util.ScannerFilter; import java.lang.annotation.Annotation; import java.lang.reflect.Method; /** * @author Kristian Rosenvold */ public class JUnit4TestChecker implements ScannerFilter { private final NonAbstractClassFilter nonAbstractClassFilter; private final Class runWith; private final JUnit3TestChecker jUnit3TestChecker; public JUnit4TestChecker( ClassLoader testClassLoader ) { this.jUnit3TestChecker = new JUnit3TestChecker( testClassLoader ); this.runWith = getJUnitClass( testClassLoader, org.junit.runner.RunWith.class.getName() ); this.nonAbstractClassFilter = new NonAbstractClassFilter(); } public boolean accept( Class testClass ) { return jUnit3TestChecker.accept( testClass ) || isValidJUnit4Test( testClass ); } @SuppressWarnings( { "unchecked" } ) private boolean isValidJUnit4Test( Class testClass ) { if ( !nonAbstractClassFilter.accept( testClass ) ) { return false; } Annotation runWithAnnotation = testClass.getAnnotation( runWith ); if ( runWithAnnotation != null ) { return true; } Class classToCheck = testClass; while ( classToCheck != null ) { if ( checkforTestAnnotatedMethod( classToCheck ) ) { return true; } classToCheck = classToCheck.getSuperclass(); } return false; } private boolean checkforTestAnnotatedMethod( Class testClass ) { for ( Method lMethod : testClass.getDeclaredMethods() ) { for ( Annotation lAnnotation : lMethod.getAnnotations() ) { if ( org.junit.Test.class.isAssignableFrom( lAnnotation.annotationType() ) ) { return true; } } } return false; } private Class getJUnitClass( ClassLoader classLoader, String className ) { return ReflectionUtils.tryLoadClass( classLoader, className ); } } surefire-2.10/surefire-providers/surefire-testng/0000755000175000017500000000000011645102474021015 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/pom.xml0000644000175000017500000000663111640163725022341 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire-providers 2.10 ../pom.xml surefire-testng SureFire TestNG Runner org.apache.maven maven-artifact 2.0 org.apache.maven.surefire surefire-testng-utils ${project.version} junit junit 3.8.2 provided src/main/resources/META-INF META-INF maven-compiler-plugin false 1.4 1.4 1.4 maven-surefire-plugin true jdk14 1.4 org.testng testng 5.7 jdk14 jdk15 !1.4 org.testng testng 5.7 jdk15 surefire-2.10/surefire-providers/surefire-testng/src/0000755000175000017500000000000011645102474021604 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/test/0000755000175000017500000000000011645102474022563 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/test/java/0000755000175000017500000000000011645102474023504 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/test/java/org/0000755000175000017500000000000011645102474024273 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/test/java/org/apache/0000755000175000017500000000000011645102474025514 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/test/java/org/apache/maven/0000755000175000017500000000000011645102474026622 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030446 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/main/0000755000175000017500000000000011645102474022530 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/main/java/0000755000175000017500000000000011645102474023451 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/0000755000175000017500000000000011645102474024240 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/0000755000175000017500000000000011645102474025461 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/0000755000175000017500000000000011645102474026567 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030413 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/0000755000175000017500000000000011645102474031717 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/surefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf0000755000175000017500000000000011645102474032565 5ustar tonytony././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/Configurator.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf0000644000175000017500000000207710746447522032604 0ustar tonytonypackage org.apache.maven.surefire.testng.conf; /* * 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. */ import org.apache.maven.surefire.testset.TestSetFailedException; import org.testng.TestNG; import java.util.Map; public interface Configurator { void configure( TestNG testng, Map options ) throws TestSetFailedException; }././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/AbstractDirectConfigurator.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf0000644000175000017500000001231611520115211032553 0ustar tonytonypackage org.apache.maven.surefire.testng.conf; /* * 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. */ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.maven.surefire.testset.TestSetFailedException; import org.apache.maven.surefire.util.NestedRuntimeException; import org.testng.TestNG; public abstract class AbstractDirectConfigurator implements Configurator { final Map setters; AbstractDirectConfigurator() { Map options = new HashMap(); options.put( "groups", new Setter( "setGroups", String.class ) ); options.put( "excludedgroups", new Setter( "setExcludedGroups", String.class ) ); options.put( "junit", new Setter( "setJUnit", Boolean.class ) ); options.put( "threadcount", new Setter( "setThreadCount", int.class ) ); options.put( "usedefaultlisteners", new Setter( "setUseDefaultListeners", boolean.class ) ); this.setters = options; } public void configure( TestNG testng, Map options ) throws TestSetFailedException { // kind of ugly, but listeners are configured differently final String listeners = (String) options.remove( "listener" ); // DGF In 4.7, default listeners dump XML files in the surefire-reports directory, // confusing the report plugin. This was fixed in later versions. testng.setUseDefaultListeners( false ); for ( Iterator it = options.entrySet().iterator(); it.hasNext(); ) { Map.Entry entry = (Map.Entry) it.next(); String key = (String) entry.getKey(); Object val = entry.getValue(); Setter setter = (Setter) setters.get( key ); if ( setter != null ) { try { setter.invoke( testng, val ); } catch ( Exception ex ) { throw new NestedRuntimeException( "Cannot set option " + key + " with value " + val, ex ); } } } // TODO: we should have the Profile so that we can decide if this is needed or not testng.setListenerClasses( loadListenerClasses( listeners ) ); } public static List loadListenerClasses( String listenerClasses ) throws TestSetFailedException { if ( listenerClasses == null || "".equals( listenerClasses.trim() ) ) { return new ArrayList(); } List classes = new ArrayList(); String[] classNames = listenerClasses.split( " *, *" ); for ( int i = 0; i < classNames.length; i++ ) { String className = classNames[i]; Class clazz = loadClass( className ); classes.add( clazz ); } return classes; } public static Class loadClass( String className ) throws TestSetFailedException { try { return Class.forName( className ); } catch ( Exception ex ) { throw new TestSetFailedException( "Cannot find listener class " + className, ex ); } } public static final class Setter { private final String setterName; private final Class paramClass; public Setter( String name, Class clazz ) { this.setterName = name; this.paramClass = clazz; } public void invoke( Object target, Object value ) throws Exception { Method setter = target.getClass().getMethod( this.setterName, new Class[] { this.paramClass } ); if ( setter != null ) { setter.invoke( target, new Object[] { convertValue( value ) } ); } } Object convertValue( Object value ) { if ( value == null ) { return value; } if ( this.paramClass.isAssignableFrom( value.getClass() ) ) { return value; } if ( Boolean.class.equals( this.paramClass ) || boolean.class.equals( this.paramClass ) ) { return Boolean.valueOf( value.toString() ); } if ( Integer.class.equals( this.paramClass ) || int.class.equals( this.paramClass ) ) { return new Integer( value.toString() ); } return value; } } } ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG4751Configurator.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf0000644000175000017500000000245310722353046032571 0ustar tonytonypackage org.apache.maven.surefire.testng.conf; /* * 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. */ /** * TestNG 4.7 and 5.1 configurator. *

* Allowed options: * -groups * -excludedgroups * -junit (boolean) * -threadcount (int) * -parallel (boolean) *

* * @author Alex Popescu */ public class TestNG4751Configurator extends AbstractDirectConfigurator { public TestNG4751Configurator() { setters.put( "parallel", new Setter( "setParallel", boolean.class ) ); } }././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG52Configurator.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf0000644000175000017500000000243510722353046032571 0ustar tonytonypackage org.apache.maven.surefire.testng.conf; /* * 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. */ /** * TestNG 5.2 configurator. *

* Allowed options: * -groups * -excludedgroups * -junit (boolean) * -threadcount (int) * -parallel (String) *

* * @author Alex Popescu */ public class TestNG52Configurator extends AbstractDirectConfigurator { public TestNG52Configurator() { setters.put( "parallel", new Setter( "setParallel", String.class ) ); } }././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNGMapConfigurator.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf0000644000175000017500000001152111503742760032570 0ustar tonytonypackage org.apache.maven.surefire.testng.conf; /* * 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. */ import org.apache.maven.surefire.testset.TestSetFailedException; import org.testng.TestNG; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * TestNG configurator for 5.3+ versions. TestNG exposes * a {@link org.testng.TestNG#configure(java.util.Map)} method. * All suppported TestNG options are passed in String format, except * TestNGCommandLineArgs.LISTENER_COMMAND_OPT which is List>Class<, * TestNGCommandLineArgs.JUNIT_DEF_OPT which is a Boolean, * TestNGCommandLineArgs.SKIP_FAILED_INVOCATION_COUNT_OPT which is a Boolean, * TestNGCommandLineArgs.OBJECT_FACTORY_COMMAND_OPT which is a Class, * TestNGCommandLineArgs.REPORTERS_LIST which is a List>ReporterConfig<. * *

* Test classes and/or suite files are not passed along as options parameters, but * configured separately. * * @author Alex Popescu */ public class TestNGMapConfigurator implements Configurator { public void configure( TestNG testng, Map options ) throws TestSetFailedException { Map convertedOptions = new HashMap(); for ( Iterator it = options.entrySet().iterator(); it.hasNext(); ) { Map.Entry entry = (Map.Entry) it.next(); String key = (String) entry.getKey(); Object val = entry.getValue(); if ( "listener".equals( key ) ) { val = AbstractDirectConfigurator.loadListenerClasses( (String) val ); } if ( "objectfactory".equals( key ) ) { val = AbstractDirectConfigurator.loadClass( (String) val ); } if ( "reporter".equals( key ) ) { // TODO support multiple reporters? val = convertReporterConfig( val ); key = "reporterslist"; } if ( "junit".equals( key ) ) { val = convert( val, Boolean.class ); } else if ( "skipfailedinvocationcounts".equals( key ) ) { val = convert( val, Boolean.class ); } else if ( "threadcount".equals( key ) ) { val = convert( val, String.class ); } // TODO objectfactory... not even documented, does it work? if ( key.startsWith( "-" ) ) { convertedOptions.put( key, val ); } else { convertedOptions.put( "-" + key, val ); } } testng.configure( convertedOptions ); } // ReporterConfig only became available in later versions of TestNG private Object convertReporterConfig( Object val ) { final String reporterConfigClassName = "org.testng.ReporterConfig"; try { Class reporterConfig = Class.forName( reporterConfigClassName ); Method deserialize = reporterConfig.getMethod( "deserialize", new Class[] { String.class } ); Object rc = deserialize.invoke( null, new Object[] { val } ); ArrayList reportersList = new ArrayList(); reportersList.add( rc ); return reportersList; } catch ( Exception e ) { return val; } } protected Object convert( Object val, Class type ) { if ( val == null ) { return null; } if ( type.isAssignableFrom( val.getClass() ) ) { return val; } if ( ( Boolean.class.equals( type ) || boolean.class.equals( type ) ) && String.class.equals( val.getClass() ) ) { return Boolean.valueOf( (String) val ); } if ( String.class.equals( type ) ) { return val.toString(); } return val; } }././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/Test0000644000175000017500000002367411603272271032572 0ustar tonytonypackage org.apache.maven.surefire.testng; /* * 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. */ import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.SortedMap; import java.util.TreeMap; import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.surefire.NonAbstractClassFilter; import org.apache.maven.surefire.report.ConsoleOutputCapture; import org.apache.maven.surefire.report.ConsoleOutputReceiver; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.SimpleReportEntry; import org.apache.maven.surefire.testset.TestSetFailedException; import org.apache.maven.surefire.util.DefaultDirectoryScanner; import org.apache.maven.surefire.util.DirectoryScanner; import org.apache.maven.surefire.util.RunOrder; import org.apache.maven.surefire.util.TestsToRun; /** * Test suite for TestNG based on a directory of Java test classes. Can also execute JUnit tests. * * @author Brett Porter * @author Alex Popescu */ public class TestNGDirectoryTestSuite implements TestNgTestSuite { private final ArtifactVersion version; private final Map options; private final String testSourceDirectory; private final File reportsDirectory; private SortedMap testSets; private final DirectoryScanner surefireDirectoryScanner; private final String testMethodPattern; public TestNGDirectoryTestSuite( File basedir, ArrayList includes, ArrayList excludes, String testSourceDirectory, String artifactVersion, Properties confOptions, File reportsDirectory, String testMethodPattern ) { this.surefireDirectoryScanner = new DefaultDirectoryScanner( basedir, includes, excludes, RunOrder.FILESYSTEM ); this.options = confOptions; this.testSourceDirectory = testSourceDirectory; this.reportsDirectory = reportsDirectory; this.version = new DefaultArtifactVersion( artifactVersion ); this.testMethodPattern = testMethodPattern; } public void execute( TestsToRun testsToRun, ReporterFactory reporterManagerFactory ) throws ReporterException, TestSetFailedException { if ( testsToRun.size() == 0 ) { return; } if ( testsToRun.size() > 1 ) { executeMulti( testsToRun, reporterManagerFactory ); return; } this.options.put( "suitename", testsToRun.getLocatedClasses()[0].getName() ); RunListener reporter = reporterManagerFactory.createReporter(); ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporter ); startTestSuite( reporter, this ); TestNGExecutor.run( new Class[]{ (Class) testsToRun.iterator().next() }, this.testSourceDirectory, this.options, this.version, reporter, this, reportsDirectory, testMethodPattern ); finishTestSuite( reporter, this ); } public void executeMulti( TestsToRun testsToRun, ReporterFactory reporterFactory ) throws ReporterException, TestSetFailedException { Class junitTest; try { junitTest = Class.forName( "junit.framework.Test" ); } catch ( ClassNotFoundException e ) { junitTest = null; } List testNgTestClasses = new ArrayList(); List junitTestClasses = new ArrayList(); for ( Iterator it = testsToRun.iterator(); it.hasNext(); ) { Class c = (Class) it.next(); if ( junitTest != null && junitTest.isAssignableFrom( c ) ) { junitTestClasses.add( c ); } else { testNgTestClasses.add( c ); } } File testNgReportsDirectory = reportsDirectory, junitReportsDirectory = reportsDirectory; if ( junitTestClasses.size() > 0 && testNgTestClasses.size() > 0 ) { testNgReportsDirectory = new File( reportsDirectory, "testng-native-results" ); junitReportsDirectory = new File( reportsDirectory, "testng-junit-results" ); } // RunListener reporterManager = new SynchronizedReporterManager( reporterFactory.createReporter() ); RunListener reporterManager = reporterFactory.createReporter(); ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporterManager ); startTestSuite( reporterManager, this ); Class[] testClasses = (Class[]) testNgTestClasses.toArray( new Class[testNgTestClasses.size()] ); TestNGExecutor.run( testClasses, this.testSourceDirectory, this.options, this.version, reporterManager, this, testNgReportsDirectory, testMethodPattern ); if ( junitTestClasses.size() > 0 ) { testClasses = (Class[]) junitTestClasses.toArray( new Class[junitTestClasses.size()] ); Map junitOptions = new HashMap(); for ( Iterator it = this.options.keySet().iterator(); it.hasNext(); ) { Object key = it.next(); junitOptions.put( key, options.get( key ) ); } junitOptions.put( "junit", Boolean.TRUE ); TestNGExecutor.run( testClasses, this.testSourceDirectory, junitOptions, this.version, reporterManager, this, junitReportsDirectory, testMethodPattern ); } finishTestSuite( reporterManager, this ); } // single class test public void execute( String testSetName, ReporterFactory reporterManagerFactory ) throws ReporterException, TestSetFailedException { if ( testSets == null ) { throw new IllegalStateException( "You must call locateTestSets before calling execute" ); } TestNGTestSet testSet = (TestNGTestSet) testSets.get( testSetName ); if ( testSet == null ) { throw new TestSetFailedException( "Unable to find test set '" + testSetName + "' in suite" ); } RunListener reporter = reporterManagerFactory.createReporter(); ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporter ); startTestSuite( reporter, this ); TestNGExecutor.run( new Class[]{ testSet.getTestClass() }, this.testSourceDirectory, this.options, this.version, reporter, this, reportsDirectory, testMethodPattern ); finishTestSuite( reporter, this ); } public static void startTestSuite( RunListener reporter, Object suite ) { ReportEntry report = new SimpleReportEntry( suite.getClass().getName(), getSuiteName( suite ) ); try { reporter.testSetStarting( report ); } catch ( ReporterException e ) { // TODO: remove this exception from the report manager } } public static void finishTestSuite( RunListener reporterManager, Object suite ) throws ReporterException { ReportEntry report = new SimpleReportEntry( suite.getClass().getName(), getSuiteName( suite ) ); reporterManager.testSetCompleted( report ); } public String getSuiteName() { String result = (String) options.get( "suitename" ); if ( result == null ) { result = "TestSuite"; } return result; } private static String getSuiteName( Object suite ) { String result; if ( suite instanceof TestNGDirectoryTestSuite ) { return ( (TestNGDirectoryTestSuite) suite ).getSuiteName(); } else if ( suite instanceof TestNGXmlTestSuite ) { return ( (TestNGXmlTestSuite) suite ).getSuiteName(); } else { result = "TestSuite"; } return result; } public Map locateTestSets( ClassLoader classLoader ) throws TestSetFailedException { if ( testSets != null ) { throw new IllegalStateException( "You can't call locateTestSets twice" ); } testSets = new TreeMap(); final TestsToRun testsToRun = surefireDirectoryScanner.locateTestClasses( classLoader, new NonAbstractClassFilter() ); Class[] locatedClasses = testsToRun.getLocatedClasses(); for ( int i = 0; i < locatedClasses.length; i++ ) { Class testClass = locatedClasses[i]; TestNGTestSet testSet = new TestNGTestSet( testClass ); if ( testSets.containsKey( testSet.getName() ) ) { throw new TestSetFailedException( "Duplicate test set '" + testSet.getName() + "'" ); } testSets.put( testSet.getName(), testSet ); } return Collections.unmodifiableSortedMap( testSets ); } } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/ConfigurationAwareTestNGReporter.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/Conf0000644000175000017500000000254711542662104032534 0ustar tonytonypackage org.apache.maven.surefire.testng; /* * 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. */ import org.apache.maven.surefire.report.RunListener; import org.testng.internal.IResultListener; /** * Just like TestNGReporter, but explicitly implements IResultListener; this interface is new in TestNG 5.5 * * @author Dan Fabulich * @noinspection UnusedDeclaration */ public class ConfigurationAwareTestNGReporter extends TestNGReporter implements IResultListener { public ConfigurationAwareTestNGReporter( RunListener reportManager, TestNgTestSuite source ) { super( reportManager ); } } ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNgTestSuite.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/Test0000644000175000017500000000266211557340256032573 0ustar tonytonypackage org.apache.maven.surefire.testng; /* * 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. */ import java.util.Map; import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.testset.TestSetFailedException; /** * A complete test suite that contains one or more test sets. * * @author Brett Porter */ public interface TestNgTestSuite { void execute( String testSetName, ReporterFactory reporterManagerFactory ) throws ReporterException, TestSetFailedException; Map locateTestSets( ClassLoader classLoader ) throws TestSetFailedException; } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGExecutor.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/Test0000644000175000017500000001676011542662104032570 0ustar tonytonypackage org.apache.maven.surefire.testng; /* * 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. */ import java.io.File; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.List; import java.util.Map; import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.testng.conf.Configurator; import org.apache.maven.surefire.testng.conf.TestNG4751Configurator; import org.apache.maven.surefire.testng.conf.TestNG52Configurator; import org.apache.maven.surefire.testng.conf.TestNGMapConfigurator; import org.apache.maven.surefire.testset.TestSetFailedException; import org.apache.maven.surefire.util.NestedRuntimeException; import org.apache.maven.surefire.util.internal.StringUtils; import org.testng.TestNG; /** * Contains utility methods for executing TestNG. * * @author Brett Porter * @author Alex Popescu */ public class TestNGExecutor { private TestNGExecutor() { // noop } public static void run( Class[] testClasses, String testSourceDirectory, Map options, ArtifactVersion version, RunListener reportManager, TestNgTestSuite suite, File reportsDirectory, final String methodNamePattern ) throws TestSetFailedException { TestNG testng = new TestNG( true ); if (!StringUtils.isBlank( methodNamePattern )) { applyMethodNameFiltering( testng, methodNamePattern ); } Configurator configurator = getConfigurator( version ); configurator.configure( testng, options ); postConfigure( testng, testSourceDirectory, reportManager, suite, reportsDirectory ); testng.setTestClasses( testClasses ); testng.run(); } private static void applyMethodNameFiltering(TestNG testng, String methodNamePattern) throws TestSetFailedException { // the class is available in the testClassPath String clazzName = "org.apache.maven.surefire.testng.utils.MethodSelector"; // looks to need a high value testng.addMethodSelector( clazzName , 10000 ); try { Class clazz = Class.forName( clazzName ); Method method = clazz.getMethod( "setMethodName", new Class[]{String.class} ); method.invoke( null, new Object[]{methodNamePattern} ); } catch ( ClassNotFoundException e ) { throw new TestSetFailedException(e.getMessage(), e); } catch ( SecurityException e ) { throw new TestSetFailedException(e.getMessage(), e); } catch ( NoSuchMethodException e ) { throw new TestSetFailedException(e.getMessage(), e); } catch ( IllegalArgumentException e ) { throw new TestSetFailedException(e.getMessage(), e); } catch ( IllegalAccessException e ) { throw new TestSetFailedException(e.getMessage(), e); } catch ( InvocationTargetException e ) { throw new TestSetFailedException(e.getMessage(), e); } } public static void run( List suiteFiles, String testSourceDirectory, Map options, ArtifactVersion version, RunListener reportManager, TestNgTestSuite suite, File reportsDirectory ) throws TestSetFailedException { TestNG testng = new TestNG( true ); Configurator configurator = getConfigurator( version ); configurator.configure( testng, options ); postConfigure( testng, testSourceDirectory, reportManager, suite, reportsDirectory ); testng.setTestSuites( suiteFiles ); testng.run(); } private static Configurator getConfigurator( ArtifactVersion version ) throws TestSetFailedException { try { VersionRange range = VersionRange.createFromVersionSpec( "[4.7,5.1]" ); if ( range.containsVersion( version ) ) { return new TestNG4751Configurator(); } range = VersionRange.createFromVersionSpec( "[5.2]" ); if ( range.containsVersion( version ) ) { return new TestNG52Configurator(); } range = VersionRange.createFromVersionSpec( "[5.3,)" ); if ( range.containsVersion( version ) ) { return new TestNGMapConfigurator(); } throw new TestSetFailedException( "Unknown TestNG version " + version ); } catch ( InvalidVersionSpecificationException invsex ) { throw new TestSetFailedException( "Bug in plugin. Please report it with the attached stacktrace", invsex ); } } private static void postConfigure( TestNG testNG, String sourcePath, RunListener reportManager, TestNgTestSuite suite, File reportsDirectory ) throws TestSetFailedException { // turn off all TestNG output testNG.setVerbose( 0 ); TestNGReporter reporter = createTestNGReporter( reportManager, suite ); testNG.addListener( (Object) reporter ); // FIXME: use classifier to decide if we need to pass along the source dir (onyl for JDK14) if ( sourcePath != null ) { testNG.setSourcePath( sourcePath ); } testNG.setOutputDirectory( reportsDirectory.getAbsolutePath() ); } // If we have access to IResultListener, return a ConfigurationAwareTestNGReporter // But don't cause NoClassDefFoundErrors if it isn't available; just return a regular TestNGReporter instead private static TestNGReporter createTestNGReporter( RunListener reportManager, TestNgTestSuite suite ) { try { Class.forName( "org.testng.internal.IResultListener" ); Class c = Class.forName( "org.apache.maven.surefire.testng.ConfigurationAwareTestNGReporter" ); try { Constructor ctor = c.getConstructor( new Class[]{ RunListener.class, TestNgTestSuite.class } ); return (TestNGReporter) ctor.newInstance( new Object[]{ reportManager, suite } ); } catch ( Exception e ) { throw new NestedRuntimeException( "Bug in ConfigurationAwareTestNGReporter", e ); } } catch ( ClassNotFoundException e ) { return new TestNGReporter( reportManager ); } } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/Test0000644000175000017500000001432311557340256032570 0ustar tonytonypackage org.apache.maven.surefire.testng; /* * 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. */ import org.apache.maven.surefire.report.CategorizedReportEntry; import org.apache.maven.surefire.report.PojoStackTraceWriter; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.SimpleReportEntry; import java.util.ResourceBundle; import org.testng.ISuite; import org.testng.ISuiteListener; import org.testng.ITestContext; import org.testng.ITestListener; import org.testng.ITestResult; import org.testng.TestNG; /** * Listens for and provides and adaptor layer so that * TestNG tests can report their status to the current * {@link org.apache.maven.surefire.report.RunListener}. * * @author jkuhnert * @noinspection ThrowableResultOfMethodCallIgnored */ public class TestNGReporter implements ITestListener, ISuiteListener { public static final String SUREFIRE_BUNDLE_NAME = "org.apache.maven.surefire.surefire"; private final ResourceBundle bundle = ResourceBundle.getBundle( SUREFIRE_BUNDLE_NAME ); /** * core Surefire reporting */ private final RunListener reporter; /** * Constructs a new instance that will listen to * test updates from a {@link TestNG} class instance. *

*

It is assumed that the requisite {@link TestNG#addListener(ITestListener)} * method call has already associated with this instance before the test * suite is run. * * @param reportManager Instance to report suite status to */ public TestNGReporter( RunListener reportManager ) { this.reporter = reportManager; if ( reportManager == null ) { throw new IllegalArgumentException( "ReportManager passed in was null." ); } } public void onTestStart( ITestResult result ) { String rawString = bundle.getString( "testStarting" ); String group = groupString( result.getMethod().getGroups(), result.getTestClass().getName() ); ReportEntry report = new CategorizedReportEntry( getSource( result ), getUserFriendlyTestName( result ), group ); reporter.testStarting( report ); } private String getSource( ITestResult result ) { return result.getTestClass().getName(); } public void onTestSuccess( ITestResult result ) { ReportEntry report = new SimpleReportEntry( getSource( result ), getUserFriendlyTestName( result ) ); reporter.testSucceeded( report ); } public void onTestFailure( ITestResult result ) { ReportEntry report = new SimpleReportEntry( getSource( result ), getUserFriendlyTestName( result ), new PojoStackTraceWriter( result.getTestClass().getRealClass().getName(), result.getMethod().getMethodName(), result.getThrowable() ) ); reporter.testFailed( report ); } private static String getUserFriendlyTestName( ITestResult result ) { // This is consistent with the JUnit output return result.getName() + "(" + result.getTestClass().getName() + ")"; } public void onTestSkipped( ITestResult result ) { ReportEntry report = new SimpleReportEntry( getSource( result ), getUserFriendlyTestName( result ) ); reporter.testSkipped( report ); } public void onTestFailedButWithinSuccessPercentage( ITestResult result ) { ReportEntry report = new SimpleReportEntry( getSource( result ), getUserFriendlyTestName( result ), new PojoStackTraceWriter( result.getTestClass().getRealClass().getName(), result.getMethod().getMethodName(), result.getThrowable() ) ); reporter.testError( report ); } public void onStart( ITestContext context ) { } public void onFinish( ITestContext context ) { } public void onStart( ISuite suite ) { } public void onFinish( ISuite suite ) { } /** * Creates a string out of the list of testng groups in the * form of

"group1,group2,group3"
. * * @param groups The groups being run * @param defaultValue The default to use if no groups * @return a string describing the groups */ private static String groupString( String[] groups, String defaultValue ) { String retVal; if ( groups != null && groups.length > 0 ) { StringBuffer str = new StringBuffer(); for ( int i = 0; i < groups.length; i++ ) { str.append( groups[i] ); if ( i + 1 < groups.length ) { str.append( "," ); } } retVal = str.toString(); } else { retVal = defaultValue; } return retVal; } public void onConfigurationFailure( ITestResult result ) { onTestFailure( result ); } public void onConfigurationSkip( ITestResult result ) { onTestSkipped( result ); } public void onConfigurationSuccess( ITestResult result ) { // DGF Don't record configuration successes as separate tests //onTestSuccess( result ); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/Test0000644000175000017500000001405511557340256032572 0ustar tonytonypackage org.apache.maven.surefire.testng; /* * 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. */ import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.Properties; import org.apache.maven.surefire.providerapi.AbstractProvider; import org.apache.maven.surefire.providerapi.ProviderParameters; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.surefire.testset.DirectoryScannerParameters; import org.apache.maven.surefire.testset.TestArtifactInfo; import org.apache.maven.surefire.testset.TestRequest; import org.apache.maven.surefire.testset.TestSetFailedException; import org.apache.maven.surefire.util.DirectoryScanner; import org.apache.maven.surefire.util.NestedRuntimeException; import org.apache.maven.surefire.util.TestsToRun; /** * @author Kristian Rosenvold * @noinspection UnusedDeclaration */ public class TestNGProvider extends AbstractProvider { private final Properties providerProperties; private final TestArtifactInfo testArtifactInfo; private final ReporterConfiguration reporterConfiguration; private final ClassLoader testClassLoader; private final DirectoryScannerParameters directoryScannerParameters; private final DirectoryScanner directoryScanner; private final TestRequest testRequest; private final ProviderParameters providerParameters; private TestsToRun testsToRun; private final File basedir; public TestNGProvider( ProviderParameters booterParameters ) { this.providerParameters = booterParameters; this.testClassLoader = booterParameters.getTestClassLoader(); this.directoryScannerParameters = booterParameters.getDirectoryScannerParameters(); this.providerProperties = booterParameters.getProviderProperties(); this.testRequest = booterParameters.getTestRequest(); basedir = directoryScannerParameters != null ? directoryScannerParameters.getTestClassesDirectory() : null; testArtifactInfo = booterParameters.getTestArtifactInfo(); reporterConfiguration = booterParameters.getReporterConfiguration(); this.directoryScanner = booterParameters.getDirectoryScanner(); } public Boolean isRunnable() { return Boolean.TRUE; } public RunResult invoke( Object forkTestSet ) throws TestSetFailedException, ReporterException { final ReporterFactory reporterFactory = providerParameters.getReporterFactory(); if ( isTestNGXmlTestSuite( testRequest ) ) { TestNGXmlTestSuite testNGXmlTestSuite = getXmlSuite(); testNGXmlTestSuite.locateTestSets( testClassLoader ); if ( forkTestSet != null && testRequest == null ) { testNGXmlTestSuite.execute( (String) forkTestSet, reporterFactory ); } else { testNGXmlTestSuite.execute( reporterFactory ); } } else { if ( testsToRun == null ) { testsToRun = forkTestSet == null ? scanClassPath() : TestsToRun.fromClass( (Class) forkTestSet ); } TestNGDirectoryTestSuite suite = getDirectorySuite(); suite.execute( testsToRun, reporterFactory ); } return reporterFactory.close(); } boolean isTestNGXmlTestSuite( TestRequest testSuiteDefinition ) { return testSuiteDefinition.getSuiteXmlFiles() != null && testSuiteDefinition.getSuiteXmlFiles().size() > 0 && testSuiteDefinition.getRequestedTest() == null; } private TestNGDirectoryTestSuite getDirectorySuite() { return new TestNGDirectoryTestSuite( basedir, new ArrayList( directoryScannerParameters.getIncludes() ), new ArrayList( directoryScannerParameters.getExcludes() ), testRequest.getTestSourceDirectory().toString(), testArtifactInfo.getVersion(), providerProperties, reporterConfiguration.getReportsDirectory(), testRequest.getRequestedTestMethod() ); } private TestNGXmlTestSuite getXmlSuite() { return new TestNGXmlTestSuite( testRequest.getSuiteXmlFiles(), testRequest.getTestSourceDirectory().toString(), testArtifactInfo.getVersion(), providerProperties, reporterConfiguration.getReportsDirectory() ); } public Iterator getSuites() { if ( isTestNGXmlTestSuite( testRequest ) ) { try { return getXmlSuite().locateTestSets( testClassLoader ).keySet().iterator(); } catch ( TestSetFailedException e ) { throw new NestedRuntimeException( e ); } } else { testsToRun = scanClassPath(); return testsToRun.iterator(); } } private TestsToRun scanClassPath() { return directoryScanner.locateTestClasses( testClassLoader, null ); } } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/Test0000644000175000017500000001143311557340256032567 0ustar tonytonypackage org.apache.maven.surefire.testng; /* * 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. */ import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.surefire.report.ConsoleOutputCapture; import org.apache.maven.surefire.report.ConsoleOutputReceiver; import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.testset.TestSetFailedException; /** * Handles suite xml file definitions for TestNG. * * @author jkuhnert * @author Alex Popescu */ public class TestNGXmlTestSuite implements TestNgTestSuite { private final List suiteFiles; private List suiteFilePaths; private final String testSourceDirectory; private final ArtifactVersion version; private final Map options; private final File reportsDirectory; // Not really used private Map testSets; /** * Creates a testng testset to be configured by the specified * xml file(s). The XML files are suite definitions files according to TestNG DTD. */ public TestNGXmlTestSuite( List suiteFiles, String testSourceDirectory, String artifactVersion, Properties confOptions, File reportsDirectory ) { this.suiteFiles = suiteFiles; this.options = confOptions; this.version = new DefaultArtifactVersion( artifactVersion ); this.testSourceDirectory = testSourceDirectory; this.reportsDirectory = reportsDirectory; } public void execute( ReporterFactory reporterManagerFactory ) throws ReporterException, TestSetFailedException { if ( testSets == null ) { throw new IllegalStateException( "You must call locateTestSets before calling execute" ); } // RunListener reporter = new SynchronizedReporterManager( reporterManagerFactory.createReporter() ); RunListener reporter = reporterManagerFactory.createReporter(); ConsoleOutputCapture.startCapture( (ConsoleOutputReceiver) reporter ); TestNGDirectoryTestSuite.startTestSuite( reporter, this ); TestNGExecutor.run( this.suiteFilePaths, this.testSourceDirectory, this.options, this.version, reporter, this, reportsDirectory ); TestNGDirectoryTestSuite.finishTestSuite( reporter, this ); } public void execute( String testSetName, ReporterFactory reporterManagerFactory ) throws TestSetFailedException { throw new TestSetFailedException( "Cannot run individual test when suite files are specified" ); } public Map locateTestSets( ClassLoader classLoader ) throws TestSetFailedException { if ( testSets != null ) { throw new IllegalStateException( "You can't call locateTestSets twice" ); } if ( this.suiteFiles == null ) { throw new IllegalStateException( "No suite files were specified" ); } this.testSets = new HashMap(); this.suiteFilePaths = new ArrayList(); for ( Iterator i = suiteFiles.iterator(); i.hasNext(); ) { File file = (File) i.next(); if ( !file.exists() || !file.isFile() ) { throw new TestSetFailedException( "Suite file " + file + " is not a valid file" ); } this.testSets.put( file, file.getAbsolutePath() ); this.suiteFilePaths.add( file.getAbsolutePath() ); } return this.testSets; } public String getSuiteName() { String result = (String) options.get( "suitename" ); if ( result == null ) { result = "TestSuite"; } return result; } } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGTestSet.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/Test0000644000175000017500000000305411503742760032564 0ustar tonytonypackage org.apache.maven.surefire.testng; /* * 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. */ /** * Main plugin point for running testng tests within the Surefire runtime * infrastructure. * * @author jkuhnert */ public class TestNGTestSet { private Class testClass; /** * Creates a new test testset that will process the class being * passed in to determine the testing configuration. * @param testClass The test class */ public TestNGTestSet( Class testClass ) { if ( testClass == null ) { throw new NullPointerException( "testClass is null" ); } this.testClass = testClass; } public String getName() { return testClass.getName(); } public Class getTestClass() { return testClass; } } ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/SynchronizedReporterManager.javasurefire-2.10/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/Sync0000644000175000017500000000701411542662104032555 0ustar tonytonypackage org.apache.maven.surefire.testng; /* * 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. */ import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.ReporterException; /** * A proxy that imposes synchronization on the Reporter. *

*

* At the moment this class only provides "compatible" synchronization that the testng runner can use, * and provides the same (faulty) level of synchronization as the <2.6 versions of surefire. *

* In the "future" when the concurrent junit provider is rid of all problems of childhood, * it should probably replace the entire reporting secion for testng too. *

*

*

* This design is really only good for single-threaded test execution. Although it is currently * used by testng provider, the design does not really make sense (and is buggy). *

* This is because to get correct results, the client basically needs to do something like this: * synchronized( ReporterManger.getClass()){ * reporterManager.runStarted() * reporterManager.testSetStarting() * reporterManager.testStarting() * reporterManager.testSucceeded() * reporterManager.testSetCompleted() * reporterManager.runCompleted() * } *

* This is because the underlying providers are singletons and keep state, if you remove the outer synchronized * block, you may get mixups between results from different tests; although the end result (total test count etc) * should probably be correct. *

*

* * @noinspection deprecation */ class SynchronizedReporterManager implements RunListener { private final RunListener target; public SynchronizedReporterManager( RunListener target ) { this.target = target; } public synchronized void testSetStarting( ReportEntry report ) throws ReporterException { target.testSetStarting( report ); } public synchronized void testSetCompleted( ReportEntry report ) throws ReporterException { target.testSetCompleted( report ); } public synchronized void testStarting( ReportEntry report ) { target.testStarting( report ); } public synchronized void testSucceeded( ReportEntry report ) { target.testSucceeded( report ); } public synchronized void testSkipped( ReportEntry report ) { target.testSkipped( report ); } public synchronized void testError( ReportEntry reportEntry ) { target.testError( reportEntry ); } public synchronized void testFailed( ReportEntry reportEntry ) { target.testFailed( reportEntry ); } public synchronized void testAssumptionFailure( ReportEntry report ) { target.testAssumptionFailure( report ); } } surefire-2.10/surefire-providers/surefire-testng/src/main/resources/0000755000175000017500000000000011645102474024542 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/main/resources/META-INF/0000755000175000017500000000000011645102474025702 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng/src/main/resources/META-INF/services/0000755000175000017500000000000011645102474027525 5ustar tonytony././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvidersurefire-2.10/surefire-providers/surefire-testng/src/main/resources/META-INF/services/org.apache.mav0000644000175000017500000000006011476536715032250 0ustar tonytonyorg.apache.maven.surefire.testng.TestNGProvider surefire-2.10/surefire-providers/common-junit3/0000755000175000017500000000000011645102474020371 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/pom.xml0000644000175000017500000000303411640163725021707 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire-providers 2.10 ../pom.xml common-junit3 Shared JUnit3 Provider Code junit junit 3.8.1 provided surefire-2.10/surefire-providers/common-junit3/src/0000755000175000017500000000000011645102474021160 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/test/0000755000175000017500000000000011645102474022137 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/test/java/0000755000175000017500000000000011645102474023060 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/test/java/org/0000755000175000017500000000000011645102474023647 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/test/java/org/apache/0000755000175000017500000000000011645102474025070 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/test/java/org/apache/maven/0000755000175000017500000000000011645102474026176 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/test/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030022 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/test/java/org/apache/maven/surefire/common/0000755000175000017500000000000011645102474031312 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/common-junit3/src/test/java/org/apache/maven/surefire/common/junit3/surefire-2.10/surefire-providers/common-junit3/src/test/java/org/apache/maven/surefire/common/junit30000755000175000017500000000000011645102474032447 5ustar tonytony././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootsurefire-2.10/surefire-providers/common-junit3/src/test/java/org/apache/maven/surefire/common/junit3/JUnit3TestCheckerTest.javasurefire-2.10/surefire-providers/common-junit3/src/test/java/org/apache/maven/surefire/common/junit30000644000175000017500000000712411557340256032461 0ustar tonytonypackage org.apache.maven.surefire.common.junit3; /* * 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. */ import org.apache.maven.surefire.testset.TestSetFailedException; import junit.framework.TestCase; import junit.framework.TestResult; /** * @author Kristian Rosenvold */ public class JUnit3TestCheckerTest extends TestCase { private final JUnit3TestChecker jUnit3TestChecker = new JUnit3TestChecker( this.getClass().getClassLoader() ); public void testValidJunit4Annotated() throws TestSetFailedException { assertTrue( jUnit3TestChecker.accept( JUnit3TestCheckerTest.class ) ); } public void testValidJunit4itsAJunit3Test() throws TestSetFailedException { assertTrue( jUnit3TestChecker.accept( AlsoValid.class ) ); } public void testValidJunitSubclassWithoutOwnTestmethods() throws TestSetFailedException { assertTrue( jUnit3TestChecker.accept( SubClassWithoutOwnTestMethods.class ) ); } public void testInvalidTest() throws TestSetFailedException { assertFalse( jUnit3TestChecker.accept( NotValidTest.class ) ); } public void testDontAcceptAbstractClasses() { assertFalse( jUnit3TestChecker.accept( BaseClassWithTest.class ) ); } public void testSuiteOnlyTest() { assertTrue( jUnit3TestChecker.accept( SuiteOnlyTest.class ) ); } public void testCustomSuiteOnlyTest() { assertTrue( jUnit3TestChecker.accept( CustomSuiteOnlyTest.class ) ); } public void testIinnerClassNotAutomaticallyTc(){ assertTrue( jUnit3TestChecker.accept( NestedTC.class)); assertFalse( jUnit3TestChecker.accept( NestedTC.Inner.class)); } public static class AlsoValid extends TestCase { public void testSomething() { } } public static class SuiteOnlyTest { public static junit.framework.Test suite() { return null; } } public static class CustomSuiteOnlyTest { public static MySuite2 suite() { return null; } } public static class MySuite2 implements junit.framework.Test { public int countTestCases() { return 0; } public void run( TestResult testResult ) { } } public static class NotValidTest { /** @noinspection UnusedDeclaration*/ public void testSomething() { } } public abstract static class BaseClassWithTest extends TestCase { /** @noinspection UnusedDeclaration*/ public void testWeAreAlsoATest() { } } public static class SubClassWithoutOwnTestMethods extends BaseClassWithTest { } class NestedTC extends TestCase { public class Inner { } } } surefire-2.10/surefire-providers/common-junit3/src/main/0000755000175000017500000000000011645102474022104 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/main/java/0000755000175000017500000000000011645102474023025 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/main/java/org/0000755000175000017500000000000011645102474023614 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/main/java/org/apache/0000755000175000017500000000000011645102474025035 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/main/java/org/apache/maven/0000755000175000017500000000000011645102474026143 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474027767 5ustar tonytonysurefire-2.10/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/0000755000175000017500000000000011645102474031257 5ustar tonytony././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit3/surefire-2.10/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit30000755000175000017500000000000011645102474032414 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit3/JUnit3TestChecker.javasurefire-2.10/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit30000644000175000017500000000522411512164307032415 0ustar tonytonypackage org.apache.maven.surefire.common.junit3; /* * 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. */ import org.apache.maven.surefire.NonAbstractClassFilter; import org.apache.maven.surefire.util.ReflectionUtils; import org.apache.maven.surefire.util.ScannerFilter; import java.lang.reflect.Method; import java.lang.reflect.Modifier; /** * Missing tests ? This class is basically a subset of the JUnit4TestChecker, which is tested * to boredom and back. Unfortunately we don't have any common module between these providers, * so this stuff is duplicated. We should probably make some modules and just shade the content * into the providers. * * @author Kristian Rosenvold */ public class JUnit3TestChecker implements ScannerFilter { private final Class junitClass; private static final Class[] EMPTY_CLASS_ARRAY = new Class[0]; private final NonAbstractClassFilter nonAbstractClassFilter = new NonAbstractClassFilter(); public JUnit3TestChecker( ClassLoader testClassLoader ) { junitClass = ReflectionUtils.tryLoadClass( testClassLoader, "junit.framework.Test" ); } public boolean accept( Class testClass ) { return nonAbstractClassFilter.accept( testClass ) && isValidJUnit3Test( testClass ); } private boolean isValidJUnit3Test( Class testClass ) { return junitClass != null && ( junitClass.isAssignableFrom( testClass ) || isSuiteOnly( testClass ) ); } public boolean isSuiteOnly( Class testClass ) { final Method suite = ReflectionUtils.tryGetMethod( testClass, "suite", EMPTY_CLASS_ARRAY ); if ( suite != null ) { final int modifiers = suite.getModifiers(); if ( Modifier.isPublic( modifiers ) && Modifier.isStatic( modifiers ) ) { return junit.framework.Test.class.isAssignableFrom( suite.getReturnType() ); } } return false; } } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit3/JUnit3Reflector.javasurefire-2.10/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit30000644000175000017500000001544611557340256032434 0ustar tonytonypackage org.apache.maven.surefire.common.junit3; /* * 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. */ import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import org.apache.maven.surefire.util.NestedRuntimeException; import org.apache.maven.surefire.util.ReflectionUtils; public final class JUnit3Reflector { private static final String TEST_CASE = "junit.framework.Test"; private static final String TEST_RESULT = "junit.framework.TestResult"; private static final String TEST_LISTENER = "junit.framework.TestListener"; private static final String TEST = "junit.framework.Test"; private static final String ADD_LISTENER_METHOD = "addListener"; private static final String RUN_METHOD = "run"; private static final String TEST_SUITE = "junit.framework.TestSuite"; private final Class[] interfacesImplementedByDynamicProxy; private final Class testResultClass; private final Method addListenerMethod; private final Method testInterfaceRunMethod; private static final Class[] EMPTY_CLASS_ARRAY = new Class[0]; private static final Object[] EMPTY_OBJECT_ARRAY = new Object[0]; private final Class testInterface; private final Class testCase; private final Constructor testsSuiteConstructor; public JUnit3Reflector( ClassLoader testClassLoader ) { testResultClass = ReflectionUtils.tryLoadClass( testClassLoader, TEST_RESULT ); testCase = ReflectionUtils.tryLoadClass( testClassLoader, TEST_CASE ); testInterface = ReflectionUtils.tryLoadClass( testClassLoader, TEST ); interfacesImplementedByDynamicProxy = new Class[]{ ReflectionUtils.tryLoadClass( testClassLoader, TEST_LISTENER ) }; Class[] constructorParamTypes = { Class.class }; Class testSuite = ReflectionUtils.tryLoadClass( testClassLoader, TEST_SUITE ); // The interface implemented by the dynamic proxy (TestListener), happens to be // the same as the param types of TestResult.addTestListener Class[] addListenerParamTypes = interfacesImplementedByDynamicProxy; if ( isJUnit3Available() ) { testsSuiteConstructor = ReflectionUtils.getConstructor( testSuite, constructorParamTypes ); addListenerMethod = tryGetMethod( testResultClass, ADD_LISTENER_METHOD, addListenerParamTypes ); testInterfaceRunMethod = getMethod( testInterface, RUN_METHOD, new Class[]{ testResultClass } ); } else { testsSuiteConstructor = null; addListenerMethod = null; testInterfaceRunMethod = null; } } // Switch to reflectionutils when building with 2.7.2 private static Method tryGetMethod( Class clazz, String methodName, Class[] parameters ) { try { return clazz.getMethod( methodName, parameters ); } catch ( NoSuchMethodException e ) { return null; } } private static Method getMethod( Class clazz, String methodName, Class[] parameters ) { try { return clazz.getMethod( methodName, parameters ); } catch ( NoSuchMethodException e ) { throw new NestedRuntimeException( "When finding method " + methodName, e ); } } public Object constructTestObject( Class testClass ) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException, InstantiationException { Object testObject = createInstanceFromSuiteMethod( testClass ); if ( testObject == null && testCase.isAssignableFrom( testClass ) ) { Object[] constructorParams = { testClass }; testObject = testsSuiteConstructor.newInstance( constructorParams ); } if ( testObject == null ) { Constructor testConstructor = getTestConstructor( testClass ); if ( testConstructor.getParameterTypes().length == 0 ) { testObject = testConstructor.newInstance( EMPTY_OBJECT_ARRAY ); } else { testObject = testConstructor.newInstance( new Object[]{ testClass.getName() } ); } } return testObject; } private static Object createInstanceFromSuiteMethod( Class testClass ) throws IllegalAccessException, InvocationTargetException { Object testObject = null; try { Method suiteMethod = testClass.getMethod( "suite", EMPTY_CLASS_ARRAY ); if ( Modifier.isPublic( suiteMethod.getModifiers() ) && Modifier.isStatic( suiteMethod.getModifiers() ) ) { testObject = suiteMethod.invoke( null, EMPTY_CLASS_ARRAY ); } } catch ( NoSuchMethodException e ) { // No suite method } return testObject; } private static Constructor getTestConstructor( Class testClass ) throws NoSuchMethodException { Constructor constructor; try { constructor = testClass.getConstructor( new Class[]{ String.class } ); } catch ( NoSuchMethodException e ) { constructor = testClass.getConstructor( EMPTY_CLASS_ARRAY ); } return constructor; } public Class[] getInterfacesImplementedByDynamicProxy() { return interfacesImplementedByDynamicProxy; } public Class getTestResultClass() { return testResultClass; } public Method getAddListenerMethod() { return addListenerMethod; } public Method getTestInterfaceRunMethod() { return testInterfaceRunMethod; } public Class getTestInterface() { return testInterface; } public Method getRunMethod( Class testClass ) { return getMethod( testClass, RUN_METHOD, new Class[]{ getTestResultClass() } ); } public boolean isJUnit3Available() { return testResultClass != null; } } surefire-2.10/surefire-providers/surefire-junit/0000755000175000017500000000000011645102474020642 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/0000755000175000017500000000000011645102474021431 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/test/0000755000175000017500000000000011645102474022410 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/test/java/0000755000175000017500000000000011645102474023331 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/test/java/org/0000755000175000017500000000000011645102474024120 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/test/java/org/apache/0000755000175000017500000000000011645102474025341 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/test/java/org/apache/maven/0000755000175000017500000000000011645102474026447 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/test/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030273 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/main/0000755000175000017500000000000011645102474022355 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/main/java/0000755000175000017500000000000011645102474023276 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/main/java/org/0000755000175000017500000000000011645102474024065 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/main/java/org/apache/0000755000175000017500000000000011645102474025306 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/main/java/org/apache/maven/0000755000175000017500000000000011645102474026414 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030240 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/0000755000175000017500000000000011645102474031371 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/main/resources/0000755000175000017500000000000011645102474024367 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/main/resources/META-INF/0000755000175000017500000000000011645102474025527 5ustar tonytonysurefire-2.10/surefire-providers/surefire-junit/src/main/resources/META-INF/services/0000755000175000017500000000000011645102474027352 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng-utils/0000755000175000017500000000000011645102474022153 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng-utils/pom.xml0000644000175000017500000000511711640163725023475 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire-providers 2.10 ../pom.xml surefire-testng-utils SureFire TestNG Utils junit junit 3.8.2 provided org.codehaus.plexus plexus-utils org.apache.maven.plugins maven-shade-plugin package shade true org.codehaus.plexus:plexus-utils org.codehaus.plexus.util org.apache.maven.surefire.shade.org.codehaus.plexus.util jdk14 1.4 org.testng testng 5.7 jdk14 jdk15 !1.4 org.testng testng 5.7 jdk15 surefire-2.10/surefire-providers/surefire-testng-utils/src/0000755000175000017500000000000011645102474022742 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng-utils/src/main/0000755000175000017500000000000011645102474023666 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng-utils/src/main/java/0000755000175000017500000000000011645102474024607 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng-utils/src/main/java/org/0000755000175000017500000000000011645102474025376 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng-utils/src/main/java/org/apache/0000755000175000017500000000000011645102474026617 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/0000755000175000017500000000000011645102474027725 5ustar tonytonysurefire-2.10/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474031551 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/surefire-2.10/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testn0000755000175000017500000000000011645102474032627 5ustar tonytony././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/surefire-2.10/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testn0000755000175000017500000000000011645102474032627 5ustar tonytony././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootsurefire-2.10/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/MethodSelector.javasurefire-2.10/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testn0000644000175000017500000000435211546573101032634 0ustar tonytonypackage org.apache.maven.surefire.testng.utils; /* * 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. */ import org.codehaus.plexus.util.SelectorUtils; import org.testng.IMethodSelector; import org.testng.IMethodSelectorContext; import org.testng.ITestNGMethod; import java.util.List; /** * For internal use only * * @author Olivier Lamy * @noinspection UnusedDeclaration * @since 2.7.3 */ public class MethodSelector implements IMethodSelector { private static String METHOD_NAME = null; public void setTestMethods( List arg0 ) { // noop } public boolean includeMethod( IMethodSelectorContext context, ITestNGMethod testngMethod, boolean isTestMethod ) { if ( testngMethod.isBeforeClassConfiguration() || testngMethod.isBeforeGroupsConfiguration() || testngMethod.isBeforeMethodConfiguration() || testngMethod.isBeforeSuiteConfiguration() || testngMethod.isBeforeTestConfiguration() ) { return true; } if ( testngMethod.isAfterClassConfiguration() || testngMethod.isAfterGroupsConfiguration() || testngMethod.isAfterMethodConfiguration() || testngMethod.isAfterSuiteConfiguration() || testngMethod.isAfterTestConfiguration() ) { return true; } return SelectorUtils.match( METHOD_NAME, testngMethod.getMethodName() ); } public static void setMethodName( String methodName ) { METHOD_NAME = methodName; } } surefire-2.10/surefire-setup-integration-tests/0000755000175000017500000000000011645102474020473 5ustar tonytonysurefire-2.10/surefire-setup-integration-tests/pom.xml0000644000175000017500000001646411640163725022024 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire 2.10 ../pom.xml org.apache.maven.surefire surefire-setup-integration-tests Maven Surefire Integration Test Setup UTF-8 false 5.7 2 2.8 maven-surefire-report-plugin org.apache.maven.plugins ${project.version} maven-plugin maven-surefire-plugin org.apache.maven.plugins ${project.version} maven-plugin org.apache.maven.surefire surefire-testng ${project.version} org.testng testng org.apache.maven.surefire surefire-junit3 ${project.version} org.apache.maven.surefire surefire-junit4 ${project.version} org.apache.maven.surefire surefire-junit47 ${project.version} org.apache.maven.shared maven-verifier 1.2 org.apache.maven maven-settings 2.0.6 test org.codehaus.plexus plexus-utils test net.sourceforge.htmlunit htmlunit 2.8 test commons-io commons-io 2.0.1 maven-help-plugin 2.1 settings.xml generate-test-resources effective-settings ${project.build.directory}/private/settings.xml ${it.settings.showPasswords} maven-compiler-plugin 1.5 1.5 maven-invoker-plugin 1.5 ${project.build.directory}/it-repo install maven-surefire-plugin SetUpForIntegrationTest surefire.version ${project.version} testng.version ${testng.version} maven.home ${maven.home} maven.settings.file ${project.build.directory}/private/settings.xml maven.staged.local.repo ${project.build.directory}/it-repo org.apache.maven.surefire surefire-shadefire ${project.version} maven-enforcer-plugin require-maven-2.1.0 enforce [2.1.0,) maven-deploy-plugin true surefire-2.10/surefire-setup-integration-tests/src/0000755000175000017500000000000011645102474021262 5ustar tonytonysurefire-2.10/surefire-setup-integration-tests/src/test/0000755000175000017500000000000011645102474022241 5ustar tonytonysurefire-2.10/surefire-setup-integration-tests/src/test/java/0000755000175000017500000000000011645102474023162 5ustar tonytonysurefire-2.10/surefire-setup-integration-tests/src/test/java/org/0000755000175000017500000000000011645102474023751 5ustar tonytonysurefire-2.10/surefire-setup-integration-tests/src/test/java/org/apache/0000755000175000017500000000000011645102474025172 5ustar tonytonysurefire-2.10/surefire-setup-integration-tests/src/test/java/org/apache/maven/0000755000175000017500000000000011645102474026300 5ustar tonytonysurefire-2.10/surefire-setup-integration-tests/src/test/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474030124 5ustar tonytonysurefire-2.10/surefire-setup-integration-tests/src/test/java/org/apache/maven/surefire/its/0000755000175000017500000000000011645102474030723 5ustar tonytony././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootsurefire-2.10/surefire-setup-integration-tests/src/test/java/org/apache/maven/surefire/its/SetUpForIntegrationTest.javasurefire-2.10/surefire-setup-integration-tests/src/test/java/org/apache/maven/surefire/its/SetUpForI0000644000175000017500000000311711540712701032462 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import junit.framework.TestCase; import java.io.File; import java.io.IOException; /** * Created by IntelliJ IDEA. * * @author Stephen Connolly * @since 05-Jan-2010 08:17:17 */ public class SetUpForIntegrationTest extends TestCase { public void testSmokes() throws IOException { // if the properties are missing we'll fail the test with an NPE and stop the build. File originalSettings = new File( System.getProperty( "maven.settings.file" ) ); File newRepo = new File( System.getProperty( "maven.staged.local.repo" ) ); File newSettings = new File( originalSettings.getParentFile(), "it-" + originalSettings.getName() ); StagedLocalRepoHelper.createStagedSettingsXml( originalSettings, newRepo, newSettings ); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/surefire-setup-integration-tests/src/test/java/org/apache/maven/surefire/its/StagedLocalRepoHelper.javasurefire-2.10/surefire-setup-integration-tests/src/test/java/org/apache/maven/surefire/its/StagedLoc0000644000175000017500000001262711540712701032515 0ustar tonytonypackage org.apache.maven.surefire.its; /* * 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. */ import org.apache.maven.settings.Profile; import org.apache.maven.settings.Repository; import org.apache.maven.settings.RepositoryPolicy; import org.apache.maven.settings.Settings; import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader; import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer; import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.WriterFactory; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.Random; /** * Helper class to assist in using verifier with a staged local repository. * * @author Stephen Connolly * @since 05-Jan-2010 07:36:22 */ public final class StagedLocalRepoHelper { private StagedLocalRepoHelper() { throw new IllegalAccessError( "Helper class" ); } private static String toUrl( String filename ) { /* * NOTE: Maven fails to properly handle percent-encoded "file:" URLs (WAGON-111) so don't use File.toURI() here * as-is but use the decoded path component in the URL. */ String url = "file://" + new File( filename ).toURI().getPath(); if ( url.endsWith( "/" ) ) { url = url.substring( 0, url.length() - 1 ); } return url; } public static void createStagedSettingsXml( File originalSettingsXml, File stagedLocalRepo, File stagedSettingsXml ) throws IOException { Random entropy = new Random(); try { Settings settings = new SettingsXpp3Reader().read( ReaderFactory.newXmlReader( originalSettingsXml ) ); String localRepo = System.getProperty( "maven.repo.local" ); if ( localRepo == null ) { localRepo = settings.getLocalRepository(); } if ( localRepo == null ) { localRepo = System.getProperty( "user.home" ) + "/.m2/repository"; } File repoDir = new File( localRepo ); if ( !repoDir.exists() ) { repoDir.mkdirs(); } // normalize path localRepo = repoDir.getAbsolutePath(); Profile profile = new Profile(); do { profile.setId( "stagedLocalRepo" + entropy.nextLong() ); } while ( settings.getProfilesAsMap().containsKey( profile.getId() ) ); Repository repository = new Repository(); repository.setId( profile.getId() + entropy.nextLong() ); RepositoryPolicy policy = new RepositoryPolicy(); policy.setEnabled( true ); policy.setChecksumPolicy( "ignore" ); policy.setUpdatePolicy( "never" ); repository.setReleases( policy ); repository.setSnapshots( policy ); repository.setLayout( "default" ); repository.setName( "Original Local Repository" ); repository.setUrl( toUrl( localRepo ) ); profile.addPluginRepository( repository ); profile.addRepository( repository ); settings.addProfile( profile ); settings.addActiveProfile( profile.getId() ); settings.setLocalRepository( stagedLocalRepo.getAbsolutePath() ); for ( Iterator it = settings.getProfiles().iterator(); it.hasNext(); ) { profile = it.next(); disableUpdates( profile.getRepositories() ); disableUpdates( profile.getPluginRepositories() ); } new SettingsXpp3Writer().write( WriterFactory.newXmlWriter( stagedSettingsXml ), settings ); } catch ( XmlPullParserException e ) { IOException ioe = new IOException( e.getMessage() ); ioe.initCause( e ); throw ioe; } } private static void disableUpdates( List repositories ) { if ( repositories != null ) { for ( Iterator it = repositories.iterator(); it.hasNext(); ) { Repository repo = it.next(); repo.setReleases( disableUpdates( repo.getReleases() ) ); repo.setSnapshots( disableUpdates( repo.getSnapshots() ) ); } } } private static RepositoryPolicy disableUpdates( RepositoryPolicy policy ) { if ( policy == null ) { policy = new RepositoryPolicy(); } policy.setUpdatePolicy( "never" ); return policy; } } surefire-2.10/maven-surefire-common/0000755000175000017500000000000011645102475016247 5ustar tonytonysurefire-2.10/maven-surefire-common/pom.xml0000644000175000017500000000765111640163725017575 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire 2.10 ../pom.xml org.apache.maven.surefire maven-surefire-common Maven Surefire Common 2.0.9 org.apache.maven maven-plugin-api org.apache.maven.surefire surefire-booter org.codehaus.plexus plexus-utils org.apache.maven maven-artifact org.apache.maven maven-project org.apache.maven maven-core org.apache.maven maven-toolchain jmock jmock org.apache.maven.shared maven-common-artifact-filters 1.3 org.apache.maven.shared maven-plugin-testing-harness maven-compiler-plugin 1.4 1.4 maven-surefire-plugin org.apache.maven.surefire surefire-shadefire ${project.version} jdk1.3 maven-compiler-plugin false 1.4 surefire-2.10/maven-surefire-common/src/0000755000175000017500000000000011645102475017036 5ustar tonytonysurefire-2.10/maven-surefire-common/src/test/0000755000175000017500000000000011645102475020015 5ustar tonytonysurefire-2.10/maven-surefire-common/src/test/java/0000755000175000017500000000000011645102475020736 5ustar tonytonysurefire-2.10/maven-surefire-common/src/test/java/org/0000755000175000017500000000000011645102475021525 5ustar tonytonysurefire-2.10/maven-surefire-common/src/test/java/org/apache/0000755000175000017500000000000011645102475022746 5ustar tonytonysurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/0000755000175000017500000000000011645102475024054 5ustar tonytonysurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/0000755000175000017500000000000011645102475025352 5ustar tonytonysurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/0000755000175000017500000000000011645102475027176 5ustar tonytonysurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SummaryTest.java0000644000175000017500000000752211560327401032336 0ustar tonytonypackage org.apache.maven.plugin.surefire; /* * 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. */ import org.apache.maven.plugin.surefire.booterclient.ForkConfiguration; import org.apache.maven.surefire.suite.RunResult; import junit.framework.TestCase; public class SummaryTest extends TestCase { Summary summary = new Summary(); public void testEmptySummaryShouldBeErrorFree() { assertTrue( summary.isErrorFree() ); } public void testSummaryShouldBeErrorFreeAfterAddingAnException() { summary.registerException( new RuntimeException() ); assertFalse( summary.isErrorFree() ); } public void testEmptySummaryShouldHaveNoFailureOrTimeOut() { assertFalse( summary.isFailureOrTimeout() ); } public void testSummaryReturnsFailureOrTimeOutStateOfLastRun() { RunResult resultWithoutFailure = new RunResult( 0, 0, 0, 0, false, false ); RunResult resultWithFailure = new RunResult( 0, 0, 0, 0, true, true ); summary.registerRunResult( resultWithoutFailure ); summary.registerRunResult( resultWithFailure ); assertTrue( summary.isFailureOrTimeout() ); } public void testEmptySummaryHasNoFirstException() { assertNull( summary.getFirstException() ); } public void testSummaryReturnsTheFirstOfTwoExceptions() { Exception exceptionOne = new RuntimeException(); Exception exceptionTwo = new RuntimeException(); summary.registerException( exceptionOne ); summary.registerException( exceptionTwo ); assertEquals( "Wrong exception.", exceptionOne, summary.getFirstException() ); } public void testEmptySummaryHasNoResultOfLastSuccessfulRun() { assertNull( summary.getResultOfLastSuccessfulRun() ); } public void testSummaryReturnsTheSecondOfTwoResult() { RunResult resultOne = new RunResult( 0, 0, 0, 0 ); RunResult resultTwo = new RunResult( 0, 0, 0, 0 ); summary.registerRunResult( resultOne ); summary.registerRunResult( resultTwo ); assertEquals( "Wrong exception.", resultTwo, summary.getResultOfLastSuccessfulRun() ); } public void testEmptySummaryIsNotForking() { assertFalse( summary.isForking() ); } public void testSummaryIsForkingIfTheLastConfigurationIsForking() { summary.reportForkConfiguration( createNonForkingConfiguration() ); summary.reportForkConfiguration( createForkingConfiguration() ); assertTrue( summary.isForking() ); } public void testSummaryIsNotForkingIfTheLastConfigurationIsNotForking() { summary.reportForkConfiguration( createForkingConfiguration() ); summary.reportForkConfiguration( createNonForkingConfiguration() ); assertFalse( summary.isForking() ); } private ForkConfiguration createForkingConfiguration() { return new ForkConfiguration( null, ForkConfiguration.FORK_ALWAYS, null ); } private ForkConfiguration createNonForkingConfiguration() { return new ForkConfiguration( null, ForkConfiguration.FORK_NEVER, null ); } } surefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booter/0000755000175000017500000000000011645102475030470 5ustar tonytonysurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/0000755000175000017500000000000011645102475031667 5ustar tonytony././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootsurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerProviderConfigurationTest.javasurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/Boot0000644000175000017500000002173711625457076032537 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient; /* * 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. */ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Properties; import org.apache.maven.surefire.booter.BooterDeserializer; import org.apache.maven.surefire.booter.ClassLoaderConfiguration; import org.apache.maven.surefire.booter.ClasspathConfiguration; import org.apache.maven.surefire.booter.ProviderConfiguration; import org.apache.maven.surefire.booter.StartupConfiguration; import org.apache.maven.surefire.booter.SystemPropertyManager; import org.apache.maven.surefire.booter.TypeEncodedValue; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.testset.DirectoryScannerParameters; import org.apache.maven.surefire.testset.TestArtifactInfo; import org.apache.maven.surefire.testset.TestRequest; import org.apache.maven.surefire.util.RunOrder; import junit.framework.Assert; import junit.framework.TestCase; /** * Performs roundtrip testing of serialization/deserialization of the ProviderConfiguration * * @author Kristian Rosenvold */ public class BooterDeserializerProviderConfigurationTest extends TestCase { public static final TypeEncodedValue aTestTyped = new TypeEncodedValue( String.class.getName(), "aTest" ); private final String aUserRequestedTest = "aUserRequestedTest"; private static ClassLoaderConfiguration getForkConfiguration() { return new ClassLoaderConfiguration( true, false ); } // ProviderConfiguration methods public void testDirectoryScannerParams() throws IOException { File aDir = new File( "." ); List includes = new ArrayList(); List excludes = new ArrayList(); includes.add( "abc" ); includes.add( "cde" ); excludes.add( "xx1" ); excludes.add( "xx2" ); ClassLoaderConfiguration forkConfiguration = getForkConfiguration(); final StartupConfiguration testStartupConfiguration = getTestStartupConfiguration( forkConfiguration ); ProviderConfiguration providerConfiguration = getReloadedProviderConfiguration(); ProviderConfiguration read = saveAndReload( providerConfiguration, testStartupConfiguration ); Assert.assertEquals( aDir, read.getBaseDir() ); Assert.assertEquals( includes.get( 0 ), read.getIncludes().get( 0 ) ); Assert.assertEquals( includes.get( 1 ), read.getIncludes().get( 1 ) ); Assert.assertEquals( excludes.get( 0 ), read.getExcludes().get( 0 ) ); Assert.assertEquals( excludes.get( 1 ), read.getExcludes().get( 1 ) ); } public void testReporterConfiguration() throws IOException { DirectoryScannerParameters directoryScannerParameters = getDirectoryScannerParameters(); ClassLoaderConfiguration forkConfiguration = getForkConfiguration(); ProviderConfiguration providerConfiguration = getTestProviderConfiguration( directoryScannerParameters ); final StartupConfiguration testProviderConfiguration = getTestStartupConfiguration( forkConfiguration ); ProviderConfiguration reloaded = saveAndReload( providerConfiguration, testProviderConfiguration ); assertTrue( reloaded.getReporterConfiguration().isTrimStackTrace().booleanValue() ); assertNotNull( reloaded.getReporterConfiguration().getReportsDirectory() ); } public void testTestArtifact() throws IOException { ProviderConfiguration reloaded = getReloadedProviderConfiguration(); Assert.assertEquals( "5.0", reloaded.getTestArtifact().getVersion() ); Assert.assertEquals( "ABC", reloaded.getTestArtifact().getClassifier() ); } public void testTestRequest() throws IOException { ProviderConfiguration reloaded = getReloadedProviderConfiguration(); TestRequest testSuiteDefinition = reloaded.getTestSuiteDefinition(); List suiteXmlFiles = testSuiteDefinition.getSuiteXmlFiles(); File[] expected = getSuiteXmlFiles(); Assert.assertEquals( expected[0], suiteXmlFiles.get( 0 ) ); Assert.assertEquals( expected[1], suiteXmlFiles.get( 1 ) ); Assert.assertEquals( getTestSourceDirectory(), testSuiteDefinition.getTestSourceDirectory() ); Assert.assertEquals( aUserRequestedTest, testSuiteDefinition.getRequestedTest() ); } public void testTestForFork() throws IOException { final ProviderConfiguration reloaded = getReloadedProviderConfiguration(); Assert.assertEquals( aTestTyped, reloaded.getTestForFork() ); } public void testFailIfNoTests() throws IOException { ProviderConfiguration reloaded = getReloadedProviderConfiguration(); assertTrue( reloaded.isFailIfNoTests().booleanValue() ); } private ProviderConfiguration getReloadedProviderConfiguration() throws IOException { DirectoryScannerParameters directoryScannerParameters = getDirectoryScannerParameters(); ClassLoaderConfiguration forkConfiguration = getForkConfiguration(); ProviderConfiguration booterConfiguration = getTestProviderConfiguration( directoryScannerParameters ); final StartupConfiguration testProviderConfiguration = getTestStartupConfiguration( forkConfiguration ); return saveAndReload( booterConfiguration, testProviderConfiguration ); } private DirectoryScannerParameters getDirectoryScannerParameters() { File aDir = new File( "." ); List includes = new ArrayList(); List excludes = new ArrayList(); includes.add( "abc" ); includes.add( "cde" ); excludes.add( "xx1" ); excludes.add( "xx2" ); return new DirectoryScannerParameters( aDir, includes, excludes, Boolean.TRUE, RunOrder.FILESYSTEM ); } private ProviderConfiguration saveAndReload( ProviderConfiguration booterConfiguration, StartupConfiguration testProviderConfiguration ) throws IOException { final ForkConfiguration forkConfiguration = ForkConfigurationTest.getForkConfiguration(); Properties props = new Properties(); BooterSerializer booterSerializer = new BooterSerializer( forkConfiguration, props ); String aTest = "aTest"; booterSerializer.serialize( booterConfiguration, testProviderConfiguration, aTest, "never" ); final File propsTest = SystemPropertyManager.writePropertiesFile( props, forkConfiguration.getTempDirectory(), "propsTest", true ); BooterDeserializer booterDeserializer = new BooterDeserializer( new FileInputStream( propsTest ) ); return booterDeserializer.deserialize(); } private ProviderConfiguration getTestProviderConfiguration( DirectoryScannerParameters directoryScannerParameters ) { File cwd = new File( "." ); ReporterConfiguration reporterConfiguration = new ReporterConfiguration( cwd, Boolean.TRUE ); String aUserRequestedTestMethod = "aUserRequestedTestMethod"; TestRequest testSuiteDefinition = new TestRequest( getSuiteXmlFileStrings(), getTestSourceDirectory(), aUserRequestedTest, aUserRequestedTestMethod ); return new ProviderConfiguration( directoryScannerParameters, true, reporterConfiguration, new TestArtifactInfo( "5.0", "ABC" ), testSuiteDefinition, new Properties(), aTestTyped ); } private StartupConfiguration getTestStartupConfiguration( ClassLoaderConfiguration classLoaderConfiguration ) { ClasspathConfiguration classpathConfiguration = new ClasspathConfiguration( true, true ); return new StartupConfiguration( "com.provider", classpathConfiguration, classLoaderConfiguration, "never", false ); } private File getTestSourceDirectory() { return new File( "TestSrc" ); } private File[] getSuiteXmlFiles() { return new File[]{ new File( "A1" ), new File( "A2" ) }; } private List getSuiteXmlFileStrings() { return Arrays.asList( new Object[]{ "A1", "A2" } ); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkConfigurationTest.javasurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/Fork0000644000175000017500000000572211532463230032513 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient; /* * 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. */ import junit.framework.TestCase; import org.apache.maven.surefire.booter.Classpath; import org.apache.maven.surefire.booter.SurefireBooterForkException; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.cli.Commandline; import java.io.File; import java.io.IOException; import java.util.Collections; public class ForkConfigurationTest extends TestCase { public void testCreateCommandLine_UseSystemClassLoaderForkOnce_ShouldConstructManifestOnlyJar() throws IOException, SurefireBooterForkException { ForkConfiguration config = getForkConfiguration(); File cpElement = getTempClasspathFile(); config.setJvmExecutable( "java" ); Commandline cli = config.createCommandLine( Collections.singletonList( cpElement.getAbsolutePath() ), true, false ); String line = StringUtils.join( cli.getCommandline(), " " ); assertTrue( line.indexOf( "-jar" ) > -1 ); } public void testArglineWithNewline() throws IOException, SurefireBooterForkException { // SUREFIRE-657 File cpElement = getTempClasspathFile(); ForkConfiguration forkConfiguration = getForkConfiguration(); forkConfiguration.setArgLine( "abc\ndef" ); final Commandline commandLine = forkConfiguration.createCommandLine( Collections.singletonList( cpElement.getAbsolutePath() ), false, false ); assertTrue( commandLine.toString().contains( "abc def" ) ); } private File getTempClasspathFile() throws IOException { File cpElement = File.createTempFile( "ForkConfigurationTest.", ".file" ); cpElement.deleteOnExit(); return cpElement; } public static ForkConfiguration getForkConfiguration() throws IOException { ForkConfiguration forkConfiguration = new ForkConfiguration( new Classpath(), ForkConfiguration.FORK_ONCE, null ); forkConfiguration.setWorkingDirectory( new File( "." ).getCanonicalFile() ); return forkConfiguration; } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/surefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/outp0000755000175000017500000000000011645102475032577 5ustar tonytony././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.javasurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/Fork0000644000175000017500000003564711566536470032542 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient; /* * 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. */ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintStream; import java.util.List; import java.util.Properties; import java.util.StringTokenizer; import org.apache.maven.plugin.surefire.booterclient.output.ForkClient; import org.apache.maven.surefire.booter.ForkingRunListener; import org.apache.maven.surefire.report.CategorizedReportEntry; import org.apache.maven.surefire.report.ConsoleOutputReceiver; import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.report.PojoStackTraceWriter; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.SimpleReportEntry; import org.apache.maven.surefire.report.StackTraceWriter; import junit.framework.Assert; import junit.framework.TestCase; /** * @author Kristian Rosenvold */ public class ForkingRunListenerTest extends TestCase { private final ByteArrayOutputStream content; private final PrintStream printStream; final Integer defaultChannel = new Integer( 17 ); final Integer anotherChannel = new Integer( 18 ); public ForkingRunListenerTest() { this.content = new ByteArrayOutputStream(); printStream = new PrintStream( content ); } private void reset() { printStream.flush(); content.reset(); } public void testHeaderCreation() { final byte[] header = ForkingRunListener.createHeader( (byte) 'F', 0xCAFE ); String asString = new String( header ); assertEquals( "F,cafe,", asString ); } public void testHeaderCreationShort() { final byte[] header = ForkingRunListener.createHeader( (byte) 'F', 0xE ); String asString = new String( header ); assertEquals( "F,000e,", asString ); } public void testSetStarting() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); ReportEntry expected = createDefaultReportEntry(); standardTestRun.run().testSetStarting( expected ); standardTestRun.assertExpected( MockReporter.SET_STARTING, expected ); } public void testSetCompleted() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); ReportEntry expected = createDefaultReportEntry(); standardTestRun.run().testSetCompleted( expected ); standardTestRun.assertExpected( MockReporter.SET_COMPLETED, expected ); } public void testStarting() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); ReportEntry expected = createDefaultReportEntry(); standardTestRun.run().testStarting( expected ); standardTestRun.assertExpected( MockReporter.TEST_STARTING, expected ); } public void testStringTokenizer(){ String test ="5,11,com.abc.TestClass,testMethod,null,22,,,"; StringTokenizer tok = new StringTokenizer( test, "," ); assertEquals( "5", tok.nextToken()); assertEquals( "11", tok.nextToken()); assertEquals( "com.abc.TestClass", tok.nextToken()); assertEquals( "testMethod", tok.nextToken()); assertEquals( "null", tok.nextToken()); assertEquals( "22", tok.nextToken()); assertFalse( tok.hasMoreTokens() ); } public void testSucceded() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); ReportEntry expected = createDefaultReportEntry(); standardTestRun.run().testSucceeded( expected ); standardTestRun.assertExpected( MockReporter.TEST_SUCCEEDED, expected ); } public void testFailed() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); ReportEntry expected = createReportEntryWithStackTrace(); standardTestRun.run().testFailed( expected ); standardTestRun.assertExpected( MockReporter.TEST_FAILED, expected ); } public void testFailedWithCommaInMessage() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); ReportEntry expected = createReportEntryWithSpecialMessage( "We, the people" ); standardTestRun.run().testFailed( expected ); standardTestRun.assertExpected( MockReporter.TEST_FAILED, expected ); } public void testFailedWithUnicodeEscapeInMessage() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); ReportEntry expected = createReportEntryWithSpecialMessage( "We, \\u0177 people" ); standardTestRun.run().testFailed( expected ); standardTestRun.assertExpected( MockReporter.TEST_FAILED, expected ); } public void testFailure() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); ReportEntry expected = createDefaultReportEntry(); standardTestRun.run().testError( expected ); standardTestRun.assertExpected( MockReporter.TEST_ERROR, expected ); } public void testSkipped() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); ReportEntry expected = createDefaultReportEntry(); standardTestRun.run().testSkipped( expected ); standardTestRun.assertExpected( MockReporter.TEST_SKIPPED, expected ); } public void testAssumptionFailure() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); ReportEntry expected = createDefaultReportEntry(); standardTestRun.run().testAssumptionFailure( expected ); standardTestRun.assertExpected( MockReporter.TEST_ASSUMPTION_FAIL, expected ); } public void testConsole() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); ConsoleLogger directConsoleReporter = (ConsoleLogger) standardTestRun.run(); directConsoleReporter.info( "HeyYou" ); standardTestRun.assertExpected( MockReporter.CONSOLE_OUTPUT, "HeyYou" ); } public void testConsoleOutput() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); ConsoleOutputReceiver directConsoleReporter = (ConsoleOutputReceiver) standardTestRun.run(); directConsoleReporter.writeTestOutput( "HeyYou".getBytes(), 0, 6, true ); standardTestRun.assertExpected( MockReporter.STDOUT, "HeyYou" ); } public void testSystemProperties() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); standardTestRun.run(); reset(); RunListener forkingReporter = createForkingRunListener( defaultChannel ); TestSetMockReporterFactory providerReporterFactory = new TestSetMockReporterFactory(); final Properties testVmSystemProperties = new Properties(); ForkClient forkStreamClient = new ForkClient( providerReporterFactory, testVmSystemProperties ); forkStreamClient.consumeMultiLineContent( content.toString( "utf-8" ) ); assertTrue ( testVmSystemProperties.size() > 1 ); } public void testMultipleEntries() throws ReporterException, IOException { final StandardTestRun standardTestRun = new StandardTestRun(); standardTestRun.run(); reset(); RunListener forkingReporter = createForkingRunListener( defaultChannel ); ReportEntry reportEntry = createDefaultReportEntry(); forkingReporter.testSetStarting( reportEntry ); forkingReporter.testStarting( reportEntry ); forkingReporter.testSucceeded( reportEntry ); forkingReporter.testSetCompleted( reportEntry ); TestSetMockReporterFactory providerReporterFactory = new TestSetMockReporterFactory(); ForkClient forkStreamClient = new ForkClient( providerReporterFactory, new Properties() ); forkStreamClient.consumeMultiLineContent( content.toString( "utf-8" ) ); final MockReporter reporter = (MockReporter) forkStreamClient.getReporter( defaultChannel ); final List events = reporter.getEvents(); assertEquals( MockReporter.SET_STARTING, events.get( 0 ) ); assertEquals( MockReporter.TEST_STARTING, events.get( 1 ) ); assertEquals( MockReporter.TEST_SUCCEEDED, events.get( 2 ) ); assertEquals( MockReporter.SET_COMPLETED, events.get( 3 ) ); } public void test2DifferentChannels() throws ReporterException, IOException { reset(); ReportEntry expected = createDefaultReportEntry(); final SimpleReportEntry secondExpected = createAnotherDefaultReportEntry(); new ForkingRunListener( printStream, defaultChannel.intValue() ).testStarting( expected ); new ForkingRunListener( printStream, anotherChannel.intValue() ).testSkipped( secondExpected ); TestSetMockReporterFactory providerReporterFactory = new TestSetMockReporterFactory(); final ForkClient forkStreamClient = new ForkClient( providerReporterFactory, new Properties() ); forkStreamClient.consumeMultiLineContent( content.toString( "utf-8" ) ); MockReporter reporter = (MockReporter) forkStreamClient.getReporter( defaultChannel ); Assert.assertEquals( MockReporter.TEST_STARTING, reporter.getFirstEvent() ); Assert.assertEquals( expected, reporter.getFirstData() ); Assert.assertEquals( 1, reporter.getEvents().size() ); MockReporter reporter2 = (MockReporter) forkStreamClient.getReporter( anotherChannel ); Assert.assertEquals( MockReporter.TEST_SKIPPED, reporter2.getFirstEvent() ); Assert.assertEquals( secondExpected, reporter2.getFirstData() ); Assert.assertEquals( 1, reporter2.getEvents().size() ); } // Todo: Test weird characters private SimpleReportEntry createDefaultReportEntry() { return new SimpleReportEntry( "com.abc.TestClass", "testMethod", new Integer( 22 ) ); } private SimpleReportEntry createAnotherDefaultReportEntry() { return new SimpleReportEntry( "com.abc.AnotherTestClass", "testAnotherMethod", new Integer( 42 ) ); } private SimpleReportEntry createReportEntryWithStackTrace() { try { throw new RuntimeException(); } catch ( RuntimeException e ) { StackTraceWriter stackTraceWriter = new PojoStackTraceWriter( "org.apache.tests.TestClass", "testMethod11", e ); return new CategorizedReportEntry( "com.abc.TestClass", "testMethod", "aGroup", stackTraceWriter, new Integer( 77 ) ); } } private SimpleReportEntry createReportEntryWithSpecialMessage( String message ) { try { throw new RuntimeException( message ); } catch ( RuntimeException e ) { StackTraceWriter stackTraceWriter = new PojoStackTraceWriter( "org.apache.tests.TestClass", "testMethod11", e ); return new CategorizedReportEntry( "com.abc.TestClass", "testMethod", "aGroup", stackTraceWriter, new Integer( 77 ) ); } } private RunListener createForkingRunListener( Integer testSetCHannel ) { return new ForkingRunListener( printStream, testSetCHannel.intValue() ); } private class StandardTestRun { private MockReporter reporter; public RunListener run() throws ReporterException { reset(); return createForkingRunListener( defaultChannel ); } public void clientReceiveContent() throws ReporterException, IOException { TestSetMockReporterFactory providerReporterFactory = new TestSetMockReporterFactory(); final ForkClient forkStreamClient = new ForkClient( providerReporterFactory, new Properties() ); forkStreamClient.consumeMultiLineContent( content.toString( "utf-8" ) ); reporter = (MockReporter) forkStreamClient.getReporter( defaultChannel ); } public String getFirstEvent() { return (String) reporter.getEvents().get( 0 ); } public ReportEntry getFirstData() { return (ReportEntry) reporter.getData().get( 0 ); } private void assertExpected( String actionCode, ReportEntry expected ) throws IOException, ReporterException { clientReceiveContent(); assertEquals( actionCode, getFirstEvent() ); final ReportEntry firstData = getFirstData(); assertEquals( expected.getSourceName(), firstData.getSourceName() ); assertEquals( expected.getName(), firstData.getName() ); assertEquals( expected.getElapsed(), firstData.getElapsed() ); assertEquals( expected.getGroup(), firstData.getGroup() ); if ( expected.getStackTraceWriter() != null ) { //noinspection ThrowableResultOfMethodCallIgnored assertEquals( expected.getStackTraceWriter().getThrowable().getLocalizedMessage(), firstData.getStackTraceWriter().getThrowable().getLocalizedMessage() ); assertEquals( expected.getStackTraceWriter().writeTraceToString(), firstData.getStackTraceWriter().writeTraceToString() ); } } private void assertExpected( String actionCode, String expected ) throws IOException, ReporterException { clientReceiveContent(); assertEquals( actionCode, getFirstEvent() ); final String firstData = (String) reporter.getData().get( 0 ); assertEquals( expected, firstData ); } } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootsurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerStartupConfigurationTest.javasurefire-2.10/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/Boot0000644000175000017500000001645211625457076032535 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient; /* * 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. */ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Properties; import org.apache.maven.surefire.booter.BooterDeserializer; import org.apache.maven.surefire.booter.ClassLoaderConfiguration; import org.apache.maven.surefire.booter.Classpath; import org.apache.maven.surefire.booter.ClasspathConfiguration; import org.apache.maven.surefire.booter.PropertiesWrapper; import org.apache.maven.surefire.booter.ProviderConfiguration; import org.apache.maven.surefire.booter.StartupConfiguration; import org.apache.maven.surefire.booter.SystemPropertyManager; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.testset.DirectoryScannerParameters; import org.apache.maven.surefire.testset.TestArtifactInfo; import org.apache.maven.surefire.testset.TestRequest; import junit.framework.TestCase; /** * Performs roundtrip testing of serialization/deserialization of The StartupConfiguration * * @author Kristian Rosenvold */ public class BooterDeserializerStartupConfigurationTest extends TestCase { private final ClasspathConfiguration classpathConfiguration = createClasspathConfiguration(); public void testProvider() throws IOException { assertEquals( "com.provider", getReloadedStartupConfiguration().getProviderClassName() ); } public void testClassPathConfiguration() throws IOException { ClasspathConfiguration reloadedClasspathConfiguration = getReloadedStartupConfiguration().getClasspathConfiguration(); assertEquals( classpathConfiguration, reloadedClasspathConfiguration ); } private void assertEquals( ClasspathConfiguration expectedConfiguration, ClasspathConfiguration actualConfiguration ) { assertEquals( expectedConfiguration.getTestClasspath().getClassPath(), actualConfiguration.getTestClasspath().getClassPath() ); Properties propertiesForExpectedConfiguration = getPropertiesForClasspathConfiguration( expectedConfiguration ); Properties propertiesForActualConfiguration = getPropertiesForClasspathConfiguration( actualConfiguration ); assertEquals( propertiesForExpectedConfiguration, propertiesForActualConfiguration ); } private Properties getPropertiesForClasspathConfiguration( ClasspathConfiguration configuration ) { Properties properties = new Properties(); configuration.setForkProperties( new PropertiesWrapper( properties ) ); return properties; } public void testClassLoaderConfiguration() throws IOException { assertFalse( getReloadedStartupConfiguration().isManifestOnlyJarRequestedAndUsable() ); } public void testClassLoaderConfigurationTrues() throws IOException { final StartupConfiguration testStartupConfiguration = getTestStartupConfiguration( getManifestOnlyJarForkConfiguration() ); boolean current = testStartupConfiguration.isManifestOnlyJarRequestedAndUsable(); assertEquals( current, saveAndReload( testStartupConfiguration ).isManifestOnlyJarRequestedAndUsable() ); } private ClasspathConfiguration createClasspathConfiguration() { Classpath testClassPath = new Classpath( Arrays.asList( new String[]{ "CP1", "CP2" } ) ); Classpath providerClasspath = new Classpath( Arrays.asList( new String[]{ "SP1", "SP2" } ) ); return new ClasspathConfiguration( testClassPath, providerClasspath, true, true ); } public static ClassLoaderConfiguration getSystemClassLoaderConfiguration() { return new ClassLoaderConfiguration( true, false ); } public static ClassLoaderConfiguration getManifestOnlyJarForkConfiguration() { return new ClassLoaderConfiguration( true, true ); } private StartupConfiguration getReloadedStartupConfiguration() throws IOException { ClassLoaderConfiguration classLoaderConfiguration = getSystemClassLoaderConfiguration(); return saveAndReload( getTestStartupConfiguration( classLoaderConfiguration ) ); } private StartupConfiguration saveAndReload( StartupConfiguration startupConfiguration ) throws IOException { final ForkConfiguration forkConfiguration = ForkConfigurationTest.getForkConfiguration(); Properties props = new Properties(); BooterSerializer booterSerializer = new BooterSerializer( forkConfiguration, props ); String aTest = "aTest"; booterSerializer.serialize( getProviderConfiguration(), startupConfiguration, aTest, "never" ); final File propsTest = SystemPropertyManager.writePropertiesFile( props, forkConfiguration.getTempDirectory(), "propsTest", true ); BooterDeserializer booterDeserializer = new BooterDeserializer( new FileInputStream( propsTest ) ); return booterDeserializer.getProviderConfiguration(); } private ProviderConfiguration getProviderConfiguration() { File cwd = new File( "." ); DirectoryScannerParameters directoryScannerParameters = new DirectoryScannerParameters( cwd, new ArrayList(), new ArrayList(), Boolean.TRUE, "hourly" ); ReporterConfiguration reporterConfiguration = new ReporterConfiguration( cwd, Boolean.TRUE ); String aUserRequestedTest = "aUserRequestedTest"; String aUserRequestedTestMethod = "aUserRequestedTestMethod"; TestRequest testSuiteDefinition = new TestRequest( Arrays.asList( getSuiteXmlFileStrings() ), getTestSourceDirectory(), aUserRequestedTest, aUserRequestedTestMethod ); return new ProviderConfiguration( directoryScannerParameters, true, reporterConfiguration, new TestArtifactInfo( "5.0", "ABC" ), testSuiteDefinition, new Properties(), BooterDeserializerProviderConfigurationTest.aTestTyped ); } private StartupConfiguration getTestStartupConfiguration( ClassLoaderConfiguration classLoaderConfiguration ) { return new StartupConfiguration( "com.provider", classpathConfiguration, classLoaderConfiguration, "never", false ); } private File getTestSourceDirectory() { return new File( "TestSrc" ); } private Object[] getSuiteXmlFileStrings() { return new Object[]{ "A1", "A2" }; } } surefire-2.10/maven-surefire-common/src/main/0000755000175000017500000000000011645102475017762 5ustar tonytonysurefire-2.10/maven-surefire-common/src/main/java/0000755000175000017500000000000011645102475020703 5ustar tonytonysurefire-2.10/maven-surefire-common/src/main/java/org/0000755000175000017500000000000011645102475021472 5ustar tonytonysurefire-2.10/maven-surefire-common/src/main/java/org/apache/0000755000175000017500000000000011645102475022713 5ustar tonytonysurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/0000755000175000017500000000000011645102475024021 5ustar tonytonysurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/0000755000175000017500000000000011645102475025317 5ustar tonytonysurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/0000755000175000017500000000000011645102475027143 5ustar tonytony././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireExecutionParameters.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireExecution0000644000175000017500000001564711604702065032547 0ustar tonytonypackage org.apache.maven.plugin.surefire; /* * 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. */ import java.io.File; import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactResolver; import org.apache.maven.execution.MavenSession; import org.apache.maven.project.MavenProject; import org.apache.maven.toolchain.ToolchainManager; /** * The parameters required to execute surefire. * * @author Stephen Connolly * @noinspection UnusedDeclaration, UnusedDeclaration */ public interface SurefireExecutionParameters { boolean isSkipTests(); void setSkipTests( boolean skipTests ); boolean isSkipExec(); void setSkipExec( boolean skipExec ); boolean isSkip(); void setSkip( boolean skip ); File getBasedir(); void setBasedir( File basedir ); File getTestClassesDirectory(); void setTestClassesDirectory( File testClassesDirectory ); File getClassesDirectory(); void setClassesDirectory( File classesDirectory ); MavenProject getProject(); void setProject( MavenProject project ); List getClasspathDependencyExcludes(); void setClasspathDependencyExcludes( List classpathDependencyExcludes ); String getClasspathDependencyScopeExclude(); void setClasspathDependencyScopeExclude( String classpathDependencyScopeExclude ); List getAdditionalClasspathElements(); void setAdditionalClasspathElements( List additionalClasspathElements ); File getReportsDirectory(); void setReportsDirectory( File reportsDirectory ); File getTestSourceDirectory(); void setTestSourceDirectory( File testSourceDirectory ); String getTest(); String getTestMethod(); void setTest( String test ); List getIncludes(); void setIncludes( List includes ); List getExcludes(); void setExcludes( List excludes ); ArtifactRepository getLocalRepository(); void setLocalRepository( ArtifactRepository localRepository ); Properties getSystemProperties(); void setSystemProperties( Properties systemProperties ); Map getSystemPropertyVariables(); void setSystemPropertyVariables( Map systemPropertyVariables ); File getSystemPropertiesFile(); void setSystemPropertiesFile( File systemPropertiesFile ); Properties getProperties(); void setProperties( Properties properties ); Map getPluginArtifactMap(); void setPluginArtifactMap( Map pluginArtifactMap ); Map getProjectArtifactMap(); void setProjectArtifactMap( Map projectArtifactMap ); boolean isPrintSummary(); void setPrintSummary( boolean printSummary ); String getReportFormat(); void setReportFormat( String reportFormat ); String getReportNameSuffix(); void setReportNameSuffix( String reportNameSuffix ); boolean isUseFile(); void setUseFile( boolean useFile ); boolean isRedirectTestOutputToFile(); void setRedirectTestOutputToFile( boolean redirectTestOutputToFile ); String getForkMode(); void setForkMode( String forkMode ); String getJvm(); void setJvm( String jvm ); String getArgLine(); void setArgLine( String argLine ); String getDebugForkedProcess(); void setDebugForkedProcess( String debugForkedProcess ); int getForkedProcessTimeoutInSeconds(); void setForkedProcessTimeoutInSeconds( int forkedProcessTimeoutInSeconds ); Map getEnvironmentVariables(); void setEnvironmentVariables( Map environmentVariables ); File getWorkingDirectory(); void setWorkingDirectory( File workingDirectory ); boolean isChildDelegation(); void setChildDelegation( boolean childDelegation ); String getGroups(); void setGroups( String groups ); String getExcludedGroups(); void setExcludedGroups( String excludedGroups ); File[] getSuiteXmlFiles(); void setSuiteXmlFiles( File[] suiteXmlFiles ); String getJunitArtifactName(); void setJunitArtifactName( String junitArtifactName ); String getTestNGArtifactName(); void setTestNGArtifactName( String testNGArtifactName ); int getThreadCount(); void setThreadCount( int threadCount ); boolean getPerCoreThreadCount(); void setPerCoreThreadCount( boolean perCoreThreadCount ); boolean getUseUnlimitedThreads(); void setUseUnlimitedThreads( boolean useUnlimitedThreads ); String getParallel(); void setParallel( String parallel ); boolean isTrimStackTrace(); void setTrimStackTrace( boolean trimStackTrace ); ArtifactResolver getArtifactResolver(); void setArtifactResolver( ArtifactResolver artifactResolver ); ArtifactFactory getArtifactFactory(); void setArtifactFactory( ArtifactFactory artifactFactory ); List getRemoteRepositories(); void setRemoteRepositories( List remoteRepositories ); ArtifactMetadataSource getMetadataSource(); void setMetadataSource( ArtifactMetadataSource metadataSource ); Properties getOriginalSystemProperties(); void setOriginalSystemProperties( Properties originalSystemProperties ); Properties getInternalSystemProperties(); void setInternalSystemProperties( Properties internalSystemProperties ); boolean isDisableXmlReport(); void setDisableXmlReport( boolean disableXmlReport ); boolean isUseSystemClassLoader(); void setUseSystemClassLoader( boolean useSystemClassLoader ); boolean isUseManifestOnlyJar(); void setUseManifestOnlyJar( boolean useManifestOnlyJar ); boolean isEnableAssertions(); void setEnableAssertions( boolean enableAssertions ); MavenSession getSession(); void setSession( MavenSession session ); String getObjectFactory(); void setObjectFactory( String objectFactory ); ToolchainManager getToolchainManager(); void setToolchainManager( ToolchainManager toolchainManager ); Boolean getFailIfNoTests(); void setFailIfNoTests( Boolean failIfNoTests ); boolean isMavenParallel(); void setRunOrder( String runOrder ); String getRunOrder(); } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependenc0000644000175000017500000001622211557245722032470 0ustar tonytonypackage org.apache.maven.plugin.surefire; /* * 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. */ import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolutionResult; import org.apache.maven.artifact.resolver.ArtifactResolver; import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.OverConstrainedVersionException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.plugin.logging.Log; import org.apache.maven.surefire.booter.Classpath; /** * Does dependency resolution and artifact handling for the surefire plugin. * * @author Stephen Connolly * @author Kristian Rosenvold */ public class SurefireDependencyResolver { private final ArtifactResolver artifactResolver; private final ArtifactFactory artifactFactory; private final org.apache.maven.plugin.logging.Log log; private final ArtifactRepository localRepository; private final List remoteRepositories; private final ArtifactMetadataSource artifactMetadataSource; private final String pluginName; protected SurefireDependencyResolver( ArtifactResolver artifactResolver, ArtifactFactory artifactFactory, Log log, ArtifactRepository localRepository, List remoteRepositories, ArtifactMetadataSource artifactMetadataSource, String pluginName ) { this.artifactResolver = artifactResolver; this.artifactFactory = artifactFactory; this.log = log; this.localRepository = localRepository; this.remoteRepositories = remoteRepositories; this.artifactMetadataSource = artifactMetadataSource; this.pluginName = pluginName; } public boolean isWithinVersionSpec( Artifact artifact, String versionSpec ) { if ( artifact == null ) { return false; } try { VersionRange range = VersionRange.createFromVersionSpec( versionSpec ); try { return range.containsVersion( artifact.getSelectedVersion() ); } catch ( NullPointerException e ) { return range.containsVersion( new DefaultArtifactVersion( artifact.getBaseVersion() ) ); } } catch ( InvalidVersionSpecificationException e ) { throw new RuntimeException( "Bug in plugin. Please report with stacktrace" ); } catch ( OverConstrainedVersionException e ) { throw new RuntimeException( "Bug in plugin. Please report with stacktrace" ); } } public ArtifactResolutionResult resolveArtifact( Artifact filteredArtifact, Artifact providerArtifact ) throws ArtifactResolutionException, ArtifactNotFoundException { ArtifactFilter filter = null; if ( filteredArtifact != null ) { filter = new ExcludesArtifactFilter( Collections.singletonList( filteredArtifact.getGroupId() + ":" + filteredArtifact.getArtifactId() ) ); } Artifact originatingArtifact = artifactFactory.createBuildArtifact( "dummy", "dummy", "1.0", "jar" ); return artifactResolver.resolveTransitively( Collections.singleton( providerArtifact ), originatingArtifact, localRepository, remoteRepositories, artifactMetadataSource, filter ); } public Classpath getProviderClasspath( String provider, String version, Artifact filteredArtifact ) throws ArtifactNotFoundException, ArtifactResolutionException { Artifact providerArtifact = artifactFactory.createDependencyArtifact( "org.apache.maven.surefire", provider, VersionRange.createFromVersion( version ), "jar", null, Artifact.SCOPE_TEST ); ArtifactResolutionResult result = resolveArtifact( filteredArtifact, providerArtifact ); List files = new ArrayList(); for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); ) { Artifact artifact = (Artifact) i.next(); log.debug( "Adding to " + pluginName + " test classpath: " + artifact.getFile().getAbsolutePath() + " Scope: " + artifact.getScope() ); files.add( artifact.getFile().getAbsolutePath() ); } return new Classpath( files ); } public Classpath addProviderToClasspath( Map pluginArtifactMap, Artifact surefireArtifact ) throws ArtifactResolutionException, ArtifactNotFoundException { List files = new ArrayList(); if ( surefireArtifact != null ) { final ArtifactResolutionResult artifactResolutionResult = resolveArtifact( null, surefireArtifact ); for ( Iterator iterator = pluginArtifactMap.values().iterator(); iterator.hasNext(); ) { Artifact artifact = (Artifact) iterator.next(); if ( !artifactResolutionResult.getArtifacts().contains( artifact ) ) { files.add( artifact.getFile().getAbsolutePath() ); } } } else { // Bit of a brute force strategy if not found. Should probably be improved for ( Iterator iterator = pluginArtifactMap.values().iterator(); iterator.hasNext(); ) { Artifact artifact = (Artifact) iterator.next(); files.add( artifact.getFile().getPath() ); } } return new Classpath( files ); } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ConfigurableProviderInfo.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ConfigurableProvi0000644000175000017500000000176111477261742032521 0ustar tonytonypackage org.apache.maven.plugin.surefire; /* * 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. */ /** * @author Kristian Rosenvold */ interface ConfigurableProviderInfo extends ProviderInfo { ProviderInfo instantiate( String providerName ); } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireM0000644000175000017500000013370311604702065032456 0ustar tonytonypackage org.apache.maven.plugin.surefire; /* * 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. */ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolutionResult; import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter; import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugin.surefire.booterclient.ChecksumCalculator; import org.apache.maven.plugin.surefire.booterclient.ForkConfiguration; import org.apache.maven.plugin.surefire.booterclient.ForkStarter; import org.apache.maven.shared.artifact.filter.PatternIncludesArtifactFilter; import org.apache.maven.surefire.booter.ClassLoaderConfiguration; import org.apache.maven.surefire.booter.Classpath; import org.apache.maven.surefire.booter.ClasspathConfiguration; import org.apache.maven.surefire.booter.ProviderConfiguration; import org.apache.maven.surefire.booter.StartupConfiguration; import org.apache.maven.surefire.booter.StartupReportConfiguration; import org.apache.maven.surefire.booter.SurefireBooterForkException; import org.apache.maven.surefire.booter.SurefireExecutionException; import org.apache.maven.surefire.booter.SurefireStarter; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.surefire.testset.DirectoryScannerParameters; import org.apache.maven.surefire.testset.TestArtifactInfo; import org.apache.maven.surefire.testset.TestRequest; import org.apache.maven.surefire.util.NestedRuntimeException; import org.apache.maven.surefire.util.RunOrder; import org.apache.maven.toolchain.Toolchain; import org.codehaus.plexus.util.StringUtils; /** * Abstract base class for running tests using Surefire. * * @author Stephen Connolly * @version $Id: SurefirePlugin.java 945065 2010-05-17 10:26:22Z stephenc $ */ public abstract class AbstractSurefireMojo extends AbstractMojo implements SurefireExecutionParameters { // common field getters/setters // common code protected abstract String getPluginName(); private SurefireDependencyResolver dependencyResolver; public void execute() throws MojoExecutionException, MojoFailureException { if ( verifyParameters() && !hasExecutedBefore() ) { logReportsDirectory(); executeAfterPreconditionsChecked(); } } boolean verifyParameters() throws MojoFailureException { if ( isSkipExecution() ) { getLog().info( "Tests are skipped." ); return false; } if ( !getTestClassesDirectory().exists() ) { if ( Boolean.TRUE.equals( getFailIfNoTests() ) ) { throw new MojoFailureException( "No tests to run!" ); } getLog().info( "No tests to run." ); } else { ensureWorkingDirectoryExists(); ensureParallelRunningCompatibility(); warnIfUselessUseSystemClassLoaderParameter(); } return true; } protected abstract boolean isSkipExecution(); protected void executeAfterPreconditionsChecked() throws MojoExecutionException, MojoFailureException { createDependencyResolver(); Summary summary = executeAllProviders(); restoreOriginalSystemPropertiesWhenNotForking( summary ); handleSummary( summary ); } private Artifact surefireArtifact; private void createDependencyResolver() { dependencyResolver = new SurefireDependencyResolver( getArtifactResolver(), getArtifactFactory(), getLog(), getLocalRepository(), getRemoteRepositories(), getMetadataSource(), getPluginName() ); } protected List createProviders() throws MojoFailureException { try { final Artifact junitDepArtifact = getJunitDepArtifact(); ProviderList wellKnownProviders = new ProviderList( new ProviderInfo[]{new TestNgProviderInfo( getTestNgArtifact() ), new JUnitCoreProviderInfo( getJunitArtifact(), junitDepArtifact ), new JUnit4ProviderInfo( getJunitArtifact(), junitDepArtifact ), new JUnit3ProviderInfo()}, new DynamicProviderInfo( null ) ); return wellKnownProviders.resolve( getLog() ); } catch ( InvalidVersionSpecificationException e ) { throw new NestedRuntimeException( e ); } } private Summary executeAllProviders() throws MojoExecutionException, MojoFailureException { List providers = createProviders(); Summary summary = new Summary(); for ( Iterator iter = providers.iterator(); iter.hasNext(); ) { ProviderInfo provider = (ProviderInfo) iter.next(); executeProvider( provider, summary ); } return summary; } private void executeProvider( ProviderInfo provider, Summary summary ) throws MojoExecutionException, MojoFailureException { ForkConfiguration forkConfiguration = getForkConfiguration(); summary.reportForkConfiguration( forkConfiguration ); ClassLoaderConfiguration classLoaderConfiguration = getClassLoaderConfiguration( forkConfiguration ); try { final RunResult result; if ( ForkConfiguration.FORK_NEVER.equals( forkConfiguration.getForkMode() ) ) { SurefireStarter surefireStarter = createInprocessStarter( provider, forkConfiguration, classLoaderConfiguration ); result = surefireStarter.runSuitesInProcess(); } else { ForkStarter forkStarter = createForkStarter( provider, forkConfiguration, classLoaderConfiguration ); result = forkStarter.run(); } summary.registerRunResult( result ); } catch ( SurefireBooterForkException e ) { summary.registerException( e ); } catch ( SurefireExecutionException e ) { summary.registerException( e ); } } protected abstract void handleSummary( Summary summary ) throws MojoExecutionException, MojoFailureException; protected void restoreOriginalSystemPropertiesWhenNotForking( Summary summary ) { if ( ( getOriginalSystemProperties() != null ) && ( summary.isForking() ) ) { System.setProperties( getOriginalSystemProperties() ); } } protected void logReportsDirectory() { getLog().info( StringUtils.capitalizeFirstLetter( getPluginName() ) + " report directory: " + getReportsDirectory() ); } final Toolchain getToolchain() { Toolchain tc = null; if ( getToolchainManager() != null ) { tc = getToolchainManager().getToolchainFromBuildContext( "jdk", getSession() ); } return tc; } /** * Converts old TestNG configuration parameters over to new properties based configuration * method. (if any are defined the old way) */ private void convertTestNGParameters() { if ( getProperties() == null ) // May be predefined from plugin paramaters { setProperties( new Properties() ); } if ( this.getParallel() != null ) { getProperties().setProperty( "parallel", this.getParallel() ); } if ( this.getExcludedGroups() != null ) { getProperties().setProperty( "excludegroups", this.getExcludedGroups() ); } if ( this.getGroups() != null ) { getProperties().setProperty( "groups", this.getGroups() ); } if ( this.getThreadCount() > 0 ) { getProperties().setProperty( "threadcount", Integer.toString( this.getThreadCount() ) ); } if ( this.getObjectFactory() != null ) { getProperties().setProperty( "objectfactory", this.getObjectFactory() ); } if ( this.getTestClassesDirectory() != null ) { getProperties().setProperty( "testng.test.classpath", getTestClassesDirectory().getAbsolutePath() ); } } protected boolean isAnyConcurrencySelected() { return this.getParallel() != null && this.getParallel().trim().length() > 0; } /** * Converts old JUnit configuration parameters over to new properties based configuration * method. (if any are defined the old way) */ private void convertJunitCoreParameters() { if ( getProperties() == null ) { setProperties( new Properties() ); } if ( this.getParallel() != null ) { getProperties().setProperty( "parallel", this.getParallel() ); } if ( this.getThreadCount() > 0 ) { getProperties().setProperty( "threadCount", Integer.toString( this.getThreadCount() ) ); } getProperties().setProperty( "perCoreThreadCount", Boolean.toString( getPerCoreThreadCount() ) ); getProperties().setProperty( "useUnlimitedThreads", Boolean.toString( getUseUnlimitedThreads() ) ); } private boolean isJunit47Compatible( Artifact artifact ) { return dependencyResolver.isWithinVersionSpec( artifact, "[4.7,)" ); } private boolean isAnyJunit4( Artifact artifact ) { return dependencyResolver.isWithinVersionSpec( artifact, "[4.0,)" ); } boolean isForkModeNever() { return ForkConfiguration.FORK_NEVER.equals( getForkMode() ); } protected ProviderConfiguration createProviderConfiguration() throws MojoExecutionException, MojoFailureException { ReporterConfiguration reporterConfiguration = new ReporterConfiguration( getReportsDirectory(), Boolean.valueOf( isTrimStackTrace() ) ); Artifact testNgArtifact; try { testNgArtifact = getTestNgArtifact(); } catch ( InvalidVersionSpecificationException e ) { throw new MojoExecutionException( "Error determining the TestNG version requested: " + e.getMessage(), e ); } DirectoryScannerParameters directoryScannerParameters = null; final boolean isTestNg = testNgArtifact != null; TestArtifactInfo testNg = isTestNg ? new TestArtifactInfo( testNgArtifact.getVersion(), testNgArtifact.getClassifier() ) : null; List testXml = getSuiteXmlFiles() != null ? Arrays.asList( getSuiteXmlFiles() ) : null; TestRequest testSuiteDefinition = new TestRequest( testXml, getTestSourceDirectory(), getTest(), getTestMethod() ); final boolean failIfNoTests; if ( isValidSuiteXmlFileConfig() && getTest() == null ) { failIfNoTests = getFailIfNoTests() != null && getFailIfNoTests().booleanValue(); if ( !isTestNg ) { throw new MojoExecutionException( "suiteXmlFiles is configured, but there is no TestNG dependency" ); } } else { if ( isSpecificTestSpecified() && getFailIfNoTests() == null ) { setFailIfNoTests( Boolean.TRUE ); } failIfNoTests = getFailIfNoTests() != null && getFailIfNoTests().booleanValue(); List includes = getIncludeList(); List excludes = getExcludeList(); directoryScannerParameters = new DirectoryScannerParameters( getTestClassesDirectory(), includes, excludes, Boolean.valueOf( failIfNoTests ), getRunOrderObject() ); } Properties providerProperties = getProperties(); if ( providerProperties == null ) { providerProperties = new Properties(); } ProviderConfiguration providerConfiguration1 = new ProviderConfiguration( directoryScannerParameters, failIfNoTests, reporterConfiguration, testNg, testSuiteDefinition, providerProperties, null ); return providerConfiguration1; } StartupConfiguration createStartupConfiguration( ForkConfiguration forkConfiguration, ProviderInfo provider, ClassLoaderConfiguration classLoaderConfiguration ) throws MojoExecutionException, MojoFailureException { try { provider.addProviderProperties(); String providerName = provider.getProviderName(); final Classpath providerClasspath = provider.getProviderClasspath(); final Classpath testClasspath = generateTestClasspath(); logClasspath( testClasspath, "test classpath" ); logClasspath( providerClasspath, "provider classpath" ); final ClasspathConfiguration classpathConfiguration = new ClasspathConfiguration( testClasspath, providerClasspath, isEnableAssertions(), isChildDelegation() ); return new StartupConfiguration( providerName, classpathConfiguration, classLoaderConfiguration, forkConfiguration.getForkMode(), false ); } catch ( ArtifactResolutionException e ) { throw new MojoExecutionException( "Unable to generate classpath: " + e, e ); } catch ( ArtifactNotFoundException e ) { throw new MojoExecutionException( "Unable to generate classpath: " + e, e ); } catch ( InvalidVersionSpecificationException e ) { throw new MojoExecutionException( "Unable to generate classpath: " + e, e ); } } private StartupReportConfiguration getStartupReportConfiguration() { return new StartupReportConfiguration( isUseFile(), isPrintSummary(), getReportFormat(), isRedirectTestOutputToFile(), isDisableXmlReport(), getReportsDirectory(), isTrimStackTrace(), getReportNameSuffix() ); } void logClasspath( Classpath classpath, String descriptor ) { getLog().debug( descriptor + " classpath:" ); for ( Iterator i = classpath.getClassPath().iterator(); i.hasNext(); ) { String classpathElement = (String) i.next(); if ( classpathElement == null ) { getLog().warn( "The test classpath contains a null element." ); } else { getLog().debug( " " + classpathElement ); } } } private boolean isSpecificTestSpecified() { return getTest() != null; } private boolean isValidSuiteXmlFileConfig() { return getSuiteXmlFiles() != null && getSuiteXmlFiles().length > 0; } private List getExcludeList() { List excludes; if ( isSpecificTestSpecified() ) { // Check to see if we are running a single test. The raw parameter will // come through if it has not been set. // FooTest -> **/FooTest.java excludes = new ArrayList(); } else { excludes = this.getExcludes(); // defaults here, qdox doesn't like the end javadoc value // Have to wrap in an ArrayList as surefire expects an ArrayList instead of a List for some reason if ( excludes == null || excludes.size() == 0 ) { excludes = new ArrayList( Arrays.asList( new String[]{"**/*$*"} ) ); } } return excludes; } private List getIncludeList() { List includes; if ( isSpecificTestSpecified() ) { // Check to see if we are running a single test. The raw parameter will // come through if it has not been set. // FooTest -> **/FooTest.java includes = new ArrayList(); String[] testRegexes = StringUtils.split( getTest(), "," ); for ( int i = 0; i < testRegexes.length; i++ ) { String testRegex = testRegexes[i]; if ( testRegex.endsWith( ".java" ) ) { testRegex = testRegex.substring( 0, testRegex.length() - 5 ); } // Allow paths delimited by '.' or '/' testRegex = testRegex.replace( '.', '/' ); includes.add( "**/" + testRegex + ".java" ); } } else { includes = this.getIncludes(); // defaults here, qdox doesn't like the end javadoc value // Have to wrap in an ArrayList as surefire expects an ArrayList instead of a List for some reason if ( includes == null || includes.size() == 0 ) { includes = new ArrayList( Arrays.asList( getDefaultIncludes() ) ); } } return includes; } private Artifact getTestNgArtifact() throws MojoFailureException, InvalidVersionSpecificationException { // TODO: this is pretty manual, but I'd rather not require the plugin > dependencies section right now Artifact artifact = (Artifact) getProjectArtifactMap().get( getTestNGArtifactName() ); if ( artifact != null ) { VersionRange range = VersionRange.createFromVersionSpec( "[4.7,)" ); if ( !range.containsVersion( new DefaultArtifactVersion( artifact.getVersion() ) ) ) { throw new MojoFailureException( "TestNG support requires version 4.7 or above. You have declared version " + artifact.getVersion() ); } } return artifact; } private Artifact getJunitArtifact() { return (Artifact) getProjectArtifactMap().get( getJunitArtifactName() ); } private Artifact getJunitDepArtifact() { return (Artifact) getProjectArtifactMap().get( "junit:junit-dep" ); } protected ForkStarter createForkStarter( ProviderInfo provider, ForkConfiguration forkConfiguration, ClassLoaderConfiguration classLoaderConfiguration ) throws MojoExecutionException, MojoFailureException { StartupConfiguration startupConfiguration = createStartupConfiguration( forkConfiguration, provider, classLoaderConfiguration ); StartupReportConfiguration startupReportConfiguration = getStartupReportConfiguration(); ProviderConfiguration providerConfiguration = createProviderConfiguration(); return new ForkStarter( providerConfiguration, startupConfiguration, forkConfiguration, getForkedProcessTimeoutInSeconds(), startupReportConfiguration ); } protected SurefireStarter createInprocessStarter( ProviderInfo provider, ForkConfiguration forkConfiguration, ClassLoaderConfiguration classLoaderConfiguration ) throws MojoExecutionException, MojoFailureException { StartupConfiguration startupConfiguration = createStartupConfiguration( forkConfiguration, provider, classLoaderConfiguration ); StartupReportConfiguration startupReportConfiguration = getStartupReportConfiguration(); ProviderConfiguration providerConfiguration = createProviderConfiguration(); return new SurefireStarter( startupConfiguration, providerConfiguration, startupReportConfiguration ); } protected ForkConfiguration getForkConfiguration() { File tmpDir = getSurefireTempDir(); //noinspection ResultOfMethodCallIgnored tmpDir.mkdirs(); Artifact shadeFire = (Artifact) getPluginArtifactMap().get( "org.apache.maven.surefire:surefire-shadefire" ); surefireArtifact = (Artifact) getPluginArtifactMap().get( "org.apache.maven.surefire:surefire-booter" ); if ( surefireArtifact == null ) { throw new RuntimeException( "Unable to locate surefire-booter in the list of plugin artifacts" ); } surefireArtifact.isSnapshot(); // MNG-2961: before Maven 2.0.8, fixes getBaseVersion to be -SNAPSHOT if needed final Classpath bootClasspathConfiguration = getArtifactClasspath( shadeFire != null ? shadeFire : surefireArtifact ); ForkConfiguration fork = new ForkConfiguration( bootClasspathConfiguration, getForkMode(), tmpDir ); fork.setTempDirectory( tmpDir ); processSystemProperties( !fork.isForking() ); verifyLegalSystemProperties(); if ( getLog().isDebugEnabled() ) { showMap( getInternalSystemProperties(), "system property" ); } Toolchain tc = getToolchain(); if ( tc != null ) { getLog().info( "Toolchain in " + getPluginName() + "-plugin: " + tc ); if ( isForkModeNever() ) { setForkMode( ForkConfiguration.FORK_ONCE ); } if ( getJvm() != null ) { getLog().warn( "Toolchains are ignored, 'executable' parameter is set to " + getJvm() ); } else { setJvm( tc.findTool( "java" ) ); //NOI18N } } if ( fork.isForking() ) { setUseSystemClassLoader( isUseSystemClassLoader() ); fork.setSystemProperties( getInternalSystemProperties() ); if ( "true".equals( getDebugForkedProcess() ) ) { setDebugForkedProcess( "-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005" ); } fork.setDebugLine( getDebugForkedProcess() ); if ( (getJvm() == null || "".equals( getJvm() ))) { // use the same JVM as the one used to run Maven (the "java.home" one) setJvm( System.getProperty( "java.home" ) + File.separator + "bin" + File.separator + "java" ); getLog().debug( "Using JVM: " + getJvm() ); } fork.setJvmExecutable( getJvm() ); if ( getWorkingDirectory() != null ) { fork.setWorkingDirectory( getWorkingDirectory() ); } else { fork.setWorkingDirectory( getBasedir() ); } fork.setArgLine( getArgLine() ); fork.setEnvironmentVariables( getEnvironmentVariables() ); if ( getLog().isDebugEnabled() ) { showMap( getEnvironmentVariables(), "environment variable" ); fork.setDebug( true ); } if ( getArgLine() != null ) { List args = Arrays.asList( getArgLine().split( " " ) ); if ( args.contains( "-da" ) || args.contains( "-disableassertions" ) ) { setEnableAssertions( false ); } } } return fork; } private void verifyLegalSystemProperties() { final Properties properties = getInternalSystemProperties(); Iterator iter = properties.keySet().iterator(); while ( iter.hasNext() ) { String key = (String) iter.next(); if ( "java.library.path".equals( key ) ) { getLog().warn( "java.library.path cannot be set as system property, use -Djava.library.path=... instead" ); } } } /** * Where surefire stores its own temp files * * @return A file pointing to the location of surefire's own temp files */ private File getSurefireTempDir() { return new File( getReportsDirectory().getParentFile(), "surefire" ); } private String getConfigChecksum() { ChecksumCalculator checksum = new ChecksumCalculator(); checksum.add( getPluginName() ); checksum.add( isSkipTests() ); checksum.add( isSkipExec() ); checksum.add( isSkip() ); checksum.add( getTestClassesDirectory() ); checksum.add( getClassesDirectory() ); checksum.add( getClasspathDependencyExcludes() ); checksum.add( getClasspathDependencyScopeExclude() ); checksum.add( getAdditionalClasspathElements() ); checksum.add( getReportsDirectory() ); checksum.add( getTestSourceDirectory() ); checksum.add( getTest() ); checksum.add( getIncludes() ); checksum.add( getExcludes() ); checksum.add( getLocalRepository() ); checksum.add( getSystemProperties() ); checksum.add( getSystemPropertyVariables() ); checksum.add( getSystemPropertiesFile() ); checksum.add( getProperties() ); checksum.add( isPrintSummary() ); checksum.add( getReportFormat() ); checksum.add( getReportNameSuffix() ); checksum.add( isUseFile() ); checksum.add( isRedirectTestOutputToFile() ); checksum.add( getForkMode() ); checksum.add( getJvm() ); checksum.add( getArgLine() ); checksum.add( getDebugForkedProcess() ); checksum.add( getForkedProcessTimeoutInSeconds() ); checksum.add( getEnvironmentVariables() ); checksum.add( getWorkingDirectory() ); checksum.add( isChildDelegation() ); checksum.add( getGroups() ); checksum.add( getExcludedGroups() ); checksum.add( getSuiteXmlFiles() ); checksum.add( getJunitArtifact() ); checksum.add( getTestNGArtifactName() ); checksum.add( getThreadCount() ); checksum.add( getPerCoreThreadCount() ); checksum.add( getUseUnlimitedThreads() ); checksum.add( getParallel() ); checksum.add( isTrimStackTrace() ); checksum.add( getRemoteRepositories() ); checksum.add( isDisableXmlReport() ); checksum.add( isUseSystemClassLoader() ); checksum.add( isUseManifestOnlyJar() ); checksum.add( isEnableAssertions() ); checksum.add( getObjectFactory() ); checksum.add( getFailIfNoTests() ); checksum.add( getRunOrder() ); addPluginSpecificChecksumItems( checksum ); return checksum.getSha1(); } protected abstract void addPluginSpecificChecksumItems( ChecksumCalculator checksum ); protected boolean hasExecutedBefore() { // A tribute to Linus Torvalds String configChecksum = getConfigChecksum(); Map pluginContext = getPluginContext(); if ( pluginContext.containsKey( configChecksum ) ) { getLog().info( "Skipping execution of surefire because it has already been run for this configuration" ); return true; } pluginContext.put( configChecksum, configChecksum ); return false; } protected ClassLoaderConfiguration getClassLoaderConfiguration( ForkConfiguration fork ) { return fork.isForking() ? new ClassLoaderConfiguration( isUseSystemClassLoader(), isUseManifestOnlyJar() ) : new ClassLoaderConfiguration( false, false ); } protected abstract String[] getDefaultIncludes(); /** * Generate the test classpath. * * @return List containing the classpath elements * @throws InvalidVersionSpecificationException * when it happens * @throws MojoFailureException when it happens * @throws ArtifactNotFoundException when it happens * @throws ArtifactResolutionException when it happens */ Classpath generateTestClasspath() throws InvalidVersionSpecificationException, MojoFailureException, ArtifactResolutionException, ArtifactNotFoundException { List classpath = new ArrayList( 2 + getProject().getArtifacts().size() ); classpath.add( getTestClassesDirectory().getAbsolutePath() ); classpath.add( getClassesDirectory().getAbsolutePath() ); Set classpathArtifacts = getProject().getArtifacts(); if ( getClasspathDependencyScopeExclude() != null && !getClasspathDependencyScopeExclude().equals( "" ) ) { ArtifactFilter dependencyFilter = new ScopeArtifactFilter( getClasspathDependencyScopeExclude() ); classpathArtifacts = this.filterArtifacts( classpathArtifacts, dependencyFilter ); } if ( getClasspathDependencyExcludes() != null ) { ArtifactFilter dependencyFilter = new PatternIncludesArtifactFilter( getClasspathDependencyExcludes() ); classpathArtifacts = this.filterArtifacts( classpathArtifacts, dependencyFilter ); } for ( Iterator iter = classpathArtifacts.iterator(); iter.hasNext(); ) { Artifact artifact = (Artifact) iter.next(); if ( artifact.getArtifactHandler().isAddedToClasspath() ) { File file = artifact.getFile(); if ( file != null ) { classpath.add( file.getPath() ); } } } // Add additional configured elements to the classpath if ( getAdditionalClasspathElements() != null ) { for ( Iterator iter = getAdditionalClasspathElements().iterator(); iter.hasNext(); ) { String classpathElement = (String) iter.next(); if ( classpathElement != null ) { classpath.add( classpathElement ); } } } // adding TestNG MethodSelector to the classpath // Todo: move if ( getTestNgArtifact() != null ) { Artifact testNgUtils = getTestNgUtilsArtifact(); String path = testNgUtils.getFile().getPath(); classpath.add( path ); } return new Classpath( classpath ); } Artifact getTestNgUtilsArtifact() throws ArtifactResolutionException, ArtifactNotFoundException { Artifact surefireArtifact = (Artifact) getPluginArtifactMap().get( "org.apache.maven.surefire:surefire-booter" ); String surefireVersion = surefireArtifact.getBaseVersion(); Artifact testNgUtils = getArtifactFactory().createArtifact( "org.apache.maven.surefire", "surefire-testng-utils", surefireVersion, "runtime", "jar" ); getArtifactResolver().resolve( testNgUtils, getRemoteRepositories(), getLocalRepository() ); return testNgUtils; } /** * Return a new set containing only the artifacts accepted by the given filter. * * @param artifacts The unfiltered artifacts * @param filter The filter to apply * @return The filtered result */ private Set filterArtifacts( Set artifacts, ArtifactFilter filter ) { Set filteredArtifacts = new LinkedHashSet(); for ( Iterator iter = artifacts.iterator(); iter.hasNext(); ) { Artifact artifact = (Artifact) iter.next(); if ( !filter.include( artifact ) ) { filteredArtifacts.add( artifact ); } } return filteredArtifacts; } private void showMap( Map map, String setting ) { for ( Iterator i = map.keySet().iterator(); i.hasNext(); ) { String key = (String) i.next(); String value = (String) map.get( key ); getLog().debug( "Setting " + setting + " [" + key + "]=[" + value + "]" ); } } private ArtifactResolutionResult resolveArtifact( Artifact filteredArtifact, Artifact providerArtifact ) { ArtifactFilter filter = null; if ( filteredArtifact != null ) { filter = new ExcludesArtifactFilter( Collections.singletonList( filteredArtifact.getGroupId() + ":" + filteredArtifact.getArtifactId() ) ); } Artifact originatingArtifact = getArtifactFactory().createBuildArtifact( "dummy", "dummy", "1.0", "jar" ); try { return getArtifactResolver().resolveTransitively( Collections.singleton( providerArtifact ), originatingArtifact, getLocalRepository(), getRemoteRepositories(), getMetadataSource(), filter ); } catch ( ArtifactResolutionException e ) { throw new NestedRuntimeException( e ); } catch ( ArtifactNotFoundException e ) { throw new NestedRuntimeException( e ); } } private Classpath getArtifactClasspath( Artifact surefireArtifact ) { ArtifactResolutionResult result = resolveArtifact( null, surefireArtifact ); List items = new ArrayList(); for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); ) { Artifact artifact = (Artifact) i.next(); getLog().debug( "Adding to " + getPluginName() + " booter test classpath: " + artifact.getFile().getAbsolutePath() + " Scope: " + artifact.getScope() ); items.add( artifact.getFile().getAbsolutePath() ); } return new Classpath( items ); } void processSystemProperties( boolean setInSystem ) { copyPropertiesToInternalSystemProperties( getSystemProperties() ); if ( this.getSystemPropertiesFile() != null ) { Properties props = new Properties(); try { FileInputStream fis = new FileInputStream( getSystemPropertiesFile() ); props.load( fis ); fis.close(); } catch ( IOException e ) { String msg = "The system property file '" + getSystemPropertiesFile().getAbsolutePath() + "' can't be read."; if ( getLog().isDebugEnabled() ) { getLog().warn( msg, e ); } else { getLog().warn( msg ); } } Enumeration keys = props.propertyNames(); //loop through all properties while ( keys.hasMoreElements() ) { String key = (String) keys.nextElement(); String value = props.getProperty( key ); getInternalSystemProperties().setProperty( key, value ); } } if ( this.getSystemPropertyVariables() != null ) { for ( Iterator i = getSystemPropertyVariables().keySet().iterator(); i.hasNext(); ) { String key = (String) i.next(); String value = (String) getSystemPropertyVariables().get( key ); //java Properties does not accept null value if ( value != null ) { getInternalSystemProperties().setProperty( key, value ); } } } setOriginalSystemProperties( (Properties) System.getProperties().clone() ); // We used to take all of our system properties and dump them in with the // user specified properties for SUREFIRE-121, causing SUREFIRE-491. // Not gonna do THAT any more... instead, we only propagate those system properties // that have been explicitly specified by the user via -Dkey=value on the CLI copyPropertiesToInternalSystemProperties( getUserProperties() ); getInternalSystemProperties().setProperty( "basedir", getBasedir().getAbsolutePath() ); getInternalSystemProperties().setProperty( "user.dir", getWorkingDirectory().getAbsolutePath() ); getInternalSystemProperties().setProperty( "localRepository", getLocalRepository().getBasedir() ); if ( setInSystem ) { // Add all system properties configured by the user Iterator iter = getInternalSystemProperties().keySet().iterator(); while ( iter.hasNext() ) { String key = (String) iter.next(); String value = getInternalSystemProperties().getProperty( key ); System.setProperty( key, value ); } } } private void copyPropertiesToInternalSystemProperties( Properties properties ) { if ( properties != null ) { for ( Iterator i = properties.keySet().iterator(); i.hasNext(); ) { String key = (String) i.next(); String value = properties.getProperty( key ); getInternalSystemProperties().setProperty( key, value ); } } } private Properties getUserProperties() { Properties props = null; try { // try calling MavenSession.getUserProperties() from Maven 2.1.0-M1+ Method getUserProperties = getSession().getClass().getMethod( "getUserProperties", null ); props = (Properties) getUserProperties.invoke( getSession(), null ); } catch ( Exception e ) { String msg = "Build uses Maven 2.0.x, cannot propagate system properties" + " from command line to tests (cf. SUREFIRE-121)"; if ( getLog().isDebugEnabled() ) { getLog().warn( msg, e ); } else { getLog().warn( msg ); } } if ( props == null ) { props = new Properties(); } return props; } void ensureWorkingDirectoryExists() throws MojoFailureException { if ( getWorkingDirectory() == null ) { throw new MojoFailureException( "workingDirectory cannot be null" ); } if ( !getWorkingDirectory().exists() ) { if ( !getWorkingDirectory().mkdirs() ) { throw new MojoFailureException( "Cannot create workingDirectory " + getWorkingDirectory() ); } } if ( !getWorkingDirectory().isDirectory() ) { throw new MojoFailureException( "workingDirectory " + getWorkingDirectory() + " exists and is not a directory" ); } } void ensureParallelRunningCompatibility() throws MojoFailureException { if ( isMavenParallel() && isForkModeNever() ) { throw new MojoFailureException( "parallel maven execution is not compatible with surefire forkmode NEVER" ); } } void warnIfUselessUseSystemClassLoaderParameter() { if ( isUseSystemClassLoader() && isForkModeNever() ) { getLog().warn( "useSystemClassloader setting has no effect when not forking" ); } } private RunOrder getRunOrderObject() { RunOrder runOrder = RunOrder.valueOf( getRunOrder() ); return runOrder == null ? RunOrder.FILESYSTEM : runOrder; } class TestNgProviderInfo implements ProviderInfo { private final Artifact testNgArtifact; TestNgProviderInfo( Artifact testNgArtifact ) { this.testNgArtifact = testNgArtifact; } public String getProviderName() { return "org.apache.maven.surefire.testng.TestNGProvider"; } public boolean isApplicable() { return testNgArtifact != null; } public void addProviderProperties() { convertTestNGParameters(); } public Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException { Artifact surefireArtifact = (Artifact) getPluginArtifactMap().get( "org.apache.maven.surefire:surefire-booter" ); return dependencyResolver.getProviderClasspath( "surefire-testng", surefireArtifact.getBaseVersion(), testNgArtifact ); } } class JUnit3ProviderInfo implements ProviderInfo { public String getProviderName() { return "org.apache.maven.surefire.junit.JUnit3Provider"; } public boolean isApplicable() { return true; } public void addProviderProperties() { } public Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException { // add the JUnit provider as default - it doesn't require JUnit to be present, // since it supports POJO tests. return dependencyResolver.getProviderClasspath( "surefire-junit3", surefireArtifact.getBaseVersion(), null ); } } class JUnit4ProviderInfo implements ProviderInfo { private final Artifact junitArtifact; private final Artifact junitDepArtifact; JUnit4ProviderInfo( Artifact junitArtifact, Artifact junitDepArtifact ) { this.junitArtifact = junitArtifact; this.junitDepArtifact = junitDepArtifact; } public String getProviderName() { return "org.apache.maven.surefire.junit4.JUnit4Provider"; } public boolean isApplicable() { return junitDepArtifact != null || isAnyJunit4( junitArtifact ); } public void addProviderProperties() { } public Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException { return dependencyResolver.getProviderClasspath( "surefire-junit4", surefireArtifact.getBaseVersion(), null ); } } class JUnitCoreProviderInfo implements ProviderInfo { private final Artifact junitArtifact; private final Artifact junitDepArtifact; JUnitCoreProviderInfo( Artifact junitArtifact, Artifact junitDepArtifact ) { this.junitArtifact = junitArtifact; this.junitDepArtifact = junitDepArtifact; } public String getProviderName() { return "org.apache.maven.surefire.junitcore.JUnitCoreProvider"; } private boolean is47CompatibleJunitDep() { return junitDepArtifact != null && isJunit47Compatible( junitDepArtifact ); } public boolean isApplicable() { final boolean isJunitArtifact47 = isAnyJunit4( junitArtifact ) && isJunit47Compatible( junitArtifact ); return isAnyConcurrencySelected() && ( isJunitArtifact47 || is47CompatibleJunitDep() ); } public void addProviderProperties() { convertJunitCoreParameters(); } public Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException { return dependencyResolver.getProviderClasspath( "surefire-junit47", surefireArtifact.getBaseVersion(), null ); } } public class DynamicProviderInfo implements ConfigurableProviderInfo { final String providerName; DynamicProviderInfo( String providerName ) { this.providerName = providerName; } public ProviderInfo instantiate( String providerName ) { return new DynamicProviderInfo( providerName ); } public String getProviderName() { return providerName; } public boolean isApplicable() { return true; } public void addProviderProperties() { // Ok this is a bit lazy. convertJunitCoreParameters(); convertTestNGParameters(); } public Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException { final Map pluginArtifactMap = getPluginArtifactMap(); Artifact plugin = (Artifact) pluginArtifactMap.get( "org.apache.maven.plugins:maven-surefire-plugin" ); return dependencyResolver.addProviderToClasspath( pluginArtifactMap, plugin ); } } } surefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booter/0000755000175000017500000000000011645102475030435 5ustar tonytony././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireReportParameters.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireReportPar0000644000175000017500000000323511503742760032514 0ustar tonytonypackage org.apache.maven.plugin.surefire; /* * 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. */ import java.io.File; /** * The parameters required to report on a surefire execution. * * @author Stephen Connolly * @noinspection UnusedDeclaration */ public interface SurefireReportParameters { boolean isSkipTests(); void setSkipTests( boolean skipTests ); boolean isSkipExec(); void setSkipExec( boolean skipExec ); boolean isSkip(); void setSkip( boolean skip ); boolean isTestFailureIgnore(); void setTestFailureIgnore( boolean testFailureIgnore ); File getBasedir(); void setBasedir( File basedir ); File getTestClassesDirectory(); void setTestClassesDirectory( File testClassesDirectory ); File getReportsDirectory(); void setReportsDirectory( File reportsDirectory ); Boolean getFailIfNoTests(); void setFailIfNoTests( Boolean failIfNoTests ); } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.ja0000644000175000017500000000732711556104214032406 0ustar tonytonypackage org.apache.maven.plugin.surefire; /* * 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. */ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugin.logging.Log; import org.apache.maven.surefire.booter.ProviderConfiguration; import org.apache.maven.surefire.suite.RunResult; /** * Helper class for surefire plugins */ public final class SurefireHelper { /** * Do not instantiate. */ private SurefireHelper() { throw new IllegalAccessError( "Utility class" ); } // Todo: Fix the duplication, probably by making failsafe relate to a "RunResult" too. public static void reportExecution( SurefireReportParameters reportParameters, RunResult result, Log log ) throws MojoFailureException { String msg; // System.out.println( ""); // System.out.println( result.getTestSetSummary() ); if ( result.getCompletedCount() == 0 ) { if ( ( reportParameters.getFailIfNoTests() == null ) || !reportParameters.getFailIfNoTests().booleanValue() ) { return; } // TODO: i18n throw new MojoFailureException( "No tests were executed! (Set -DfailIfNoTests=false to ignore this error.)" ); } if ( result.isErrrorFree() ) { return; } if ( result.isFailureOrTimeout() ) { msg = "There was a timeout or other error in the fork"; } else { // TODO: i18n msg = "There are test failures.\n\nPlease refer to " + reportParameters.getReportsDirectory() + " for the individual test results."; } if ( reportParameters.isTestFailureIgnore() ) { log.error( msg ); } else { throw new MojoFailureException( msg ); } } public static void reportExecution( SurefireReportParameters reportParameters, int result, Log log ) throws MojoFailureException { if ( result == 0 ) { return; } String msg; if ( result == ProviderConfiguration.NO_TESTS_EXIT_CODE ) { if ( ( reportParameters.getFailIfNoTests() == null ) || !reportParameters.getFailIfNoTests().booleanValue() ) { return; } // TODO: i18n throw new MojoFailureException( "No tests were executed! (Set -DfailIfNoTests=false to ignore this error.)" ); } else { // TODO: i18n msg = "There are test failures.\n\nPlease refer to " + reportParameters.getReportsDirectory() + " for the individual test results."; } if ( reportParameters.isTestFailureIgnore() ) { log.error( msg ); } else { throw new MojoFailureException( msg ); } } } surefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/Summary.java0000644000175000017500000000362711560327401031445 0ustar tonytonypackage org.apache.maven.plugin.surefire; /* * 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. */ import org.apache.maven.plugin.surefire.booterclient.ForkConfiguration; import org.apache.maven.surefire.suite.RunResult; public class Summary { private boolean forking = false; private RunResult runResult; private Exception exception; public void reportForkConfiguration( ForkConfiguration configuration ) { forking = configuration.isForking(); } public void registerException( Exception exception ) { if ( this.exception == null ) { this.exception = exception; } } public void registerRunResult( RunResult result ) { runResult = result; } public boolean isErrorFree() { return exception == null; } public boolean isFailureOrTimeout() { return runResult != null && runResult.isFailureOrTimeout(); } public boolean isForking() { return forking; } public Exception getFirstException() { return exception; } public RunResult getResultOfLastSuccessfulRun() { return runResult; } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ProviderList.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ProviderList.java0000644000175000017500000000711111524570052032430 0ustar tonytonypackage org.apache.maven.plugin.surefire; /* * 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. */ import org.apache.maven.plugin.logging.Log; import org.apache.maven.plugin.surefire.booterclient.ProviderDetector; import org.apache.maven.surefire.providerapi.SurefireProvider; import org.apache.maven.surefire.util.NestedRuntimeException; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; /** * @author Kristian Rosenvold */ public class ProviderList { private final ProviderInfo[] wellKnownProviders; private final ConfigurableProviderInfo dynamicProvider; public ProviderList( ProviderInfo[] wellKnownProviders, ConfigurableProviderInfo dynamicProviderInfo ) { this.wellKnownProviders = wellKnownProviders; this.dynamicProvider = dynamicProviderInfo; } public List resolve( Log log ) { List providersToRun = new ArrayList(); Set manuallyConfiguredProviders = getManuallyConfiguredProviders(); if ( manuallyConfiguredProviders.size() > 0 ) { Iterator iter = manuallyConfiguredProviders.iterator(); String name; while ( iter.hasNext() ) { name = (String) iter.next(); ProviderInfo wellKnown = findByName( name ); ProviderInfo providerToAdd = wellKnown != null ? wellKnown : dynamicProvider.instantiate( name ); log.info( "Using configured provider " + providerToAdd.getProviderName() ); providersToRun.add( providerToAdd ); } return providersToRun; } return autoDetectOneProvider(); } private List autoDetectOneProvider() { List providersToRun = new ArrayList(); for ( int i = 0; i < wellKnownProviders.length; i++ ) { if ( wellKnownProviders[i].isApplicable() ) { providersToRun.add( wellKnownProviders[i] ); return providersToRun; } } return providersToRun; } private Set getManuallyConfiguredProviders() { try { return ProviderDetector.getServiceNames( SurefireProvider.class, Thread.currentThread().getContextClassLoader() ); } catch ( IOException e ) { throw new NestedRuntimeException( e ); } } private ProviderInfo findByName( String providerClassName ) { for ( int i = 0; i < wellKnownProviders.length; i++ ) { ProviderInfo wellKnownProvider = wellKnownProviders[i]; if ( wellKnownProvider.getProviderName().equals( providerClassName ) ) { return wellKnownProvider; } } return null; } } surefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/0000755000175000017500000000000011645102475031634 5ustar tonytony././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ProviderDetector.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/Prov0000644000175000017500000001020211502774112032473 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient; /* * 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. */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.util.Enumeration; import java.util.HashSet; import java.util.Set; /** * @author Stephen Conolly * @author Kristian Rosenvold * @noinspection UnusedDeclaration */ public class ProviderDetector { public static Set getServiceNames( Class clazz, ClassLoader classLoader ) throws IOException { final String resourceName = "META-INF/services/" + clazz.getName(); if ( classLoader == null ) { return new HashSet( ); } final Enumeration urlEnumeration = classLoader.getResources( resourceName ); return getNames( urlEnumeration ); } /** * Method loadServices loads the services of a class that are * defined using the SPI mechanism. * * @param urlEnumeration The urls from the resource * @throws IOException When reading the streams fails * @return The set of service provider names */ private static Set getNames( final Enumeration urlEnumeration ) throws IOException { final Set names = new HashSet(); nextUrl: while ( urlEnumeration.hasMoreElements() ) { final URL url = (URL) urlEnumeration.nextElement(); final BufferedReader reader = getReader( url ); try { String line; while ( ( line = reader.readLine() ) != null ) { int ci = line.indexOf( '#' ); if ( ci >= 0 ) { line = line.substring( 0, ci ); } line = line.trim(); int n = line.length(); if ( n == 0 ) { continue; // next line } if ( ( line.indexOf( ' ' ) >= 0 ) || ( line.indexOf( '\t' ) >= 0 ) ) { continue nextUrl; // next url } char cp = line.charAt( 0 ); // should use codePointAt but this is JDK1.3 if ( !Character.isJavaIdentifierStart( cp ) ) { continue nextUrl; // next url } for ( int i = 1; i < n; i++ ) { cp = line.charAt( i ); // should use codePointAt but this is JDK1.3 if ( !Character.isJavaIdentifierPart( cp ) && ( cp != '.' ) ) { continue nextUrl; // next url } } if ( !names.contains( line ) ) { names.add( line ); } } } finally { reader.close(); } } return names; } private static BufferedReader getReader( URL url ) throws IOException { final InputStream inputStream = url.openStream(); final InputStreamReader inputStreamReader = new InputStreamReader( inputStream ); return new BufferedReader( inputStreamReader ); } } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ChecksumCalculator.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/Chec0000644000175000017500000001071011524570052032414 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient; /* * 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. */ import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.surefire.util.NestedRuntimeException; import java.io.File; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; /** * @author Kristian Rosenvold */ public class ChecksumCalculator { private static final String HEX = "0123456789ABCDEF"; private final List checksumItems = new ArrayList(); private void appendObject( Object item ) { checksumItems.add( item ); } public void add( boolean value ) { checksumItems.add( value ? Boolean.TRUE : Boolean.FALSE ); } public void add( int value ) { checksumItems.add( new Integer( value ) ); } public void add( Map map ) { if ( map != null ) { appendObject( map.toString() ); } } public void add( String string ) { appendObject( string ); } public void add( File workingDirectory ) { appendObject( workingDirectory ); } public void add( ArtifactRepository localRepository ) { appendObject( localRepository ); } public void add( List items ) { if ( items != null ) { int size = items.size(); Object item; for ( int i = 0; i < size; i++ ) { item = items.get( i ); appendObject( item ); } } else { appendObject( null ); } } public void add( File[] fileList ) { if ( fileList != null ) { int size = fileList.length; for ( int i = 0; i < size; i++ ) { appendObject( fileList[i] ); } } else { appendObject( null ); } } public void add( Artifact artifact ) { appendObject( artifact != null ? artifact.getId() : null ); } public void add( Boolean aBoolean ) { appendObject( aBoolean ); } private static String asHexString( byte[] bytes ) { if ( bytes == null ) { return null; } int size = bytes.length; final StringBuilder result = new StringBuilder( 2 * size ); byte b; for ( int i = 0; i < size; i++ ) { b = bytes[i]; result.append( HEX.charAt( ( b & 0xF0 ) >> 4 ) ).append( HEX.charAt( ( b & 0x0F ) ) ); } return result.toString(); } private String getConfig() { StringBuilder result = new StringBuilder(); Object item; for ( Iterator iter = checksumItems.iterator(); iter.hasNext(); ) { item = iter.next(); result.append( item != null ? item.toString() : "null" ); } return result.toString(); } public String getSha1() { try { MessageDigest md = MessageDigest.getInstance( "SHA-1" ); String configValue = getConfig(); md.update( configValue.getBytes( "iso-8859-1" ), 0, configValue.length() ); byte[] sha1hash = md.digest(); return asHexString( sha1hash ); } catch ( NoSuchAlgorithmException e ) { throw new NestedRuntimeException( e ); } catch ( UnsupportedEncodingException e ) { throw new NestedRuntimeException( e ); } } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkConfiguration.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/Fork0000644000175000017500000002143011557340256032463 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient; /* * 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. */ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; import java.util.jar.Manifest; import org.apache.maven.surefire.booter.ClassLoaderConfiguration; import org.apache.maven.surefire.booter.Classpath; import org.apache.maven.surefire.booter.ForkedBooter; import org.apache.maven.surefire.booter.SurefireBooterForkException; import org.apache.maven.surefire.util.Relocator; import org.apache.maven.surefire.util.UrlUtils; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.cli.Commandline; /** * Configuration for forking tests. * * @author Brett Porter * @author Kenney Westerhof * @author Kristian Rosenvold */ public class ForkConfiguration { public static final String FORK_ONCE = "once"; public static final String FORK_ALWAYS = "always"; public static final String FORK_NEVER = "never"; private final Classpath bootClasspathConfiguration; private final String forkMode; private Properties systemProperties; private String jvmExecutable; private String argLine; private Map environmentVariables; private File workingDirectory; private File tempDirectory; private boolean debug; private String debugLine; public ForkConfiguration( Classpath bootClasspathConfiguration, String forkMode, File tmpDir ) { this.bootClasspathConfiguration = bootClasspathConfiguration; this.forkMode = getForkMode( forkMode ); this.tempDirectory = tmpDir; } public Classpath getBootClasspath() { return bootClasspathConfiguration; } private static String getForkMode( String forkMode ) { if ( "pertest".equalsIgnoreCase( forkMode ) ) { return FORK_ALWAYS; } else if ( "none".equalsIgnoreCase( forkMode ) ) { return FORK_NEVER; } else if ( forkMode.equals( FORK_NEVER ) || forkMode.equals( FORK_ONCE ) || forkMode.equals( FORK_ALWAYS ) ) { return forkMode; } else { throw new IllegalArgumentException( "Fork mode " + forkMode + " is not a legal value" ); } } public boolean isForking() { return !FORK_NEVER.equals( forkMode ); } public void setSystemProperties( Properties systemProperties ) { this.systemProperties = (Properties) systemProperties.clone(); } public void setJvmExecutable( String jvmExecutable ) { this.jvmExecutable = jvmExecutable; } public void setArgLine( String argLine ) { this.argLine = argLine; } public void setDebugLine( String debugLine ) { this.debugLine = debugLine; } public void setEnvironmentVariables( Map environmentVariables ) { this.environmentVariables = new HashMap( environmentVariables ); } public void setWorkingDirectory( File workingDirectory ) { this.workingDirectory = workingDirectory; } public void setTempDirectory( File tempDirectory ) { this.tempDirectory = tempDirectory; } public String getForkMode() { return forkMode; } public Properties getSystemProperties() { return systemProperties; } /** * @param classPath cla the classpath arguments * @param classpathConfiguration the classpath configuration * @param shadefire true if running shadefire * @return A commandline * @throws org.apache.maven.surefire.booter.SurefireBooterForkException * when unable to perform the fork */ public Commandline createCommandLine( List classPath, ClassLoaderConfiguration classpathConfiguration, boolean shadefire ) throws SurefireBooterForkException { return createCommandLine( classPath, classpathConfiguration.isManifestOnlyJarRequestedAndUsable(), shadefire ); } public Commandline createCommandLine( List classPath, boolean useJar, boolean shadefire ) throws SurefireBooterForkException { Commandline cli = new Commandline(); cli.setExecutable( jvmExecutable ); if ( argLine != null ) { cli.createArg().setLine( stripNewLines( argLine ) ); } if ( environmentVariables != null ) { Iterator iter = environmentVariables.keySet().iterator(); while ( iter.hasNext() ) { String key = (String) iter.next(); String value = (String) environmentVariables.get( key ); cli.addEnvironment( key, value ); } } if ( getDebugLine() != null && !"".equals( getDebugLine() ) ) { cli.createArg().setLine( getDebugLine() ); } if ( useJar ) { File jarFile; try { jarFile = createJar( classPath ); } catch ( IOException e ) { throw new SurefireBooterForkException( "Error creating archive file", e ); } cli.createArg().setValue( "-jar" ); cli.createArg().setValue( jarFile.getAbsolutePath() ); } else { cli.addEnvironment( "CLASSPATH", StringUtils.join( classPath.iterator(), File.pathSeparator ) ); final String forkedBooter = ForkedBooter.class.getName(); cli.createArg().setValue( shadefire ? new Relocator().relocate( forkedBooter ) : forkedBooter ); } cli.setWorkingDirectory( workingDirectory.getAbsolutePath() ); return cli; } /** * Create a jar with just a manifest containing a Main-Class entry for BooterConfiguration and a Class-Path entry * for all classpath elements. * * @param classPath List<String> of all classpath elements. * @return The file pointint to the jar * @throws java.io.IOException When a file operation fails. */ public File createJar( List classPath ) throws IOException { File file = File.createTempFile( "surefirebooter", ".jar", tempDirectory ); if ( !debug ) { file.deleteOnExit(); } FileOutputStream fos = new FileOutputStream( file ); JarOutputStream jos = new JarOutputStream( fos ); jos.setLevel( JarOutputStream.STORED ); JarEntry je = new JarEntry( "META-INF/MANIFEST.MF" ); jos.putNextEntry( je ); Manifest man = new Manifest(); // we can't use StringUtils.join here since we need to add a '/' to // the end of directory entries - otherwise the jvm will ignore them. String cp = ""; for ( Iterator it = classPath.iterator(); it.hasNext(); ) { String el = (String) it.next(); // NOTE: if File points to a directory, this entry MUST end in '/'. cp += UrlUtils.getURL( new File( el ) ).toExternalForm() + " "; } man.getMainAttributes().putValue( "Manifest-Version", "1.0" ); man.getMainAttributes().putValue( "Class-Path", cp.trim() ); man.getMainAttributes().putValue( "Main-Class", ForkedBooter.class.getName() ); man.write( jos ); jos.close(); return file; } public void setDebug( boolean debug ) { this.debug = debug; } public boolean isDebug() { return debug; } public String stripNewLines( String argline ) { return argline.replace( "\n", " " ).replace( "\r", " " ); } public String getDebugLine() { return debugLine; } public File getTempDirectory() { return tempDirectory; } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/surefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/outp0000755000175000017500000000000011645102475032544 5ustar tonytony././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/DeserializedStacktraceWriter.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/outp0000644000175000017500000000335311556104214032544 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient.output; /* * 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. */ import org.apache.maven.surefire.report.StackTraceWriter; /** * Represents a deserialize stacktracewriter that has been * marshalled across to the plugin from the fork. *

* Might be better to represent this whole thing differently * * @author Kristian Rosenvold */ public class DeserializedStacktraceWriter implements StackTraceWriter { private final String message; private final String stackTrace; public DeserializedStacktraceWriter( String message, String stackTrace ) { this.message = message; this.stackTrace = stackTrace; } // Trimming or not is decided on the forking side public String writeTraceToString() { return stackTrace; } public String writeTrimmedTraceToString() { return stackTrace; } public Throwable getThrowable() { return new Throwable( message ); } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/outp0000644000175000017500000002236611565516265032566 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient.output; /* * 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. */ import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.StringTokenizer; import org.apache.maven.surefire.booter.ForkingRunListener; import org.apache.maven.surefire.report.CategorizedReportEntry; import org.apache.maven.surefire.report.ConsoleOutputReceiver; import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.SimpleReportEntry; import org.apache.maven.surefire.report.StackTraceWriter; import org.apache.maven.surefire.util.NestedRuntimeException; import org.apache.maven.surefire.util.internal.StringUtils; import org.codehaus.plexus.util.cli.StreamConsumer; /** * Knows how to reconstruct *all* the state transmitted over stdout by the forked process. * * @author Kristian Rosenvold */ public class ForkClient implements StreamConsumer { private final ReporterFactory providerReporterFactory; private final Map testSetReporters = Collections.synchronizedMap( new HashMap() ); private final Properties testVmSystemProperties; public ForkClient( ReporterFactory providerReporterFactory, Properties testVmSystemProperties ) { this.providerReporterFactory = providerReporterFactory; this.testVmSystemProperties = testVmSystemProperties; } public void consumeLine( String s ) { try { if ( s.length() == 0 ) { return; } final byte operationId = (byte) s.charAt( 0 ); int commma = s.indexOf( ",", 3 ); if ( commma < 0 ) { System.out.println( s ); return; } final Integer channelNumber = new Integer( Integer.parseInt( s.substring( 2, commma ), 16 ) ); RunListener reporter = (RunListener) testSetReporters.get( channelNumber ); if ( reporter == null ) { reporter = providerReporterFactory.createReporter(); //reporter = new AsynchRunListener( reporter, "ForkClient" ); testSetReporters.put( channelNumber, reporter ); } int rest = s.indexOf( ",", commma ); final String remaining = s.substring( rest + 1 ); switch ( operationId ) { case ForkingRunListener.BOOTERCODE_TESTSET_STARTING: reporter.testSetStarting( createReportEntry( remaining ) ); break; case ForkingRunListener.BOOTERCODE_TESTSET_COMPLETED: reporter.testSetCompleted( createReportEntry( remaining ) ); break; case ForkingRunListener.BOOTERCODE_TEST_STARTING: reporter.testStarting( createReportEntry( remaining) ); break; case ForkingRunListener.BOOTERCODE_TEST_SUCCEEDED: reporter.testSucceeded( createReportEntry( remaining ) ); break; case ForkingRunListener.BOOTERCODE_TEST_FAILED: reporter.testFailed( createReportEntry( remaining ) ); break; case ForkingRunListener.BOOTERCODE_TEST_SKIPPED: reporter.testSkipped( createReportEntry( remaining ) ); break; case ForkingRunListener.BOOTERCODE_TEST_ERROR: reporter.testError( createReportEntry( remaining ) ); break; case ForkingRunListener.BOOTERCODE_TEST_ASSUMPTIONFAILURE: reporter.testAssumptionFailure( createReportEntry( remaining ) ); break; case ForkingRunListener.BOOTERCODE_SYSPROPS: int keyEnd = remaining.indexOf( "," ); StringWriter key = new StringWriter(); StringWriter value = new StringWriter(); StringUtils.unescapeJava( key, remaining.substring( 0, keyEnd ) ); StringUtils.unescapeJava( value, remaining.substring( keyEnd + 1 ) ); synchronized ( testVmSystemProperties ) { testVmSystemProperties.put( key, value ); } break; case ForkingRunListener.BOOTERCODE_STDOUT: byte[] bytes = new byte[remaining.length() * 2]; int len = StringUtils.unescapeJava( bytes, remaining ); ( (ConsoleOutputReceiver) reporter ).writeTestOutput( bytes, 0, len, true ); break; case ForkingRunListener.BOOTERCODE_STDERR: bytes = new byte[remaining.length() * 2]; len = StringUtils.unescapeJava( bytes, remaining ); ( (ConsoleOutputReceiver) reporter ).writeTestOutput( bytes, 0, len, false ); break; case ForkingRunListener.BOOTERCODE_CONSOLE: ( (ConsoleLogger) reporter ).info( createConsoleMessage( remaining ) ); break; default: System.out.println( s ); } } catch ( NumberFormatException e ) { System.out.println( s ); } catch ( ReporterException e ) { throw new NestedRuntimeException( e ); } } public void consumeMultiLineContent( String s ) throws IOException { BufferedReader stringReader = new BufferedReader( new StringReader( s ) ); String s1; while ( ( s1 = stringReader.readLine() ) != null ) { consumeLine( s1 ); } } private String createConsoleMessage( String remaining ) { return unescape( remaining ); } private ReportEntry createReportEntry( String untokenized) { StringTokenizer tokens = new StringTokenizer(untokenized, ","); try { String source = tokens.nextToken(); String name = tokens.nextToken(); String group = nullableCsv( tokens.nextToken() ); String elapsedStr = tokens.nextToken(); Integer elapsed = "null".equals( elapsedStr ) ? null : Integer.decode( elapsedStr ); final StackTraceWriter stackTraceWriter = tokens.hasMoreTokens() ? deserializeStackStraceWriter( tokens ) : null; return group != null ? new CategorizedReportEntry( source, name, group, stackTraceWriter, elapsed ) : new SimpleReportEntry( source, name, stackTraceWriter, elapsed ); } catch ( RuntimeException e ) { throw new RuntimeException( untokenized, e ); } } private StackTraceWriter deserializeStackStraceWriter( StringTokenizer tokens ) { StackTraceWriter stackTraceWriter; String stackTraceMessage = nullableCsv( tokens.nextToken() ); String stackTrace = tokens.hasMoreTokens() ? nullableCsv( tokens.nextToken() ) : null; stackTraceWriter = stackTrace != null ? new DeserializedStacktraceWriter( stackTraceMessage, stackTrace ) : null; return stackTraceWriter; } private String nullableCsv( String source ) { if ( "null".equals( source ) ) { return null; } return unescape( source ); } private String unescape( String source ) { StringWriter stringWriter = new StringWriter( source.length() ); StringUtils.unescapeJava( stringWriter, source ); return stringWriter.getBuffer().toString(); } /** * Used when getting reporters on the plugin side of a fork. * * @param channelNumber The logical channel number * @return A mock provider reporter */ public RunListener getReporter( Integer channelNumber ) { return (RunListener) testSetReporters.get( channelNumber ); } public void close() { /*Iterator iter = testSetReporters.values().iterator(); while( iter.hasNext() ) { ((AsynchRunListener)iter.next()).close(); } */ } } ././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ThreadedStreamConsumer.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/outp0000644000175000017500000000614411557330334032552 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient.output; /* * 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. */ import org.apache.maven.surefire.util.internal.BlockingQueue; import org.apache.maven.surefire.util.internal.BlockingQueueFactory; import org.codehaus.plexus.util.cli.StreamConsumer; /** * Knows how to reconstruct *all* the state transmitted over stdout by the forked process. * * @author Kristian Rosenvold */ public class ThreadedStreamConsumer implements StreamConsumer { private final BlockingQueue items = BlockingQueueFactory.createBlockingQueue(); private static final String poison = "Pioson"; private final Thread thread; private final Pumper pumper; static class Pumper implements Runnable { private final BlockingQueue queue; private final StreamConsumer target; private volatile InterruptedException interruptedException; Pumper( BlockingQueue queue, StreamConsumer target ) { this.queue = queue; this.target = target; } public void run() { try { String item = (String) queue.take(); //noinspection StringEquality while ( item != poison ) { target.consumeLine( item ); item = (String) queue.take(); } } catch ( InterruptedException e ) { this.interruptedException = e; } } public InterruptedException getInterruptedException() { return interruptedException; } } public ThreadedStreamConsumer( StreamConsumer target ) { pumper = new Pumper( items, target ); thread = new Thread( pumper, "ThreadedStreamConsumer" ); thread.start(); } public void consumeLine( String s ) { items.add( s ); } public void close() { try { items.add( poison ); thread.join(); //noinspection ThrowableResultOfMethodCallIgnored if ( pumper.getInterruptedException() != null ) { throw pumper.getInterruptedException(); } } catch ( InterruptedException e ) { throw new RuntimeException( e ); } } } ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/Mock0000644000175000017500000001030711561564522032453 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient; /* * 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. */ import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import org.apache.maven.surefire.report.ConsoleOutputReceiver; import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.RunListener; /** * Internal use only */ public class MockReporter implements RunListener, ConsoleLogger, ConsoleOutputReceiver { private final List events = new ArrayList(); private final List data = new ArrayList(); public static final String SET_STARTING = "SET_STARTED"; public static final String SET_COMPLETED = "SET_COMPLETED"; public static final String TEST_STARTING = "TEST_STARTED"; public static final String TEST_SUCCEEDED = "TEST_COMPLETED"; public static final String TEST_FAILED = "TEST_FAILED"; public static final String TEST_ERROR = "TEST_ERROR"; public static final String TEST_SKIPPED = "TEST_SKIPPED"; public static final String TEST_ASSUMPTION_FAIL = "TEST_ASSUMPTION_SKIPPED"; public static final String CONSOLE_OUTPUT = "CONSOLE_OUTPUT"; public static final String STDOUT = "STDOUT"; public static final String STDERR = "STDERR"; private final AtomicInteger testSucceeded = new AtomicInteger(); private final AtomicInteger testIgnored = new AtomicInteger(); private final AtomicInteger testFailed = new AtomicInteger(); public MockReporter() { } public void testSetStarting( ReportEntry report ) { events.add( SET_STARTING ); data.add( report ); } public void testSetCompleted( ReportEntry report ) { events.add( SET_COMPLETED ); data.add( report ); } public void testStarting( ReportEntry report ) { events.add( TEST_STARTING ); data.add( report ); } public void testSucceeded( ReportEntry report ) { events.add( TEST_SUCCEEDED ); testSucceeded.incrementAndGet(); data.add( report ); } public void testError( ReportEntry report ) { events.add( TEST_ERROR ); data.add( report ); testFailed.incrementAndGet(); } public void testFailed( ReportEntry report ) { events.add( TEST_FAILED ); data.add( report ); testFailed.incrementAndGet(); } public void testSkipped( ReportEntry report ) { events.add( TEST_SKIPPED ); data.add( report ); testIgnored.incrementAndGet(); } public List getEvents() { return events; } public List getData() { return data; } public String getFirstEvent() { return (String) events.get( 0 ); } public ReportEntry getFirstData() { return (ReportEntry) data.get( 0 ); } public void testAssumptionFailure( ReportEntry report ) { events.add( TEST_ASSUMPTION_FAIL ); data.add( report ); testIgnored.incrementAndGet(); } public void info( String message ) { events.add( CONSOLE_OUTPUT ); data.add( message ); //To change body of implemented methods use File | Settings | File Templates. } public void writeTestOutput( byte[] buf, int off, int len, boolean stdout ) { events.add( stdout ? STDOUT : STDERR ); data.add( new String( buf, off, len ) ); } } ././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/Test0000644000175000017500000000310711561564522032501 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient; /* * 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. */ import org.apache.maven.plugin.surefire.report.FileReporterFactory; import org.apache.maven.surefire.booter.StartupReportConfiguration; import org.apache.maven.surefire.report.DefaultConsoleReporter; import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.report.RunListener; /** * @author Kristian Rosenvold */ public class TestSetMockReporterFactory extends FileReporterFactory { public TestSetMockReporterFactory() { super( StartupReportConfiguration.defaultValue() ); } public ConsoleLogger createConsoleLogger() { return new DefaultConsoleReporter( System.out ); } public RunListener createReporter() { return new MockReporter(); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/BooterSerializer.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/Boot0000644000175000017500000001460111603272271032460 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient; /* * 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. */ import java.io.File; import java.io.IOException; import java.util.Properties; import org.apache.maven.surefire.booter.BooterConstants; import org.apache.maven.surefire.booter.ClassLoaderConfiguration; import org.apache.maven.surefire.booter.PropertiesWrapper; import org.apache.maven.surefire.booter.ProviderConfiguration; import org.apache.maven.surefire.booter.StartupConfiguration; import org.apache.maven.surefire.booter.SystemPropertyManager; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.testset.DirectoryScannerParameters; import org.apache.maven.surefire.testset.TestArtifactInfo; import org.apache.maven.surefire.testset.TestRequest; /** * Knows how to serialize and deserialize the booter configuration. *

* The internal serialization format is through a properties file. The long-term goal of this * class is not to expose this implementation information to its clients. This still leaks somewhat, * and there are some cases where properties are being accessed as "Properties" instead of * more representative domain objects. *

* * @author Jason van Zyl * @author Emmanuel Venisse * @author Brett Porter * @author Dan Fabulich * @author Kristian Rosenvold * @version $Id$ */ class BooterSerializer { private final ForkConfiguration forkConfiguration; private final PropertiesWrapper properties; public BooterSerializer( ForkConfiguration forkConfiguration, Properties properties ) { this.forkConfiguration = forkConfiguration; this.properties = new PropertiesWrapper( properties ); } public File serialize( ProviderConfiguration booterConfiguration, StartupConfiguration providerConfiguration, Object testSet, String forkMode ) throws IOException { providerConfiguration.getClasspathConfiguration().setForkProperties( properties ); TestArtifactInfo testNg = booterConfiguration.getTestArtifact(); if ( testNg != null ) { properties.setProperty( BooterConstants.TESTARTIFACT_VERSION, testNg.getVersion() ); properties.setProperty( BooterConstants.TESTARTIFACT_CLASSIFIER, testNg.getClassifier() ); } properties.setProperty( BooterConstants.FORKTESTSET, getTypeEncoded( testSet ) ); TestRequest testSuiteDefinition = booterConfiguration.getTestSuiteDefinition(); if ( testSuiteDefinition != null ) { properties.setProperty( BooterConstants.SOURCE_DIRECTORY, testSuiteDefinition.getTestSourceDirectory() ); properties.addList( testSuiteDefinition.getSuiteXmlFiles(), BooterConstants.TEST_SUITE_XML_FILES ); properties.setProperty( BooterConstants.REQUESTEDTEST, testSuiteDefinition.getRequestedTest() ); properties.setProperty( BooterConstants.REQUESTEDTESTMETHOD, testSuiteDefinition.getRequestedTestMethod() ); } DirectoryScannerParameters directoryScannerParameters = booterConfiguration.getDirScannerParams(); if ( directoryScannerParameters != null ) { properties.setProperty( BooterConstants.FAILIFNOTESTS, String.valueOf( directoryScannerParameters.isFailIfNoTests() ) ); properties.addList( directoryScannerParameters.getIncludes(), BooterConstants.INCLUDES_PROPERTY_PREFIX ); properties.addList( directoryScannerParameters.getExcludes(), BooterConstants.EXCLUDES_PROPERTY_PREFIX ); properties.setProperty( BooterConstants.TEST_CLASSES_DIRECTORY, directoryScannerParameters.getTestClassesDirectory() ); properties.setProperty( BooterConstants.RUN_ORDER, directoryScannerParameters.getRunOrder().name() ); } ReporterConfiguration reporterConfiguration = booterConfiguration.getReporterConfiguration(); Boolean rep = reporterConfiguration.isTrimStackTrace(); properties.setProperty( BooterConstants.ISTRIMSTACKTRACE, rep ); properties.setProperty( BooterConstants.REPORTSDIRECTORY, reporterConfiguration.getReportsDirectory() ); properties.setProperty( BooterConstants.FORKMODE, forkMode ); ClassLoaderConfiguration classLoaderConfiguration = providerConfiguration.getClassLoaderConfiguration(); properties.setProperty( BooterConstants.USESYSTEMCLASSLOADER, String.valueOf( classLoaderConfiguration.isUseSystemClassLoader() ) ); properties.setProperty( BooterConstants.USEMANIFESTONLYJAR, String.valueOf( classLoaderConfiguration.isUseManifestOnlyJar() ) ); properties.setProperty( BooterConstants.FAILIFNOTESTS, String.valueOf( booterConfiguration.isFailIfNoTests() ) ); properties.setProperty( BooterConstants.PROVIDER_CONFIGURATION, providerConfiguration.getProviderClassName() ); return SystemPropertyManager.writePropertiesFile( properties.getProperties(), forkConfiguration.getTempDirectory(), "surefire", forkConfiguration.isDebug() ); } private String getTypeEncoded( Object value ) { if ( value == null ) { return null; } String valueToUse; if ( value instanceof Class ) { valueToUse = ( (Class) value ).getName(); } else { valueToUse = value.toString(); } return value.getClass().getName() + "|" + valueToUse; } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/Fork0000644000175000017500000002301511562276062032463 0ustar tonytonypackage org.apache.maven.plugin.surefire.booterclient; /* * 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. */ import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.Properties; import org.apache.maven.plugin.surefire.booterclient.output.ForkClient; import org.apache.maven.plugin.surefire.booterclient.output.ThreadedStreamConsumer; import org.apache.maven.plugin.surefire.report.FileReporterFactory; import org.apache.maven.surefire.booter.Classpath; import org.apache.maven.surefire.booter.ClasspathConfiguration; import org.apache.maven.surefire.booter.ProviderConfiguration; import org.apache.maven.surefire.booter.ProviderFactory; import org.apache.maven.surefire.booter.StartupConfiguration; import org.apache.maven.surefire.booter.StartupReportConfiguration; import org.apache.maven.surefire.booter.SurefireBooterForkException; import org.apache.maven.surefire.booter.SurefireExecutionException; import org.apache.maven.surefire.booter.SurefireReflector; import org.apache.maven.surefire.booter.SystemPropertyManager; import org.apache.maven.surefire.providerapi.SurefireProvider; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.report.RunStatistics; import org.apache.maven.surefire.suite.RunResult; import org.codehaus.plexus.util.cli.CommandLineException; import org.codehaus.plexus.util.cli.CommandLineTimeOutException; import org.codehaus.plexus.util.cli.CommandLineUtils; import org.codehaus.plexus.util.cli.Commandline; /** * Starts the fork or runs in-process. *

* Lives only on the plugin-side (not present in remote vms) *

* Knows how to fork new vms and also how to delegate non-forking invocation to SurefireStarter directly * * @author Jason van Zyl * @author Emmanuel Venisse * @author Brett Porter * @author Dan Fabulich * @author Carlos Sanchez * @author Kristian Rosenvold * @version $Id: ForkStarter.java 1101566 2011-05-10 17:56:02Z krosenvold $ */ public class ForkStarter { private final int forkedProcessTimeoutInSeconds; private final ProviderConfiguration providerConfiguration; private final StartupConfiguration startupConfiguration; private final ForkConfiguration forkConfiguration; private final StartupReportConfiguration startupReportConfiguration; public ForkStarter( ProviderConfiguration providerConfiguration, StartupConfiguration startupConfiguration, ForkConfiguration forkConfiguration, int forkedProcessTimeoutInSeconds, StartupReportConfiguration startupReportConfiguration ) { this.forkConfiguration = forkConfiguration; this.providerConfiguration = providerConfiguration; this.forkedProcessTimeoutInSeconds = forkedProcessTimeoutInSeconds; this.startupConfiguration = startupConfiguration; this.startupReportConfiguration = startupReportConfiguration; } public RunResult run() throws SurefireBooterForkException, SurefireExecutionException { final RunResult result; final String requestedForkMode = forkConfiguration.getForkMode(); final FileReporterFactory fileReporterFactory = new FileReporterFactory( startupReportConfiguration ); try { if ( ForkConfiguration.FORK_ONCE.equals( requestedForkMode ) ) { result = fork( null, providerConfiguration.getProviderProperties(), fileReporterFactory ); } else if ( ForkConfiguration.FORK_ALWAYS.equals( requestedForkMode ) ) { result = runSuitesForkPerTestSet( fileReporterFactory ); } else { throw new SurefireExecutionException( "Unknown forkmode: " + requestedForkMode, null ); } } finally { fileReporterFactory.close(); } return result; } private RunResult runSuitesForkPerTestSet( FileReporterFactory fileReporterFactory ) throws SurefireBooterForkException { RunResult globalResult = new RunResult( 0, 0, 0, 0 ); final Iterator suites = getSuitesIterator(); Properties properties = new Properties(); while ( suites.hasNext() ) { Object testSet = suites.next(); RunResult runResult = fork( testSet, properties, fileReporterFactory ); globalResult = globalResult.aggregate( runResult ); } return globalResult; } private RunResult fork( Object testSet, Properties properties, ReporterFactory testSetReporterFactory ) throws SurefireBooterForkException { File surefireProperties; File systemProperties = null; try { BooterSerializer booterSerializer = new BooterSerializer( forkConfiguration, properties ); surefireProperties = booterSerializer.serialize( providerConfiguration, startupConfiguration, testSet, forkConfiguration.getForkMode() ); if ( forkConfiguration.getSystemProperties() != null ) { systemProperties = SystemPropertyManager.writePropertiesFile( forkConfiguration.getSystemProperties(), forkConfiguration.getTempDirectory(), "surefire", forkConfiguration.isDebug() ); } } catch ( IOException e ) { throw new SurefireBooterForkException( "Error creating properties files for forking", e ); } final Classpath bootClasspathConfiguration = forkConfiguration.getBootClasspath(); final Classpath additionlClassPathUrls = startupConfiguration.useSystemClassLoader() ? startupConfiguration.getClasspathConfiguration().getTestClasspath() : null; Classpath bootClasspath = Classpath.join( bootClasspathConfiguration, additionlClassPathUrls ); Commandline cli = forkConfiguration.createCommandLine( bootClasspath.getClassPath(), startupConfiguration.getClassLoaderConfiguration(), startupConfiguration.isShadefire() ); cli.createArg().setFile( surefireProperties ); if ( systemProperties != null ) { cli.createArg().setFile( systemProperties ); } ForkClient out = new ForkClient( testSetReporterFactory, startupReportConfiguration.getTestVmSystemProperties() ); ThreadedStreamConsumer threadedStreamConsumer2 = new ThreadedStreamConsumer( out ); if ( forkConfiguration.isDebug() ) { System.out.println( "Forking command line: " + cli ); } RunResult runResult; try { final int timeout = forkedProcessTimeoutInSeconds > 0 ? forkedProcessTimeoutInSeconds : 0; CommandLineUtils.executeCommandLine( cli, threadedStreamConsumer2, threadedStreamConsumer2, timeout ); threadedStreamConsumer2.close(); out.close(); final RunStatistics globalRunStatistics = testSetReporterFactory.getGlobalRunStatistics(); runResult = globalRunStatistics.getRunResult(); } catch ( CommandLineTimeOutException e ) { runResult = RunResult.Timeout; } catch ( CommandLineException e ) { throw new SurefireBooterForkException( "Error while executing forked tests.", e.getCause() ); } return runResult; } private Iterator getSuitesIterator() throws SurefireBooterForkException { try { final ClasspathConfiguration classpathConfiguration = startupConfiguration.getClasspathConfiguration(); ClassLoader testsClassLoader = classpathConfiguration.createTestClassLoader( false ); ClassLoader surefireClassLoader = classpathConfiguration.createSurefireClassLoader( testsClassLoader ); SurefireReflector surefireReflector = new SurefireReflector( surefireClassLoader ); Object reporterFactory = surefireReflector.createReportingReporterFactory( startupReportConfiguration ); final ProviderFactory providerFactory = new ProviderFactory( startupConfiguration, providerConfiguration, surefireClassLoader, testsClassLoader, reporterFactory ); SurefireProvider surefireProvider = providerFactory.createProvider(); return surefireProvider.getSuites(); } catch ( SurefireExecutionException e ) { throw new SurefireBooterForkException( "Unable to create classloader to find test suites", e ); } } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ProviderInfo.javasurefire-2.10/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/ProviderInfo.java0000644000175000017500000000244711533742067032426 0ustar tonytonypackage org.apache.maven.plugin.surefire; /* * 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. */ import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.surefire.booter.Classpath; /** * @author Kristian Rosenvold */ public interface ProviderInfo { String getProviderName(); boolean isApplicable(); Classpath getProviderClasspath() throws ArtifactResolutionException, ArtifactNotFoundException; void addProviderProperties(); } surefire-2.10/maven-surefire-report-plugin/0000755000175000017500000000000011645102475017566 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/pom.xml0000644000175000017500000001612311640163725021106 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire 2.10 ../pom.xml org.apache.maven.plugins maven-surefire-report-plugin maven-plugin Maven Surefire Report Plugin jruiz Johnny Ruiz III jruiz@exist.com ${mavenVersion} apache.website scp://people.apache.org/www/maven.apache.org/plugins/maven-surefire-report-plugin 1.1.4 org.apache.maven maven-project org.apache.maven maven-model org.apache.maven maven-plugin-api org.apache.maven.reporting maven-reporting-api 3.0 org.apache.maven.reporting maven-reporting-impl 2.1 org.apache.maven.doxia doxia-sink-api ${doxiaVersion} org.apache.maven.doxia doxia-core ${doxiaVersion} org.apache.maven.doxia doxia-decoration-model ${doxiaVersion} org.apache.maven.doxia doxia-site-renderer ${doxiaVersion} org.codehaus.plexus plexus-container-default 1.0-alpha-9 org.codehaus.plexus plexus-utils org.apache.maven.plugin-testing maven-plugin-testing-harness 1.2 test maven-compiler-plugin 1.4 1.4 org.apache.maven.plugins maven-plugin-plugin 2.8 generated-helpmojo helpmojo org.apache.maven.plugins maven-site-plugin scp://people.apache.org/www/maven.apache.org/plugins/${project.artifactId}-${project.version} org.apache.maven.plugins maven-plugin-plugin 2.7 1.4 jdk1.3 maven-compiler-plugin false 1.4 maven-surefire-plugin once true ${java.home}/bin/java ci enableCiProfile true maven-docck-plugin 1.0-beta-1 check reporting org.codehaus.mojo l10n-maven-plugin 1.0-alpha-2 de sv surefire-2.10/maven-surefire-report-plugin/src/0000755000175000017500000000000011645102475020355 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/test/0000755000175000017500000000000011645102475021334 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/test/java/0000755000175000017500000000000011645102475022255 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/test/java/org/0000755000175000017500000000000011645102475023044 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/0000755000175000017500000000000011645102475024265 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/0000755000175000017500000000000011645102475025373 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/0000755000175000017500000000000011645102475027054 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/0000755000175000017500000000000011645102475030700 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/0000755000175000017500000000000011645102475032213 5ustar tonytony././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/SurefireReportMojoTest.javasurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Su0000644000175000017500000001645011241014145032517 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; /* * 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. */ import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.io.Writer; import java.net.URL; import java.net.URLDecoder; import java.util.Locale; import org.apache.maven.doxia.site.decoration.DecorationModel; import org.apache.maven.doxia.siterenderer.RendererException; import org.apache.maven.doxia.siterenderer.SiteRenderingContext; import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink; import org.apache.maven.plugin.testing.AbstractMojoTestCase; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.WriterFactory; /** * @author Allan Ramirez * @version $Id: SurefireReportMojoTest.java 803879 2009-08-13 13:43:01Z vsiveton $ */ public class SurefireReportMojoTest extends AbstractMojoTestCase { public void testBasicSurefireReport() throws Exception { File testPom = new File( getUnitBaseDir(), "basic-surefire-report-test/plugin-config.xml" ); SurefireReportMojo mojo = (SurefireReportMojo) lookupMojo( "report", testPom ); assertNotNull( mojo ); File outputDir = (File) getVariableValueFromObject( mojo, "outputDirectory" ); boolean showSuccess = ( (Boolean) getVariableValueFromObject( mojo, "showSuccess" ) ).booleanValue(); File reportsDir = (File) getVariableValueFromObject( mojo, "reportsDirectory" ); String outputName = (String) getVariableValueFromObject( mojo, "outputName" ); File xrefLocation = (File) getVariableValueFromObject( mojo, "xrefLocation" ); boolean linkXRef = ( (Boolean) getVariableValueFromObject( mojo, "linkXRef" ) ).booleanValue(); assertEquals( new File( getBasedir() + "/target/site/unit/basic-surefire-report-test" ), outputDir ); assertTrue( showSuccess ); assertEquals( new File( getBasedir() + "/src/test/resources/unit/basic-surefire-report-test/surefire-reports" ).getAbsolutePath(), reportsDir.getAbsolutePath() ); assertEquals( "surefire-report", outputName ); assertEquals( new File( getBasedir() + "/target/site/unit/basic-surefire-report-test/xref-test" ).getAbsolutePath(), xrefLocation.getAbsolutePath() ); assertTrue( linkXRef ); mojo.execute(); File report = new File( getBasedir(), "target/site/unit/basic-surefire-report-test/surefire-report.html" ); renderer( mojo, report ); assertTrue( report.exists() ); String htmlContent = FileUtils.fileRead( report ); int idx = htmlContent.indexOf( "images/icon_success_sml.gif" ); assertTrue( idx >= 0 ); } private File getUnitBaseDir() throws UnsupportedEncodingException { URL resource = getClass().getResource( "/unit" ); // URLDecoder.decode necessary for JDK 1.5+, where spaces are escaped to %20 return new File( URLDecoder.decode( resource.getPath(), "UTF-8" ) ).getAbsoluteFile(); } public void testBasicSurefireReportIfShowSuccessIsFalse() throws Exception { File testPom = new File( getUnitBaseDir(), "basic-surefire-report-success-false/plugin-config.xml" ); SurefireReportMojo mojo = (SurefireReportMojo) lookupMojo( "report", testPom ); assertNotNull( mojo ); boolean showSuccess = ( (Boolean) getVariableValueFromObject( mojo, "showSuccess" ) ).booleanValue(); assertFalse( showSuccess ); mojo.execute(); File report = new File( getBasedir(), "target/site/unit/basic-surefire-report-success-false/surefire-report.html" ); renderer( mojo, report ); assertTrue( report.exists() ); String htmlContent = FileUtils.fileRead( report ); int idx = htmlContent.indexOf( "images/icon_success_sml.gif" ); assertTrue( idx < 0 ); } public void testBasicSurefireReportIfLinkXrefIsFalse() throws Exception { File testPom = new File( getUnitBaseDir(), "basic-surefire-report-linkxref-false/plugin-config.xml" ); SurefireReportMojo mojo = (SurefireReportMojo) lookupMojo( "report", testPom ); assertNotNull( mojo ); boolean linkXRef = ( (Boolean) getVariableValueFromObject( mojo, "linkXRef" ) ).booleanValue(); assertFalse( linkXRef ); mojo.execute(); File report = new File( getBasedir(), "target/site/unit/basic-surefire-report-success-false/surefire-report.html" ); renderer( mojo, report ); assertTrue( report.exists() ); String htmlContent = FileUtils.fileRead( report ); int idx = htmlContent.indexOf( "./xref-test/com/shape/CircleTest.html#44" ); assertTrue( idx == -1 ); } public void testBasicSurefireReportIfReportingIsNull() throws Exception { File testPom = new File( getUnitBaseDir(), "basic-surefire-report-reporting-null/plugin-config.xml" ); SurefireReportMojo mojo = (SurefireReportMojo) lookupMojo( "report", testPom ); assertNotNull( mojo ); mojo.execute(); File report = new File( getBasedir(), "target/site/unit/basic-surefire-report-reporting-null/surefire-report.html" ); renderer( mojo, report ); assertTrue( report.exists() ); String htmlContent = FileUtils.fileRead( report ); int idx = htmlContent.indexOf( "./xref-test/com/shape/CircleTest.html#44" ); assertTrue( idx < 0 ); } /** * Renderer the sink from the report mojo. * * @param mojo not null * @param outputHtml not null * @throws RendererException if any * @throws IOException if any */ private void renderer( SurefireReportMojo mojo, File outputHtml ) throws RendererException, IOException { Writer writer = null; SiteRenderingContext context = new SiteRenderingContext(); context.setDecoration( new DecorationModel() ); context.setTemplateName( "org/apache/maven/doxia/siterenderer/resources/default-site.vm" ); context.setLocale( Locale.ENGLISH ); try { outputHtml.getParentFile().mkdirs(); writer = WriterFactory.newXmlWriter( outputHtml ); mojo.getSiteRenderer().generateDocument( writer, (SiteRendererSink) mojo.getSink(), context ); } finally { IOUtil.close( writer ); } } } ././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/SurefireReportParserTest.javasurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Su0000644000175000017500000001530011532042545032520 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; /* * 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. */ import junit.framework.TestCase; import org.apache.maven.reporting.MavenReportException; import java.io.File; import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLDecoder; import java.text.NumberFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; /** * @version $Id: SurefireReportParserTest.java 1074755 2011-02-26 00:12:21Z hboutemy $ */ public class SurefireReportParserTest extends TestCase { private SurefireReportParser report; /** {@inheritDoc} */ protected void setUp() throws Exception { super.setUp(); report = new SurefireReportParser(); report.setLocale( Locale.ENGLISH ); } /** {@inheritDoc} */ protected void tearDown() throws Exception { super.tearDown(); report = null; } public void testParseXMLReportFiles() throws MavenReportException, UnsupportedEncodingException { report.setReportsDirectory( getTestDir( "/test-reports" ) ); List suites = report.parseXMLReportFiles(); assertEquals( 8, suites.size() ); Iterator it = suites.iterator(); while ( it.hasNext() ) { ReportTestSuite suite = (ReportTestSuite) it.next(); assertNotNull( suite.getName() + " was not correctly parsed", suite.getTestCases() ); assertNotNull( suite.getName() ); assertNotNull( suite.getPackageName() ); } } private File getTestDir( String path ) throws UnsupportedEncodingException { URL resource = getClass().getResource( path ); // URLDecoder.decode necessary for JDK 1.5+, where spaces are escaped to %20 return new File( URLDecoder.decode( resource.getPath(), "UTF-8" ) ).getAbsoluteFile(); } public void testParseTestSuiteName() { assertEquals( "CircleTest", report.parseTestSuiteName( "Battery: com.shape.CircleTest" ) ); } public void testParseTestSuitePackageName() { assertEquals( "com.shape", report.parseTestSuitePackageName( "Battery: com.shape.CircleTest" ) ); } public void testParseTestCaseName() { assertEquals( "testCase", report.parseTestCaseName( "testCase(com.shape.CircleTest)" ) ); } public void testGetSummary() throws Exception { ReportTestSuite tSuite1 = new ReportTestSuite(); ReportTestSuite tSuite2 = new ReportTestSuite(); tSuite1.setNumberOfErrors( 10 ); tSuite1.setNumberOfFailures( 20 ); tSuite1.setNumberOfSkipped( 2 ); tSuite1.setTimeElapsed( 1.0f ); tSuite1.setNumberOfTests( 100 ); tSuite2.setNumberOfErrors( 10 ); tSuite2.setNumberOfFailures( 20 ); tSuite2.setNumberOfSkipped( 2 ); tSuite2.setTimeElapsed( 1.0f ); tSuite2.setNumberOfTests( 100 ); List suiteList = new ArrayList(); suiteList.add( tSuite1 ); suiteList.add( tSuite2 ); Map testMap = report.getSummary( suiteList ); assertEquals( 20, Integer.parseInt( testMap.get( "totalErrors" ).toString() ) ); assertEquals( 40, Integer.parseInt( testMap.get( "totalFailures" ).toString() ) ); assertEquals( 200, Integer.parseInt( testMap.get( "totalTests" ).toString() ) ); assertEquals( 4, Integer.parseInt( testMap.get( "totalSkipped" ).toString() ) ); NumberFormat numberFormat = report.getNumberFormat(); assertEquals( 2.0f, numberFormat.parse( testMap.get( "totalElapsedTime" ).toString() ) .floatValue(), 0.0f ); assertEquals( 68.00f, numberFormat.parse( (String) testMap.get( "totalPercentage" ) ) .floatValue(), 0 ); } public void testGetSuitesGroupByPackage() { ReportTestSuite tSuite1 = new ReportTestSuite(); ReportTestSuite tSuite2 = new ReportTestSuite(); ReportTestSuite tSuite3 = new ReportTestSuite(); tSuite1.setPackageName( "Package1" ); tSuite2.setPackageName( "Package1" ); tSuite3.setPackageName( "Package2" ); List suiteList = new ArrayList(); suiteList.add( tSuite1 ); suiteList.add( tSuite2 ); suiteList.add( tSuite3 ); Map groupMap = report.getSuitesGroupByPackage( suiteList ); assertEquals( 2, groupMap.size() ); assertEquals( tSuite1, ( (List) groupMap.get( "Package1" ) ).get( 0 ) ); assertEquals( tSuite2, ( (List) groupMap.get( "Package1" ) ).get( 1 ) ); assertEquals( tSuite3, ( (List) groupMap.get( "Package2" ) ).get( 0 ) ); } public void testComputePercentage() throws Exception { NumberFormat numberFormat = report.getNumberFormat(); assertEquals( 70.00f, numberFormat.parse( report.computePercentage( 100, 20, 10, 0 ) ) .floatValue(), 0 ); } public void testGetFailureDetails() { ReportTestSuite tSuite1 = new ReportTestSuite(); ReportTestSuite tSuite2 = new ReportTestSuite(); ReportTestCase tCase1 = new ReportTestCase(); ReportTestCase tCase2 = new ReportTestCase(); ReportTestCase tCase3 = new ReportTestCase(); tCase1.addFailure( null, null ); tCase3.addFailure( null, null ); List tCaseList = new ArrayList(); List tCaseList2 = new ArrayList(); tCaseList.add( tCase1 ); tCaseList.add( tCase2 ); tCaseList2.add( tCase3 ); tSuite1.setTestCases( tCaseList ); tSuite2.setTestCases( tCaseList2 ); List suiteList = new ArrayList(); suiteList.add( tSuite1 ); suiteList.add( tSuite2 ); List failList = report.getFailureDetails( suiteList ); assertEquals( 2, failList.size() ); assertEquals( tCase1, failList.get( 0 ) ); assertEquals( tCase3, failList.get( 1 ) ); } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/surefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/st0000755000175000017500000000000011645102475032562 5ustar tonytony././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireRepMavenProjectStub2.javasurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/st0000644000175000017500000000245711241014145032560 0ustar tonytonypackage org.apache.maven.plugins.surefire.report.stubs; /* * 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. */ import org.apache.maven.plugin.testing.stubs.MavenProjectStub; import java.util.ArrayList; import java.util.List; /** * @author Allan Ramirez * @version $Id: SurefireRepMavenProjectStub2.java 803879 2009-08-13 13:43:01Z vsiveton $ */ public class SurefireRepMavenProjectStub2 extends MavenProjectStub { /** {@inheritDoc} */ public List getReportPlugins() { return new ArrayList(); } } ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireRepMavenProjectStub.javasurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/st0000644000175000017500000000344211241014145032553 0ustar tonytonypackage org.apache.maven.plugins.surefire.report.stubs; /* * 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. */ import org.apache.maven.model.Model; import org.apache.maven.model.ReportPlugin; import org.apache.maven.model.Reporting; import org.apache.maven.plugin.testing.stubs.MavenProjectStub; import java.util.List; /** * @author Allan Ramirez * @version $Id: SurefireRepMavenProjectStub.java 803879 2009-08-13 13:43:01Z vsiveton $ */ public class SurefireRepMavenProjectStub extends MavenProjectStub { /** {@inheritDoc} */ public List getReportPlugins() { Reporting reporting = new Reporting(); ReportPlugin reportPlugin = new ReportPlugin(); reportPlugin.setGroupId( "org.apache.maven.plugins" ); reportPlugin.setArtifactId( "maven-jxr-plugin" ); reportPlugin.setVersion( "2.0-SNAPSHOT" ); reporting.addPlugin( reportPlugin ); Model model = new Model(); model.setReporting( reporting ); return reporting.getPlugins(); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/ReportTestSuiteTest.javasurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Re0000644000175000017500000000533611241014145032477 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; /* * 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. */ import junit.framework.TestCase; import java.util.ArrayList; import java.util.List; /** * @version $Id: ReportTestSuiteTest.java 803879 2009-08-13 13:43:01Z vsiveton $ */ public class ReportTestSuiteTest extends TestCase { private ReportTestSuite tSuite; /** {@inheritDoc} */ protected void setUp() throws Exception { super.setUp(); tSuite = new ReportTestSuite(); } /** {@inheritDoc} */ protected void tearDown() throws Exception { super.tearDown(); tSuite = null; } public void testSetTestCases() { ReportTestCase tCase = new ReportTestCase(); List tCaseList = new ArrayList(); tCaseList.add( tCase ); tSuite.setTestCases( tCaseList ); assertEquals( tCase, tSuite.getTestCases().get( 0 ) ); } public void testSetNumberdOfErrors() { tSuite.setNumberOfErrors( 9 ); assertEquals( 9, tSuite.getNumberOfErrors() ); } public void testSetNumberOfFailures() { tSuite.setNumberOfFailures( 10 ); assertEquals( 10, tSuite.getNumberOfFailures() ); } public void testSetNumberOfSkipped() { tSuite.setNumberOfSkipped( 5 ); assertEquals( 5, tSuite.getNumberOfSkipped() ); } public void testSetNumberOfTests() { tSuite.setNumberOfTests( 11 ); assertEquals( 11, tSuite.getNumberOfTests() ); } public void testSetName() { tSuite.setName( "Suite Name" ); assertEquals( "Suite Name", tSuite.getName() ); } public void testSetPackageName() { tSuite.setPackageName( "Suite Package Name" ); assertEquals( "Suite Package Name", tSuite.getPackageName() ); } public void testSetTimeElapsed() { tSuite.setTimeElapsed( .06f ); assertEquals( .06f, tSuite.getTimeElapsed(), 0.0 ); } } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/ReportTestCaseTest.javasurefire-2.10/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Re0000644000175000017500000000403011241014145032465 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; /* * 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. */ import junit.framework.TestCase; /** * @author Jontri * @version $Id: ReportTestCaseTest.java 803879 2009-08-13 13:43:01Z vsiveton $ */ public class ReportTestCaseTest extends TestCase { private ReportTestCase tCase; /** {@inheritDoc} */ protected void setUp() throws Exception { super.setUp(); tCase = new ReportTestCase(); } /** {@inheritDoc} */ protected void tearDown() throws Exception { super.tearDown(); tCase = null; } public void testSetName() { tCase.setName( "Test Case Name" ); assertEquals( "Test Case Name", tCase.getName() ); } public void testSetTime() { tCase.setTime( .06f ); assertEquals( .06f, tCase.getTime(), 0.0 ); } public void testSetFailure() { tCase.addFailure( "messageVal", "typeVal" ); assertEquals( "messageVal", tCase.getFailure().get( "message" ) ); assertEquals( "typeVal", tCase.getFailure().get( "type" ) ); } public void testSetFullName() { tCase.setFullName( "Test Case Full Name" ); assertEquals( "Test Case Full Name", tCase.getFullName() ); } } surefire-2.10/maven-surefire-report-plugin/src/test/resources/0000755000175000017500000000000011645102475023346 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/0000755000175000017500000000000011645102475026021 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-com.shape.PointTest.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-com.shape.PointTest.0000644000175000017500000002236710567521075032421 0ustar tonytony junit.framework.AssertionFailedError: expected:<0> but was:<1> at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.failNotEquals(Assert.java:282) at junit.framework.Assert.assertEquals(Assert.java:64) at junit.framework.Assert.assertEquals(Assert.java:201) at junit.framework.Assert.assertEquals(Assert.java:207) at com.shape.PointTest.testXY(PointTest.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203) at org.codehaus.surefire.Surefire.run(Surefire.java:152) at org.codehaus.surefire.Surefire.run(Surefire.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:316) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-classWithNoTests.NoMethodsTestCase.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-classWithNoTests.NoM0000644000175000017500000001230010766555661032502 0ustar tonytony ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-junit.twoTestCaseSuite.WrapperTestSuite.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-junit.twoTestCaseSui0000644000175000017500000001245710766555661032624 0ustar tonytony surefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-AntUnit.xml0000644000175000017500000000056611226423503030702 0ustar tonytony 1 0 0 surefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/com.shape.CircleTest.txt0000644000175000017500000001650110410161446032472 0ustar tonytony------------------------------------------------------------------------------- Battery: com.shape.CircleTest ------------------------------------------------------------------------------- testX(com.shape.CircleTest) testY(com.shape.CircleTest) testXY(com.shape.CircleTest) testRadius(com.shape.CircleTest) [ stdout ] --------------------------------------------------------------- [ stderr ] --------------------------------------------------------------- [ stacktrace ] ----------------------------------------------------------- junit.framework.AssertionFailedError: expected:<20> but was:<10> at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.failNotEquals(Assert.java:282) at junit.framework.Assert.assertEquals(Assert.java:64) at junit.framework.Assert.assertEquals(Assert.java:201) at junit.framework.Assert.assertEquals(Assert.java:207) at com.shape.CircleTest.testRadius(CircleTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:190) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:155) at org.codehaus.surefire.Surefire.run(Surefire.java:105) at org.codehaus.surefire.Surefire.run(Surefire.java:59) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:83) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:218) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:361) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:472) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:445) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:431) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:268) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:127) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:292) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) testProperties(com.shape.CircleTest) [ stdout ] --------------------------------------------------------------- [ stderr ] --------------------------------------------------------------- [ stacktrace ] ----------------------------------------------------------- java.lang.ArithmeticException: / by zero at com.shape.CircleTest.testProperties(CircleTest.java:44) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:190) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:155) at org.codehaus.surefire.Surefire.run(Surefire.java:105) at org.codehaus.surefire.Surefire.run(Surefire.java:59) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:83) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:218) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:361) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:472) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:445) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:431) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:268) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:127) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:292) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) testPI(com.shape.CircleTest) testCircumference(com.shape.CircleTest) testDiameter(com.shape.CircleTest) surefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-NoPackageTest.xml0000644000175000017500000004635710743236762032034 0ustar tonytony junit.framework.AssertionFailedError: " at junit.framework.Assert.fail(Assert.java:47) at NoPackageTest.testQuote(NoPackageTest.java:23) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.maven.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:242) at org.apache.maven.surefire.battery.JUnitBattery.execute(JUnitBattery.java:216) at org.apache.maven.surefire.Surefire.executeBattery(Surefire.java:215) at org.apache.maven.surefire.Surefire.run(Surefire.java:163) at org.apache.maven.surefire.Surefire.run(Surefire.java:87) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.maven.surefire.SurefireBooter.runTestsInProcess(SurefireBooter.java:300) at org.apache.maven.surefire.SurefireBooter.run(SurefireBooter.java:216) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:369) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:415) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:539) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:480) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecycle(DefaultLifecycleExecutor.java:867) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(DefaultLifecycleExecutor.java:739) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:510) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:493) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:463) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:311) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:274) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:140) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115) at org.apache.maven.cli.MavenCli.main(MavenCli.java:249) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) junit.framework.AssertionFailedError: < at junit.framework.Assert.fail(Assert.java:47) at NoPackageTest.testLower(NoPackageTest.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.maven.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:242) at org.apache.maven.surefire.battery.JUnitBattery.execute(JUnitBattery.java:216) at org.apache.maven.surefire.Surefire.executeBattery(Surefire.java:215) at org.apache.maven.surefire.Surefire.run(Surefire.java:163) at org.apache.maven.surefire.Surefire.run(Surefire.java:87) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.maven.surefire.SurefireBooter.runTestsInProcess(SurefireBooter.java:300) at org.apache.maven.surefire.SurefireBooter.run(SurefireBooter.java:216) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:369) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:415) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:539) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:480) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecycle(DefaultLifecycleExecutor.java:867) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(DefaultLifecycleExecutor.java:739) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:510) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:493) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:463) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:311) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:274) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:140) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115) at org.apache.maven.cli.MavenCli.main(MavenCli.java:249) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) junit.framework.AssertionFailedError: > at junit.framework.Assert.fail(Assert.java:47) at NoPackageTest.testGreater(NoPackageTest.java:33) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.maven.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:242) at org.apache.maven.surefire.battery.JUnitBattery.execute(JUnitBattery.java:216) at org.apache.maven.surefire.Surefire.executeBattery(Surefire.java:215) at org.apache.maven.surefire.Surefire.run(Surefire.java:163) at org.apache.maven.surefire.Surefire.run(Surefire.java:87) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.maven.surefire.SurefireBooter.runTestsInProcess(SurefireBooter.java:300) at org.apache.maven.surefire.SurefireBooter.run(SurefireBooter.java:216) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:369) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:415) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:539) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:480) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecycle(DefaultLifecycleExecutor.java:867) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(DefaultLifecycleExecutor.java:739) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:510) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:493) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:463) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:311) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:274) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:140) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115) at org.apache.maven.cli.MavenCli.main(MavenCli.java:249) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-NoTimeTestCaseTest.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-NoTimeTestCaseTest.x0000644000175000017500000001524210743236762032467 0ustar tonytony ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-com.shape.CircleTest.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-com.shape.CircleTest0000644000175000017500000003220210567521075032440 0ustar tonytony junit.framework.AssertionFailedError: expected:<20> but was:<10> at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.failNotEquals(Assert.java:282) at junit.framework.Assert.assertEquals(Assert.java:64) at junit.framework.Assert.assertEquals(Assert.java:201) at junit.framework.Assert.assertEquals(Assert.java:207) at com.shape.CircleTest.testRadius(CircleTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203) at org.codehaus.surefire.Surefire.run(Surefire.java:152) at org.codehaus.surefire.Surefire.run(Surefire.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:316) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [OUT] : Getting the diameter [ERR] : Getting the Circumference java.lang.ArithmeticException: / by zero at com.shape.CircleTest.testProperties(CircleTest.java:44) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203) at org.codehaus.surefire.Surefire.run(Surefire.java:152) at org.codehaus.surefire.Surefire.run(Surefire.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:316) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [OUT] : Getting the diameter [ERR] : Getting the Circumference ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/com.shapeclone.CircleTest.txtsurefire-2.10/maven-surefire-report-plugin/src/test/resources/test-reports/com.shapeclone.CircleTest0000644000175000017500000001657010410161446032703 0ustar tonytony------------------------------------------------------------------------------- Battery: com.shapeclone.CircleTest ------------------------------------------------------------------------------- testX(com.shapeclone.CircleTest) testY(com.shapeclone.CircleTest) testXY(com.shapeclone.CircleTest) testRadius(com.shapeclone.CircleTest) [ stdout ] --------------------------------------------------------------- [ stderr ] --------------------------------------------------------------- [ stacktrace ] ----------------------------------------------------------- junit.framework.AssertionFailedError: expected:<20> but was:<10> at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.failNotEquals(Assert.java:282) at junit.framework.Assert.assertEquals(Assert.java:64) at junit.framework.Assert.assertEquals(Assert.java:201) at junit.framework.Assert.assertEquals(Assert.java:207) at com.shapeclone.CircleTest.testRadius(CircleTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:190) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:155) at org.codehaus.surefire.Surefire.run(Surefire.java:105) at org.codehaus.surefire.Surefire.run(Surefire.java:59) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:83) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:218) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:361) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:472) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:445) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:431) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:268) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:127) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:292) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) testProperties(com.shapeclone.CircleTest) [ stdout ] --------------------------------------------------------------- [ stderr ] --------------------------------------------------------------- [ stacktrace ] ----------------------------------------------------------- java.lang.ArithmeticException: / by zero at com.shapeclone.CircleTest.testProperties(CircleTest.java:44) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:190) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:155) at org.codehaus.surefire.Surefire.run(Surefire.java:105) at org.codehaus.surefire.Surefire.run(Surefire.java:59) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:83) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:218) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:361) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:472) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:445) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:431) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:268) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:127) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:292) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) testPI(com.shapeclone.CircleTest) testCircumference(com.shapeclone.CircleTest) testDiameter(com.shapeclone.CircleTest) surefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/0000755000175000017500000000000011645102475024325 5ustar tonytony././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-reporting-null/surefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-reporting-n0000755000175000017500000000000011645102475032724 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-reporting-null/surefire-reports/surefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-reporting-n0000755000175000017500000000000011645102475032724 5ustar tonytony././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-reporting-null/surefire-reports/TEST-com.shape.CircleTest.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-reporting-n0000644000175000017500000003220210743236762032732 0ustar tonytony junit.framework.AssertionFailedError: expected:<20> but was:<10> at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.failNotEquals(Assert.java:282) at junit.framework.Assert.assertEquals(Assert.java:64) at junit.framework.Assert.assertEquals(Assert.java:201) at junit.framework.Assert.assertEquals(Assert.java:207) at com.shape.CircleTest.testRadius(CircleTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203) at org.codehaus.surefire.Surefire.run(Surefire.java:152) at org.codehaus.surefire.Surefire.run(Surefire.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:316) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [OUT] : Getting the diameter [ERR] : Getting the Circumference java.lang.ArithmeticException: / by zero at com.shape.CircleTest.testProperties(CircleTest.java:44) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203) at org.codehaus.surefire.Surefire.run(Surefire.java:152) at org.codehaus.surefire.Surefire.run(Surefire.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:316) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [OUT] : Getting the diameter [ERR] : Getting the Circumference ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-reporting-null/plugin-config.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-reporting-n0000644000175000017500000000316010743236762032733 0ustar tonytony maven-surefire-report-plugin ${basedir}/target/site/unit/basic-surefire-report-reporting-null true ${basedir}/src/test/resources/unit/basic-surefire-report-reporting-null/surefire-reports surefire-report ${basedir}/target/site/unit/basic-surefire-report-test/xref-test true ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-success-false/surefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-success-fal0000755000175000017500000000000011645102475032670 5ustar tonytony././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-success-false/surefire-reports/surefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-success-fal0000755000175000017500000000000011645102475032670 5ustar tonytony././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-success-false/surefire-reports/TEST-com.shape.CircleTest.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-success-fal0000644000175000017500000003220210743236762032676 0ustar tonytony junit.framework.AssertionFailedError: expected:<20> but was:<10> at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.failNotEquals(Assert.java:282) at junit.framework.Assert.assertEquals(Assert.java:64) at junit.framework.Assert.assertEquals(Assert.java:201) at junit.framework.Assert.assertEquals(Assert.java:207) at com.shape.CircleTest.testRadius(CircleTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203) at org.codehaus.surefire.Surefire.run(Surefire.java:152) at org.codehaus.surefire.Surefire.run(Surefire.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:316) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [OUT] : Getting the diameter [ERR] : Getting the Circumference java.lang.ArithmeticException: / by zero at com.shape.CircleTest.testProperties(CircleTest.java:44) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203) at org.codehaus.surefire.Surefire.run(Surefire.java:152) at org.codehaus.surefire.Surefire.run(Surefire.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:316) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [OUT] : Getting the diameter [ERR] : Getting the Circumference ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-success-false/plugin-config.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-success-fal0000644000175000017500000000316710743236762032706 0ustar tonytony maven-surefire-report-plugin ${basedir}/target/site/unit/basic-surefire-report-success-false false ${basedir}/src/test/resources/unit/basic-surefire-report-success-false/surefire-reports surefire-report ${basedir}/target/site/unit/basic-surefire-report-success-false/xref-test true ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-linkxref-false/surefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-linkxref-fa0000755000175000017500000000000011645102475032666 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-linkxref-false/surefire-reports/surefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-linkxref-fa0000755000175000017500000000000011645102475032666 5ustar tonytony././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-linkxref-false/surefire-reports/TEST-com.shape.CircleTest.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-linkxref-fa0000644000175000017500000003220210743236762032674 0ustar tonytony junit.framework.AssertionFailedError: expected:<20> but was:<10> at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.failNotEquals(Assert.java:282) at junit.framework.Assert.assertEquals(Assert.java:64) at junit.framework.Assert.assertEquals(Assert.java:201) at junit.framework.Assert.assertEquals(Assert.java:207) at com.shape.CircleTest.testRadius(CircleTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203) at org.codehaus.surefire.Surefire.run(Surefire.java:152) at org.codehaus.surefire.Surefire.run(Surefire.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:316) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [OUT] : Getting the diameter [ERR] : Getting the Circumference java.lang.ArithmeticException: / by zero at com.shape.CircleTest.testProperties(CircleTest.java:44) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203) at org.codehaus.surefire.Surefire.run(Surefire.java:152) at org.codehaus.surefire.Surefire.run(Surefire.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:316) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [OUT] : Getting the diameter [ERR] : Getting the Circumference ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-linkxref-false/plugin-config.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-linkxref-fa0000644000175000017500000000317210743236762032700 0ustar tonytony maven-surefire-report-plugin ${basedir}/target/site/unit/basic-surefire-report-linkxref-false true ${basedir}/src/test/resources/unit/basic-surefire-report-linkxref-false/surefire-reports surefire-report ${basedir}/target/site/unit/basic-surefire-report-linkxref-false/xref-test false surefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-test/0000755000175000017500000000000011645102475031516 5ustar tonytony././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-test/surefire-reports/surefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-test/surefi0000755000175000017500000000000011645102475032734 5ustar tonytony././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-test/surefire-reports/TEST-com.shape.CircleTest.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-test/surefi0000644000175000017500000003220210743236762032742 0ustar tonytony junit.framework.AssertionFailedError: expected:<20> but was:<10> at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.failNotEquals(Assert.java:282) at junit.framework.Assert.assertEquals(Assert.java:64) at junit.framework.Assert.assertEquals(Assert.java:201) at junit.framework.Assert.assertEquals(Assert.java:207) at com.shape.CircleTest.testRadius(CircleTest.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203) at org.codehaus.surefire.Surefire.run(Surefire.java:152) at org.codehaus.surefire.Surefire.run(Surefire.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:316) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [OUT] : Getting the diameter [ERR] : Getting the Circumference java.lang.ArithmeticException: / by zero at com.shape.CircleTest.testProperties(CircleTest.java:44) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246) at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220) at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203) at org.codehaus.surefire.Surefire.run(Surefire.java:152) at org.codehaus.surefire.Surefire.run(Surefire.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104) at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186) at org.apache.maven.cli.MavenCli.main(MavenCli.java:316) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [OUT] : Getting the diameter [ERR] : Getting the Circumference ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-test/plugin-config.xmlsurefire-2.10/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-test/plugin0000644000175000017500000000313310743236762032744 0ustar tonytony maven-surefire-report-plugin ${basedir}/target/site/unit/basic-surefire-report-test true ${basedir}/src/test/resources/unit/basic-surefire-report-test/surefire-reports surefire-report ${basedir}/target/site/unit/basic-surefire-report-test/xref-test true surefire-2.10/maven-surefire-report-plugin/src/site/0000755000175000017500000000000011645102475021321 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/site/site.xml0000644000175000017500000000301010567521075023004 0ustar tonytony

surefire-2.10/maven-surefire-report-plugin/src/site/apt/0000755000175000017500000000000011645102475022105 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/site/apt/usage.apt.vm0000644000175000017500000000337511237265573024356 0ustar tonytony ------ Usage ------ Allan Ramirez ------ July 2006 ------ ~~ Copyright 2006 The Apache Software Foundation. ~~ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Usage * Generate the report as part of Project Reports To generate the Surefire report as part of the site generation, add the following in the \ section of your POM: +---+ ... org.apache.maven.plugins maven-surefire-report-plugin ${project.version} ... +---+ When the <<>> is invoked, the report will be automatically included in the Project Reports menu as shown in the figure below. [images/surefire-sample1.PNG] Sample Surefire Report * Generate the report as standalone The Surefire report can also generate the report using its standalone goal: +---+ mvn surefire-report:report +---+ A HTML report should be generated in <<<$\{basedir\}/target/site/surefire-report.html>>>. [images/surefire-sample2.PNG] Sample standalone surefire-report surefire-2.10/maven-surefire-report-plugin/src/site/apt/examples/0000755000175000017500000000000011645102475023723 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/site/apt/examples/show-failures.apt.vm0000644000175000017500000000313611237265573027653 0ustar tonytony ------ Showing Failure Tests ------ Allan Ramirez ------ July 2006 ------ ~~ Copyright 2006 The Apache Software Foundation. ~~ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Showing Failure Tests By default, the Surefire Report Plugin shows all test result status (success and failures) in the generated HTML. To be able to show the failures only, the property <> should be set to <>. +----+ [...] org.apache.maven.plugins maven-surefire-report-plugin ${project.version} false [...] +----+ Then execute <<>> for the report generation. It can also be set via commandline with the standalone goal. +----+ mvn surefire-report:report -DshowSuccess=false +----+ surefire-2.10/maven-surefire-report-plugin/src/site/apt/examples/changing-report-name.apt.vm0000644000175000017500000000272711237265573031075 0ustar tonytony ------ Changing Report Name ------ Allan Ramirez ------ July 2006 ------ ~~ Copyright 2006 The Apache Software Foundation. ~~ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Changing Report Name In order to configure the file name of the generated report(which is <"surefire-report"> by default), the <> property should be set to its new name. +----+ [...] org.apache.maven.plugins maven-surefire-report-plugin ${project.version} newname [...] +----+ And after executing the <<>>, the generated report file is named to <>. surefire-2.10/maven-surefire-report-plugin/src/site/apt/examples/report-custom-location.apt.vm0000644000175000017500000000453411550576312031511 0ustar tonytony ------ Custom Location of the Surefire Report ------ Allan Ramirez ------ July 2006 ------ ~~ Copyright 2006 The Apache Software Foundation. ~~ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Configuring the Output Location as part of the Project Reports To change the location of the generated output report along with other project reports. The <> property of both <<>> and <<>> should be set to the new path. For more information, see the documentation of the {{{http://maven.apache.org/plugins/maven-site-plugin/}Maven Site Plugin}}. +----+ [...] org.apache.maven.plugins maven-surefire-report-plugin ${project.version} ${basedir}/target/newsite org.apache.maven.plugins maven-site-plugin 2.1 ${basedir}/target/newsite [...] +----+ Please take note that if the <> of the Site Plugin is not configured, the output location of the Surefire report will still be the default. * Configuring the Output Location using Standalone Goal To change the location of the generated output report using the standalone goal, the <> property should be set to the new path. +---+ mvn surefire-report:report -DoutputDirectory=newpath +---+ surefire-2.10/maven-surefire-report-plugin/src/site/apt/examples/cross-referencing.apt.vm0000644000175000017500000000511311237265573030476 0ustar tonytony ------ Source Code Cross Reference ------ Allan Ramirez ------ July 2006 ------ ~~ Copyright 2006 The Apache Software Foundation. ~~ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Source Code Cross Reference There are times when we need to know right away the line number of the source code that caused the failure of the test. The Surefire Report Plugin has the capability to cross reference the source code that made the test failed. To be able to activate it, the <<>> should also be declared in the \ section of the POM along with the <<>>. For more details, please read the documentation of the {{{http://maven.apache.org/plugins/maven-jxr-plugin/}Maven JXR Plugin}}. +----+ [...] org.apache.maven.plugins maven-surefire-report-plugin ${project.version} org.apache.maven.plugins maven-jxr-plugin 2.1 [...] +----+ After executing <<>> for site generation, You'll notice that from the <> section of the report, the link is available to redirect you to the source code that caused the failure. From the figure below the code that caused the failure is [../images/failure-details.PNG] Failure Details The link will redirect you to the source by clicking it. [../images/xref.PNG] The source * Disable the Cross Reference Link To disable the link to the source code, the <> property should be set to <>. Or another way is by not declaring the <<>> to the \ section. surefire-2.10/maven-surefire-report-plugin/src/site/apt/index.apt0000644000175000017500000000705711550610266023730 0ustar tonytony ------ Introduction ------ Allan Ramirez ------ July 2006 ------ ~~ Copyright 2006 The Apache Software Foundation. ~~ ~~ 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. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Maven Surefire Report Plugin The Surefire Report Plugin parses the generated <<>> files under <<<$\{basedir\}/target/surefire-reports>>> and renders them to DOXIA which creates the web interface version of the test results. * Goals Overview Surefire Report Plugin only has one goal (the other is a workaround): * {{{./report-mojo.html}surefire-report:report}} Generates the test results report into HTML format. * {{{./report-only-mojo.html}surefire-report:report-only}} This goal does not run the tests, it only builds the reports. It is provided as a work around for {{{http://jira.codehaus.org/browse/SUREFIRE-257}SUREFIRE-257}} As of version 2.8 this plugin requires Maven Site Plugin 2.1 or higher to work properly. Version 2.7.2 and older are still compatible with newer surefire versions, so mixing is possible. [] * Usage General instructions on how to use the Surefire Report Plugin can be found on the {{{./usage.html}usage page}}. Some more specific use cases are described in the examples given below. Last but not least, users occasionally contribute additional examples, tips or errata to the {{{http://docs.codehaus.org/display/MAVENUSER/Surefire+Report+Plugin}plugin's wiki page}}. In case you still have questions regarding the plugin's usage, please have a look at the {{{./faq.html}FAQ}} and feel free to contact the {{{./mail-lists.html}user mailing list}}. The posts to the mailing list are archived and could already contain the answer to your question as part of an older thread. Hence, it is also worth browsing/searching the {{{./mail-lists.html}mail archive}}. If you feel like the plugin is missing a feature or has a defect, you can fill a feature request or bug report in our {{{./issue-tracking.html}issue tracker}}. When creating a new issue, please provide a comprehensive description of your concern. Especially for fixing bugs it is crucial that the developers can reproduce your problem. For this reason, entire debug logs, POMs or most preferably little demo projects attached to the issue are very much appreciated. Of course, patches are welcome, too. Contributors can check out the project from our {{{./source-repository.html}source repository}} and will find supplementary information in the {{{http://maven.apache.org/guides/development/guide-helping.html}guide to helping with Maven}}. * Examples The following examples show how to use the Surefire Report Plugin in more advanced usecases: * {{{./examples/show-failures.html}Showing Failure Tests}} * {{{./examples/changing-report-name.html}Changing Report Name}} * {{{./examples/report-custom-location.html}Configuring the Output Location of the Report}} * {{{./examples/cross-referencing.html}Source Code Cross Reference}} [] surefire-2.10/maven-surefire-report-plugin/src/site/fml/0000755000175000017500000000000011645102475022077 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/site/fml/faq.fml0000644000175000017500000000236311055551363023351 0ustar tonytony The Surefire Report Plugin reruns test. Is this its desired behavior?

No. This is a very known issue for the plugin. Please see SUREFIRE-257 for details.

surefire-2.10/maven-surefire-report-plugin/src/site/resources/0000755000175000017500000000000011645102475023333 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/site/resources/images/0000755000175000017500000000000011645102475024600 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/site/resources/images/failure-details.PNG0000644000175000017500000001324110461030155030207 0ustar tonytony‰PNG  IHDR(› (àgAMA± üaXIDATx^íÝoÌ%Õ]ð}e¬d7«imiÒÄ’Š¥‰«Æ¤±iµ4Ú5šÆ?`c‹‘H †”ûGÝJS­±ª6¥Rª Á „H"ULÙ"Ñ*6J4jlԦƗ»¼À£³†3gΜ™;wî;Ÿ'xvž™s~çsæÞùæÌ.!|Cõèψå¨9W¼zLù¬÷6Õõp}ïíò‡Ì0ÑíѨžð„\¹›=  @€À¡ l1x5?«ä¾a&“ͼºžqôæ§®“QC¾¯æ"ø„GéÃÒWTx.ª§ä‘¸Â!@€ËØbðš–ö$xE+7í+ŸàA«PÍ_ýQC¾¯mÏEvù_î)—Ú“’À|Á«ºÏž¶žðVc´2ÝE=©ÑG9„jCöjþš^H¸qV²„Ó5ÒöÇj„=ëÝ•Œ¨!ê«¢¨¿¢ŸN>¡ý–»êQDCð‰‡ô®a, 0Z`‹Á«ýÏ&ŸÏ䃮ÜPoÏ?WTwWÒEsŸ’/-YÂ)F¾ýQøCkèҮƵí¹èiGŸ¯$@€‹Øbð ‹Ég}&\ñ ··Ú]´#ËÐàö‹7í–{ŸÙŠN…Þ8v7éšk]ÍÕÐ^$«z¯Üö\äGêÉúE¿G(ž&Øbðª®÷͵–pÏ.D¥ ƒWÔE1Õ=Á]$MÃ:Mô¨x¸e¶4ï©e&£+Ž„H q¤ä_.¯¡Ò®óbÕK]Þ¶ç"Ôzþ…ì0FŸã5áËUS °taÁké£U? @`‡‚×ñuM€¬K@ðZ×|- °CÁk‡øº&@€Ö% x­k¾–Ø¡€àµC|] @€ë¼Ö5ßFK€ìP@ðÚ!¾®  @€u ^ëšo£%@€v(^a«/ @€Éžþù#ÕWøÎ @€ÀV¯­òjœ ð‚€àål @€Ì$ xÍ­ @€€àå @€Ì$ xÍ­ @€€àå @€Ì$ xÍ­ @€€àå @€Ì$ xÍ­ @€€àå @€Ì$ xÍ­ @€€àå @€Ì$ xÍ­ @€€àå @€Ì$ xÍ­ @€€àå @€Ì$ xÍ­ @€€àå @€Ì$ xÍ­ @€€àå @€Ì$ xÍ­ @€€àå @€Ì$ xÍ­ @€€àå @€Ì$ xÍ­ @€@Oð:÷ã#G–+•–Æõ­WÝ¿[¨¡̉³[™®Þ·t&ìç`UE€;è^Q‰áÒÞü³óÆÙÜ3úëTƒš{ ‹Oî6®¯äQƒp*«q•—¸“³+7:G @€^aÁ«}á,¹”ö1ý٢YÃèA>p„À¸¾F¯º¶q=‚ºØ¼ÇBXÁ«Ên °¡À¦Á«ëª\_2«ošË$Ñ’Iïõáùó×ìÑÁ«k&¹½YCô}½DºÚIîßbòv%“^å>½KYù˜UÞQ× “Ù.xmø>âp(˜#x5CXÈ2™¬ë2œl­j'“KF¯d›]}µGמ†®}z·GM%}z H5:xõ:”Ôâp(¼ cP2$3VIðjÞfÊd‹M‚Wɬ’XÓµÕn?³0“oÉêQ„YµÓ}Çs÷|îž>ùá_ZൈiR$8`1ÁëÞ?|â?N}¤>òß?ò¸í3ûoÔ¼Â/lR|×á6»IIŽ%@€öS`pðúÇýò¿÷»_¼ãúúÈ¿ßeŸ¸áŠ'¿ð/û9º*ÁkÏ'Hy @àà¯ÝýÈs§>øù“ïª<}Ý·9yâªëoÝs¬dð:÷ùÿÿ¿ºþäÆðÓööÌžÕþM“ê¯õ!Íî’Û÷ÜSy @€ÀPaÁë³õOóÛ¿xöw®=ýþ®|ò=ŸùùW=võÅ÷=üÔÐîçÜ¿pÅ+™–Ú)*ŠMÑ@ꌯ(ÞU?­¢X¾Á9¡ôE€lI`XðúÍÛNýØ»Ï~ôÇOÿÜ›_^WÿŸëég_ù®wo©ÊIš-xu¥¨ÂHçá°I¦[# @`¯ð±ÏüÊgo{ÛÙ[¿ûôµ—ÖG>vÅ…ÿ|ͱg®:ö©Ë/úÐìá «’ʃWóbòd´Ž•\îªW³º–²ê–»ÙÞJ*Œ'0 xÝzÃugoùŽ3'¿åÌ_ûÌÕ/¿ý²ó~æÄKN¾ékþäÇ.üü•GçÑG/¿ðŠïó¸:f8ªsóEgnüºpcñ ?}¬>ò3ïøÚ‡ôÂ?xÇ¿ÿCÜþ}Çßó¾»÷“f\ðJÞøË¯öþ½+[‚×~ž0ª"@€“ ”¯?|Ó¿÷ø^wüß®=þWû£¹°>ò£ßsÞ½?pþ]o?ÿ·¾÷ü_ëy—xÍäUNÒ`æTÛ·'÷°½±*¬yx>x% ²k…l’Qk„ØÒàu×nyëï®:öÔO}â'žúÁ ®>ñ’·ãW½óÒ¯>ù¦—ÞþÖó~õ»Î ßüÂ_ú¶7œØŸá5+Ùù'×w=5ïiúý¿Ë¨jµ¯f\ȯä5»ðBž C]—᨞èê5•)¸žàÞÊ»zÌȯäK6&G]ŽÛ£®Mž®ë¡YÉüÃv…™ó*#ãM! x½°NS’cº.¥™ • ^™“£}±ovZ’ë}êu‘®JÂÄè¡•d¬Aq*E E>L×ëRó¯’•°®‚ÇÇE¼)’«¼ö"xõ^’»®’N¼zSWo¤‹Vtªý“Ë<ͱ$Ù´Á+¶2•DkN½5'ct³ë¤%x­ê}Ù` 8`Ák÷Á«d¥­+xå—jf[ñj稰üêWW¼ko/±±VWÛÛþè U8ÆÂVˆømËÐ °\Á+¼šK2½ãöJLfm&ÿ£®ÐP¼2×ìq—ó®‘,¦+»t­]‹G%s1®ådm^“gtP+¬g¹o=*'@€À:¯ý.^½r3ââÝÌjƒ‚Wµs{Ѩ+ß´/íQ×íkvré¨9Øüe>Naðj(ió%×µsûeÙ•‰KZèA½sQ‚ßuõÎrW‚ï©u¾y5–( xÿäú%ηš  @€ ^‚×O?] @€u ¬7xµo߬kæ–˜]`½Ákvj @€k¼Ö~? 0›@.xE?óW @€ Î=ø4a‹š"@€H ¼(x}å°¾ªÖ˜Œ†X’@îVã’ÆQPk2x=z4ê¿k(8wìB€¦X{ðšFQ+ @€õ¯jÇךœkž}c'@€ÀNÖ¼v­S @`Íë ^V;ªóþ²ï_í À9°Ú©7pìJ`½Ák6ñ “͆‡o>ÌÍ -´ÿŒ+¬¤˜f_Q/õÆõî( °¡Àzƒ×l«%Y!3‹¾áù1í’Øæcém!Ú¡ù×ö±³›Ï‚ @à0Ö¼êùëZ In¯.ÞÕªšß·Ï‰®F’K/í3‹7uïu íÑ®3ª6_|º’i¦=„&N2!umÜD#ÅšÓt¯X£ @€E ¬7xU«] $™íÉÈ•¹ügÖ`štµÐ,’‹:í€ÕÍ|%<+^‹~óR<–(°ÞàÕ\1J®T%“JWdÙaðê­3“/“a(™r2Y­kU©mÒ»¥w*³š•—GÏ%¾nÕL€ XoðJ®xu­¬$AáºQ{Q§^wi‡ƒhK>X±kÇÍÂȸ½à5¡F&@'—Ö¬x-ômKÙX®Àzƒ×ž¬x%OÂH7Cðj¦¢A©4{W¼6Ô¼–ûºU9,T`½Ákô3^ÉüQ² ”Œzɧ|ð*é«ëÙ©üŠWa¿…f•Ĭ|%ës…#µâµÐw(e @àÀÖ¼šù©^×iÎnïbOWLIŽhçvÉîêä‘é«·Îf#ù[™åÁ««ÓÌ(’k`ÕÆ©4zGšœè{Iì³Àzƒ×a<ß“\0tÂh¡ëM *uò㘜Eƒ °=õ¯í™ÎÙòæYgD ¼æœ)} @€ °Þàu«#bSt?nÄËà`‚×aœ#fÐ! °+õ¯J¼ºôúïšvõÚÓ/¬P`íÁk…SnÈ @€À®rÁ+ú™¿ @€L(p¤úš°EM @€$/' @`&sÁËÿ @€fø_ÁGÈ/]&øÌIEND®B`‚surefire-2.10/maven-surefire-report-plugin/src/site/resources/images/surefire-sample1.PNG0000644000175000017500000034422610461030155030333 0ustar tonytony‰PNG  IHDRÜ 9›)\gAMA± üaÿÇIDATx^ì`^ÕÙÇ ƒÁ|6lÀ1`63`Øpw—RZê´´Ô©»»¦mÚ¦i’Æ¥qwwww·æûÝ÷Ioß&•´ñôÜuá¾çýß#ÿû<ÏyΰaêR( …€B@!0@hS—B@! P( ~E õkTá …€B@! P(Ú)Q@! P( ÀI¤¤¡¡¡H]}ˆ@aaa}}ý€èª …€B@! èoN"%‰‰‰‡ö÷÷÷VWï#àããsôèQ??¿þîª|…€B@! P N"%öööeee¹¹¹yêêM@‰LRR’……Å€èª …€B@! èoN"%‘‘‘åååêêeª««srr¬¬¬ú»¨ò …€B@!0 èHJÜÜÜêêêJÕÕûÀy²²²)ã@UB! P(§%%(qÔÕ{Ày*++)C@UA! P( Š”ôñ8SΊ” ” ê¡P(EJ )9vì{¶Q®©K! P(ƒ–––3óŸ.‘’ö罌K>ç|(%<IIUUû”}Õ¥P( Á†ÞFÙyÚ]RÂòÉf¶Šp±. ÎXŠä\ç—|(1Áð\mJØ¡|èС u) …€B`°!€Ï‘ýû÷ÇÆÆv‹”ÈÚÙÔÔ„ïQEVSîá(%%%"ö0¾éÈOã6›@‘ØK†ò¨s|=Ã!FA:7çø ¥¥¥äX\\,Ê!â`î D®­­åæ¡ ‘{ò;v¬q…ˆßÚÚJˆx[GÃ_,'à+C›—œ)Aö•œœœššš¢.…€B@! P I888t—”ÀàažÌŸ?§jÏ>û,¼ÄÕÕõƒ>€=àtÆŒÜà.ý•W^yóÍ7a'g>ÿüsG5eÊSSSÊìÙ³Ñ'-Y²dÚ´i<Ú¶mÛ /¼0gÎŒµµ5™ì§Ÿ~Š“ÓÑ£GÂQ†¶–§›¤^¢.…€B@! P Xâ{†”ÔÔÔ¤¥¥AJvíÚ™xÿý÷Ÿxâ‰×^{~.\¸ð¦›nÚ¾}û•W^þÔSOÝ{ï½vvvíÖ³†ÿ|÷ÝwÄDЂ˜äøÃÕW_ ƒùÝï~ÿî»ïN˜0áé§Ÿ&š‹‹ ‘¾ðwÙ²e$ÚÂ’ž%%§äʈSEgU•T( ¡@Ï“’;wB ×_=7·ß~»0D1”û«®ºêÏþ3J#¡,\ÔƒøüüÓŸþÄÏ›o¾ù†n€ßrÉ%—ðwâĉß|óÍOúSL8ùÉétüE¸Bd%)1ÖsqM‰®¾9Ñ} |Dû™––š‘‘–‘‘šž.O…© 펮Z§P(#%Ø|`œ‚„ãñÇ_¿~ý_þò1 Aÿ{¸çž{0€å¸œ?þñèb07‘pÎ0Ô`Ëß·ß~[È©n¼ñÆßüæ7ÈH„š`ˆ‹€„p¨Ì]wÝÅ 1_}õUn™ô¾Ÿ÷~.á\wßt&%B; "é99é¹¹—deqÏ¿´œ¡&¿¿ª* …ÀF gH‰ì\…[°|nÙ²Ráhnn£Ô;v莑—lذaݺu¨ràŒEÄj3¾ï%‰»»»°€€"¯Zµ ƒÌPlmmÙqM8g³Ë ÓWÙ<<$/}gõ¹ž}Ó”Û€|$'%…YZz.\¸ÿÁ÷þå/Öï¾ë½|y°‰I¼ŸŸFS:YÅvi×òœ¬2¶¤m'F:Èiô']MÕ¹N´ådòd\íÑ©T'’×M‘°!<±©¦)ƒ#%쬉‹‹KJJB^Â¢È®à„„„˜˜˜èèhB‡,[Ù§ÊO‰CÙüEB81Ù-"©ˆ™ì„@Î|‘øÜ?lsŽŽåpCÒÕ‹ÖÁᰘ閤Ä@IÒ³³BCm>ø`Ó¥—®6l¥áßšaÃÖ ¶jØ0³'Ÿ„¯¤efBMDv¢ISÒÓ5áJffz^^{ÈqqJ{œ¼¼ÔÌL-ŽAâ"ñE”–HFBÚõCV¤ýËË#Ï.¥2'Ê&ððW«dZÚ ¡ÎÉ5Q™˜ÔAä@$‘¬ •Ñ©Cvv{àà·ªÖ …€B`H"Ðc¤„¯y¤˜zè›hä"ÄøÞ×·=J§G'bJ ‰ ßËÏàÀÐ ã<õÌ‡Ø 2¡°°0äIÝ!%B,Xí>ÿ|µ‚|è!÷iÓ<çÍsŸ>Ýþã·]sÍþGMNH`!OŠ‹‹÷÷ Šóõ%ΑÅ}|``¬¿» JFFŒ—W{œ¸¸Ì¢¢¤øøOOx+=¢Œ‚RAcü6@*ooIE)z*"tJ¥%”TiiÝIK‹ £b!!)ÉÉiªÁDHŒŽÖkÛÈ(*ÒJ J ‹ àŸÖŒ Çð/==!<<ÎÏ/>88%1Qc«¢Nzà€ïÊ•I üô]¿~šØý·¿…<˜]Uå¾dÉλî"p÷m·if(xc+*ÚzóÍûþþ÷wÝå³iS„••ÕóÏï¸óN×É“3KKÓóóýV¬8ü ¦ÿ;¤Œ(†2KJ¶ýþ÷û|pçÝw{­_qäˆÕ‹/î¸û&ñˆú’êÅÉÖ}ÆŒdè‚—~tüx§¯¾:ðÐCÔ ­“ÝG¹L˜úˆHÆsÍšwÞI MpïE‹Lï»Ïü±Ç¾ýv×½÷î¹ç÷¹sµš§§#Ñ!‚åsÏÑ"ë?LŠŽnçLƒsèªZ+ ¡‡@‘1+9ÃU^ÎY6¥û\"?[jw40±²¼¬ª¢œ†¿ é¹n!Iåe¥•åüÑþjÙÊJ«*Ë+ ÷²Å¦­©æ{ôÛÐÖ†šrC‰ÄÑ”–V”—’OCM¥ghrDbV}M…•WL`Lz59P墑™”+©ÅÕMI 4S´6› ’’£Ó¦Á²++ó[[ù›YX¨)D’“sjk=fÏFš‚NåNà–-¹MMöãÇ/6L4>šš&++»¢b¡!1·ýú×k/»l…á~ÃÅ;ƒÊ2Cd"Àü¶mQGvuõ"£TëôT]ä<><ÜaäÈ ]¤¥2°™ØÐPrnqè™g @T,£°pï½÷†XYÅGGc ä½lÙ–_ÿRBœ SÓì²2¸ËÑ™3á@ä _ ض-:00.$ýQ˜…ÅÖ_þ’È[.½”pèKNuµõoPm·Ýëã£ÉZ”îfPÏ^ªò …ÀC H‰ÈQàá ™¬a%¥%÷~µûãÅ6Ÿ-µÏÊ-Xiæ÷Ð8Ó+ö:GÌÙíùê, Ê/4õyašùôšì¤¢|ñ~ŸÚ<4ÖôˆWlIuåk³‰slíá }.­õÕk-ßœkõáb›§~nªÙ²¾ûœÃÝÂ’ .dûÒ曬ƒ¡;æž1iòæ\ËMG‚5)‹&0Ð~ê»OJ4ëΜ¿·^~9ÂVt¨€ˆ4éÂ7lÝ È©«óì)A € 3§¤­ ͈K.!Dã »v¡::cO!@ð¸…FeŽ“B\fÍ"•ߪU.½´=ÕΤr=[O%¦0¸ãËklÌokCØCBöíÛvÝu’­ÅÓOßÒI ¥óÁfèZXˆ5Éþûï§™D>üüóp£Ì²2iòü‚r’ÁìتA …€B`0"Ð÷¤$C#%%9ùE_¯rÔvWT¾:Û*5¿ÄÄ1¼­­98.ã­¹Vhg‚£Ó¿]¯í >â—¸äPÀ×H+/íÌ@— Ämvaå5Uï̳æçV›+ßX×”5‡IÞÖÖjêá“Îý:ËÀäœÛe±¶}¼Ä:!-Ç-8y—S?§l÷t ˆo¬«àÂ’n’:¥&àp¾¢¢—o¿Ýû§?!üà+´(tvüñÑnnhs<çÏD'%ÎÓ§µµù,\(¤díEÁoòššœ¾ÿ^¤H>4%ËɤÄiêÔBR-Y"¤„8[¶ä57»L›v"|„íUÅÅ¡‡xà½wÜALʥΛ I¬þ÷¿Î¤%eií5XÈ¢‚~Ùä–[R¢Q!m¼òÊà0di7}Œ£VÕY! P Qúˆ” Ð$%5•y,>à›_)y!¬¢1;·à£¥v‰Ù«ä•Ø$l¶ik® ‹Ïœ°Áµ¶¡n·sôvÇpk¿xìQŠ**¶Û…ò¯²¦ò…6M-‹Í-½bƒâ2V›ûg–••m³ ÝïUTZ¶Á*(0>sÚvŸ˜ŒêúšoV9¤få9ú'¬2ÀÔvÆ÷Ф†Ú!NJÚ5¬ñlª./GZÀ {OÂ8üÜsbhp™<zá5o*˜“Ô7“'wVßt…”è©Î“”¤¦jûhBBíhzŸ+¯d»P„­íŽ[nžqfRB«³ 4ææ›/¿a µ°ØvÅ$<ø÷¿§ÐPº›!:§©f)ƒ¾#%(J°ÿØbòÂæþñyE+´5Õå-;è‡`Ã3<ù‹–^1öþq(kZê«üãŸx`­%"F´9{œÂß™w­M@t:¯A±é¨iÞžgåœÔÖÖäàŸðêÌÃß®s†pÌÜé1k§‡odjPLB‘q\žš|086K߈TkïØ¶cõè‰Â2kªºYI7%%²û&ÜÚÚæÃÙ{‚iâì[óZZrZ[YïEâ¾`FJæÏÇÂCHIÈÞ½È3j@/ˆclSrVRâüý÷Ý'%B,^xm E›ä")II;n¿½‹¤„í6¸Ä±ûòK’ÃKöÞ}7 ÉÍsÎv iK”AÉ ž¸TÕ ¡‰@‘ƒM‰fºq¬ç­X±V”·5Ö–”hÆ"mMµÅ%%˜¦Â0ûh¬«’2ÍuZdž­ ül Do””ò×@V´Ü0Qiª«Òž¶Ô‘”¿m-µìÄ©­®,..ÁÖªJìZšj«‰ßÒPM-¸îFlqº¹û†]'.ÁãÙg7oŽtq‰õòŠõôô߸Q”8&üc”‹Kn]]Èþý[.¿\³8¹è"÷~@Paùê«,êý@JRR IÛ¯¾ºR<ø`”«kÐÎ[¯¹F*sõAiùð]½Ã^’ˆͶ«®Â] dE‰I†æ|¦Z¥P rúŽ”´ó£=¸†M¹íseõe_Ìñ‹­6'BÄU"´Ç9ùg§äFç||ß²¾y@Û¸ou7I ¶Ÿa¶¶Ep`Ʊó–[vßyçîÛo‡yh[Qþïÿ¼—.ÕÌQ {wüõ¯hLXÅ7]qÅ®{îÙsǬå"c-ÁY••ð"MlJ¼,@éCqŒmJ$•®¾aÏqФ8lJ¼/^wÉ%í©6oƦ„ͽiÍõU9cW{¶«…´µÕa#‚‡xH[c ?++ R”²ÒVÔ=Çjµ§•åš"¦Y{Z[Ué©U€çÓMRbXµóqËùÀÅ{”“S„MôÑ£I1199øÑ­!2›i“bc1ÅY;Ö'‰ááaVVvváGŽ Ë¼æöСH{ûp++¼¹ÃcâðY‰$Ž••f¶‚[”À@îµTVVšszöÂää*âx*d¸*‰°¶&>a¢¢ØñK‰zYâV“²dgãÕ§#ø’Ç+j&h•!PÜÁ1Z{YGŽHY:çÐÌ]q˜†Òçê«¡G¸\C¸"'ö òa«ª¯P(†&}GJ** %%‹ö8ú'Á-R3ó_˜Ì¦æÚ/–¸¬2 ÉÌÁsZÙj³à/—¸hNW«Ê[ªö8DOÞè¹åHxFž,Z—þf…kjVAsƒf 2ÀùDT¯û¤Dx‰á¤`ÍÕ:ì„íÁ qPfX£Ûi¹#œÚ‰z Ü{iñá.²»Ÿñ„ò‚¢FƒïyÃOþÊa{甊¬N‘ÊÀ-´âÏ`œK}8Zj•Ÿ/õ¡zíµ5®áÉgõiíÍ͵{ï=Ä$x†e'0û´CsÔ¥P(¾&%Ë÷¹&·5U§e¼>ÃŽ2OO°Ê+* ÍÌÏ/n¨©€¬ PygŽ=ûqö;Ǭ>lç“8a­{`lÖ󰀨téï6zfdÁ`úÆ™CJ´¾'‹|§«ã&”ÓDÓ¹K‡ç3î\Ð)âtªÎ)S¾ÖljTçæf<É,(àì½Ý÷܃ºgÛ/ ¹i?™o@EU)…€B@! è[RR\²xo kh*Ûd ‹ŸÿIIsIeÅ5Ãwš:Ç´µÔdd#>9òà—fÃ\ÅVÞwúØù&#MÙhŸ;açÝ›>ðåÁ[Þ1ÁýÚÀßÍ;°HÉÖÙéÙÅÅŸŽå ÿ\§OG$£‰^”îæë ª¹ …À B ïH‰æ§¤¼ÌÜ-nɾÀ­Öá«oµÂ…k‰]”wºC!Yy…›Ž„ï°‰HÉÌ¿þõQ|WÚe1j…k`\¦¥W¼­w‚GHª£_ëýÀ÷?HÉCýar2[xðæË?Žê­UíS(Cœœ‡ÄÄDdg¸†É%1"##ÝÜÜêêêºnØALŒU9¬×Ö;~“e؇(IMuÅNÛhGzVAS}F$Ö^ ›¬Âö:DkªÁ–h“ÖyŽ^éæ‰çø–ý.1[Dl°ÃèU‘’Ó½­üü|''' 0ØÀ‹¯ö úöÃË~Fƃj¼B@! $:;;÷:)‘ ½ì°ÁË.Ôšªe NÌðŠV])j4hÇšª1:Ñö —–B_&­÷p H®­Ö,H )<åù\v®çã<7jnnîíííëëë£.…€B@! P ‚‚‚öíÛ×»’Ý.\ŠðÏàà¬ÝyšH\NúiØEÌ.avãìUÛ.lùa$ççѵ¾¾ž—êéé /ñR—B@! P(¬\¨bŠŠpƒÕ›êY_ëk+³r‹9èƒq›¦y‘†¢ûi-)…‘/5 ÌÉ-ªDŽbð4ßumQØs „LÎcKð™_¤zªP( ÁŽ@Ø”°_¦¸¸§#,B×]q0X7ì¯á¼½Úª X Ü4!P)(*±ô¨˜›Àêªò —(R2ØGŽª¿B@! Pô8Ý"%âÑyÈF˰#^ šHIiRz^k½v$ÞMoíþd¾SRZ>Æ"¡q¯M·»ëÃ}˜µÂ`ƬrcópFNáè•î·¼m‚#ôêÊ Â=‰.¤Q¤¤Ç»²ÊP! P(;Ý%%xt-,*™·Ë/(>w«Mä?¾6{oŽ#NZïûl[Û1Ç ”{X‰ëj*ìýƒb2þø)GûŽ]厧×¶‹öø—””¡ý1Ø¿^¾\OXáTV²ÆÊÊj°÷!U…€B@! PôÝ%%XªVV–aM²Ý&âX+úš†×§ÛBGn{gõóŽÊœ·Ç?· hù`¼¾š»çSÈJÓè®HJÚZj|?[䜕[`8g {ôQ”¤¤Gº¯ÊD! P(†Ý"%²³†}¼x"Ùïóßñ–÷~ºÿƒ á Yxh}s–}pLfK}Nåߘa÷út»GÇX´¶Ô]íž•S¸Ô4G®ÙT¬HÉPêXª- …€B@! 8WºKJ„—`Y‚Ek[s5Nå9ûË’ÆÚJ XùWW]AvÿŠ'öæÀ?pL‚%,ZB°Š½@¦ a”¤ä\{ªŠ¯P(Cž!%²ØÈAI™ÁgšvBõ½Áâ“D|“´³™ã»†ûHo2@ŠQ¤dÈ-Õ@…€B@! 8WºKJ41IY)Ž\ñ.ßv¬3mÕ//Õä%ÇI ¢‘¶æ"°=G'+Ç)Ë! }] EJ姪ø …€B@!0äè)Å 6ªf®±×yLÞà9m³w]M%ÞZšøÃBXz9§ª¢|ù /»Ä¥äð¨/ék:00ÊS¤dÈ-Õ@…€B@! 8WºKJØ ÉX`â¿Â," .ÏÑ? +ש›¼· ›¼É›Ý¿X”l8ºÕ6Ú%4cÄR6Ýàlí‚Úý{J¤HɹöT_! P(†<=@JØÃYŸ’^ÐXÇ^œ Ë£¼²)9×N©â+ …À…‰@·H‰î9­©®JN®äpàæšbƒÏ’ŠòrÂ9˜sm“øÃo=8XS’%)¹0Ç›jµB@! Pœî’á%â!Mw•fì6­ÝyZIiK}uBZndBvMe¹`èRú¡Š”¨a©P( œ”hþX_Ý‘p©ImU9䥩©©¡¡\û Œ")QCQ! P(çFJdíÔÓ466Â$Œ…""óè )1ìJPQQáêêêåå/1N« Z.9J7IɱcÇ‚ƒƒ·lÙÖï}ºªªêÈ‘#ûöí+**’ÊØÚÚnܸ133ó<êVߨ—¾¯W®òê†ØôÒÆ¦–3äµvíÚ€€‰“––¶mÛ6777˜t¯Ô©ç2õóóöˆˆˆžËRå¤P(ú3IJdá,,,üðÃ?ù䓇zÈÚÚº¹¹ö5áQ9f®’!÷Äç/÷\ò¨s8 ÈêÓO?¥¡‡!"’•¤íŽTf`HCÎT‹n’’ºººwÞygܸq²vz„gOXï3~ÏG \ú´û £ÿýï<(¥ÿìg?Û±cGJrRnIýÔ-~Öù|8ß%¯¤¶+uË(¨»·{=sµ´Ûb£çU\Q’PØÐØÜ!÷ÔÜŠˆ”’ÆæVÂtÑ¢E÷Þ{¯ÄY¸p᫯¾êììÜÖv컾ÔmáÞÐÉ}§lö Mj'ag®ëÊC§f 0ËoW{^í¹ì`x´ÖÅÅeΜ9ÿøÇ?z$7•‰B@! è{ÎBJjjjÒÓÓ‰4wî\¾À²³³!%RË––q R__Ï<+7üå^nxÚÚªM÷,¥ü%þþð‡áÇÇ…!µµµÕÕÕBS>·8ïv“”ûË/¿œ˜˜bž‘¹;âÂSŠcÒŠã3Ë^šf×ÇÝèØ1íå~ôÑGëׯ—¢é0†ÿs ËùdáÑôüŠäìŠ+< Ë´pæ+%§âÃ0ýÒzÔy_EavÖäÔsS‚ô^:6ÌøxÚÆŒ3þ|É!"¥AËWËÜmýÓ“²ÊK«´{ÖëÖwMNgü:¯ øÂ¸ôR[¿Œy{‚ÏšÏY#È0¼ì²ËÎSEP(®’’)S¦¸»»'%%ýùÏ~üñÇ!¤\¹reFF_f×]w݃>ÈTÎ=á·ß~û-·ÜbjjÊý³Ï>›œœüÌ3ÏpóÍ7ÿüç?ˆ¿üå/ï¿ÿ~ttôwÜÁ=rrrd%øë_ÿúÒK/ñv2„yI7I ¼íµ×^ƒ#æN‡83÷d½{¡¡¨®kÚ`åª= Œ-XdÊÍMoí:ä‘üìwG /³w¾?Ï9§ˆcÛ^›a¿Ä4üáQæ¥57ú~¶øhn1§'¶Ùd<5Áê‘ч§ïЄ1®aYo̲ÿr™›C@æ£c,òKµ8,ù·¿×¾â~ùå—6ljè+úÑìI}$ð…)Ö™…Uܼ7ßùáÑæ¯Ï´÷Êã'õys–y>:öpM]SFAå§‹nå“¶Û1¡µõXRvù¿Fzb¼åˆ¥î’ÕF«¨‡F>Ýîâ'×Ã$¸&¬÷~h”ùKÓl©žñHkjnýÛ—'HItZɽ!ÕuÍY…ÕùüÀcc,¾Z®å9y³ïì{l¬E^‰Ö.x‰Þ„±cÇ._¾Ü8Ï©[ý3òµ†È5q£Ïã,qÐÕxNQ͈eîÿeþÞ\§ü’šöñ×½ºã™IÖNÁ'UìíÙN~1z&•5ŸØï–Ä‹ø÷Hó G¢äÑ”-~dõ¿©¶’ù÷›ýgù÷¥™ùÅ5#Whe½3Ç)1«]ç%CL] …€B`0"pvRí ÒþódGj«Å¿ÿýoB|}ñ%¯‰î—-[öùçŸâääô»ßýB8?Ÿzê)T?¿þõ¯1} ÉÔ©S%ü³Ï>{ñÅß|óÍY³fýò—¿DT~饗þë_ÿzî¹çxºfÍâÃQ¨(Rrº.)A§À«!BnQͪC(X± „T×7m>ã–Ã=ßâK÷kv'?n3¶y%Õ}cž\liâ˜@ø]™Âš[Z®z~sQy½éÑÄU‡ÂËu ÊÜnç™ûüdë²*Môµ×)aßQ9jÛj«ó¡/¾ø¢3)q Ëž¼¿5ÚõÈ·iyzÎÙÅ5«GUÖNߦyûå‚K”ÕŽ^å•Z¼Ö"²¶þ$=KAyݘ5ÞVÞi˶[Òüï{C}âÍØcüSîߘå¨gÒùéðìZZ[÷¹$®9©?²ÙŸ· ?ïùL+ rfí}RY*RÒO¢P ÎNJRSS‰´}ûviRxxøo~ó›K.¹ä­·Þ‚7<òÈ#HG°5a*„²\ýõˆLˆF)))˜lݺNóÍ7ßHø„ žxâ ÖÔÅ‹ßsÏ=HÂo0Š„ˆ Î‡ßÀcAÝÁ`vˆýD2”••eeeu}Ř”¼¤²>4±(8¡(9§üÅïm Ùb㮑äË & ¿kÑï|½ÌƒKïÔƒnIÍ-­Ÿ.Òˆ&"ŠÿN°ä†…p³µf„açŸþôÄ#/L¶¹ÿ˃y¾1yÓ¶ròsûõÔÄ#Ü]óê6=䔤Ä#<ç–·M^øÞ±„C F¡Xø?^èúÄ8+¸zæ–cóvE§–èùä•Öþû›CK DJ®¤œò‡¾9üì$ëÇÆZnµqÌ„»È£g'iÕ€Üô¶É+?Ø!>ùhÚ¢¦Ù’‘’Øô2r®©o*(­ýó'û_šj+4ËâeW×ÐÎÎJJÐÝH6ZG?>ÖŠº½:Ýþ7¯hh púj¹¢ KXŽáºñ ù׫3³Û3ÑítˆÿÏ·‡‡ÿ`Ås[¤2Ó¶úýës!R(éžg‰Ðå•éö¿þßVBŠ*êF®ð@Ddî?åöK‘’Îh«…€B`° pR‚íBnnî7Þxë­·^yå•hd +V¬ y¿øÅ/Pß°áýËÿøGô5AAAÄøƒ³ ˆ™—ˆ 4Cò¢i ×M›^ú/h p!fXo…†…ïl§‘sxGæm<.fôÏ¥eÇý_hk3ö×kF˜ŒXy§657½\œT×5Ÿ®±ÈÊ>—„ú†fD&»â¡#Öy£… ˆ+˜»K#7reU»½ÝüSBFÕY}ã™Ëzi<$¼£ó6‰Úïš´Ò,b®Ia .Ð §ø VÑ»âa7h54sO Õàé^—Ä%ÂÖ[Ea‡]Ü.Çx2¹É „HÉ­@i²ïh"º›]Ž È*ô›ZZ$ šÁ¶cs<+7²¨Éw;‚XÜaOMÆS\ V›ŽÄ`Ž#iuõ [œÖ­[§gå˜g„5®„„&î´'7Ó£IßoÑUáÉ%rv9Æñ.„ålµcPJN¹1ܯ2ä­Ñºõ–ÑÖ~iEeu;íùÇ=‘†¦Ä9kGÑvꙜ]“^Ê”5e“FõxõÇËŠÏ/mßܤHIœÕO…€B`!pR²ˆÿ¹ü.ýg‡§®?E#ƒG ¦uö‹†„„txª§5¾‘BH8$/4S8)..î¦ú3ÄK¼z[F~%Êô‡ ¦\|—ƲI¤¢º}°„øÇjä²®¾YL,Ô–Ìcqš=R M¸),«cÏÒÊzˆ‹]@ƪˆ°Äd߬޳ƒã ÞŸß¾ý˜N‚Ÿ¬›wß°%855¥º¾Å8•$÷‰Ê³ñM#sÝ”„ DÖ¾iAšh?% †–U5dVcèÊý->ô…êñ“¢páæ™‰V"HÌ,³ðJa RÃÏ#<°¡±óÏÈ,¨’ŸlüÒºè‘á%Dkjm e¯™±MÉÃ?Œg4§åUꊒ³1!Ç7ÍÈ<“²+,¼RÉJ—»jâœ[¬™w¸¨i} ®¬¢jp ¥N†Ö•TÔñBÑ£Åe¶±†'‘½›Ä‡ieù¥#*ã'•d a¡Õ¹ ¢P(g!%9òº}!kÁú„¬¸évfƒ;A€¿Ý””°=d×®]?üðƒ·w¹ô8—þz Ý?$ ov÷îÝÓ§O‹‹“  ŒKHhW©œKÎ]ŠëžóÃ6 {'={Aˆi˦M›$[è28cú£“’ž-®ssttœ1cvâ=˜§ÊJ! Pô%g!%âM÷ÆÁý™/‰y¶XZ†ÆqŒ½}œ5mOE8CUõêu¥-çZä iw$%}ÙE:—…ôÂïø–“~© 溇½0ÔMÆÂ·_*  U( Þ@àì¤ó½` JÄÍü)/T“›3씑8ºW=UWÒöÔZqºâØØÂ#ܾéáÎÐäîÔgð’’Þèˆ*O…€B@! Pœ}÷ ê¦Ýwß}ìñôôÔù„¸ç‚µp/Ë<[i^ýu‰#áâ0^~r±Ò³»˜M:¬ý\’Š=88ž¿úê«_xá~(îê‰/Þë¹$¹ˆ„ÐèÇöòSâHÉA~êþïõª²G)G %sâP%ìpïºë.4–––8…óðð ÎÆ•‘²Œëv~]»©¾QW! P(C³û)á@2"íß¿3FnôƒÊÄ…<{mXõÙhÃŽˆd……œpþ²­Y×E(Â6 |¬°%˜åœ¼›À{¸!á%’I¸Ñ…ÜPEóS„äü†p¹¡²‘‡}=Ä$~’›D–*É[¤,lE…? _øœÇÆ#¶1sOrq«/¬…6 ‘!5ç'ñ¥VçáäM‘’¡7–T‹ …€B ›œ”ÈÙ7fff«W¯æ†óÉøË1ªüeÃŵ×^û“Ÿü„{ì.üñGnî¾ûnqÏ#þîÝ»—úӟ⼕Ÿ,äR$rN4•-Á7Ýt“ðyJ>øö–hðÂ'NœÈ=9¼÷Þ{pšÛn» nqÕUWá· ÁŒ”… ² ~bþ)Žh‰ÉßÇs‚ 7òÚ%£äoÙ%K–üéO’§”…?©[+¹Á/Üßþö7¹Çí¬8 —‹Óg YÂKÎUXr¤zÄlŒdásàEáÑaø{Á‚p†÷Î>s9[Šô`÷èû&3ñ©ƒ ¹ï‹V%^˜»Ä³Æ5™£àË¿‹d¥}}•Ø‘‘‘ÑÎÔ&«,WÈêŽóø'Ÿ|ròäÉl;äÄ/Î >pà«5žÓHÈöô;ÜàB 'Zƒ+®¸*ðè£rnÓD"[3î¼óN¹G&v]r™ ¬I“&ýêW¿"¹œ°CMø‹7zIÂÁoÔ„(eüøñD–pÎå~ÖN¡¶¶¶¸qûöÛo9=Ud0ÔDˆOÅ“M†o±mñÛÆ fÙ» Mùúë¯ù Íb®—pþ¢ÙáØXn:D÷êRBW¶±±177§ô ð¢á¨Ò@›3˜€ýDàÌM†ýã|™ÞËç§W@ŒJþ¬.Ì |­ÉOu)Ί]…u“ÝX¡íìì.œÉ‡ ìjÔ9À™oÎNJÄÍ`[)øIÀZXŠ0jüóŸÿd Æe}õÕW_|1™<ýôÓÐ2ä?ÎÙY *§yóæAMà%ð'–44GB‰p‡ç`Nµ ñ¡t¬[pBÔ _ø´‘šà ϳ°(¢á ‚ ˆEHÉy\çjèŠHFÈCœP^ðET‡ÈÒøëààp"p†&s®bÄ¥!³?»Ž}žNEn¸ºžð‚ \\HIá%tË Õðó@€žÃ¹¶¬S¬¤§›Ì‡ØHdná«gH 'ËðèÑ£õQ…+‹1Ö|ÆC`‰†Eäƒ 2Az±sçNˆÖ¬èJxD*N8CÈÁx3d'p ¤/hU¤Þ¸Y#ù»ï¾+GÃ`öA|NÛÙ¼y3ĈäD1b–.D£þ°Ÿ¥, U"œr l‰T¼fXÊÊÒ}E²eAü€¸‰Ç d'ÇO¼Ð"dƒÓ|òÉ'DÆ>•'O˜Vhh(¬%&&†úˆÅI×/±ÿ=W7óBJðEA[xÇ '÷vex0ˆ?HcR"+4‡æË5x›Ö•wwÖ8:)áóK"ƒÀ"øœ²“Hg~Å =ŸTƒ´‡œ¢žŠp:R¢wÅ.ŽÇžªq>2(䥟aDH´ ö §7ïJžŒ,ú†NJôÉ\ŸÏ¹á‹‹ñ( ]ÉsPÄa íR"^:8T•ñññ¸ÃBÁOt:Ü'''£à×··`#róÍ7#ÂBÏ*iyÄDz¾*¸g1&IÅSò$Bä)á„pñH’à  A'È Ã[)” ÂD~òš¹AÑHm ä†TúV~™§hþJ)Ä”y*eqÑ:"?¥¥4G/‚¤æÄäƒâSV×/)šrÏORB—¥³"„!3€'!Áòññ9kfBýwÝAJÃ;šÃ ;¤¯sqN$M»%(H øð)&ôð¡“à®ób #gx¢¥…ÊзéØL‹gíKƒbì½Jv&% þ M?m¬è˜…{¯§ËY^:Ó‚ŒF#¢3ó±ÃÔÁâ§Þu_¾¦¤„99Y^ÃSúouŠen(ñ’ž$%,ÆLjt_DÜpq#—ñ=h¢‹9rÄš‘ÉÇO=šñ ÁÆ©:çyªœO™SY……’Û©Ÿž5´C5ŒãŸáÑ)³Xº~ 87ó")‘u2³AH£8®Ñä-ÈHcÉѹ§’b˜‚Ö‰§,?úÓ~ü¶ëâ¤Ð”Py0‚1–R.z]ll,´€üŒ~¢Ä%!Í7½½J{‚˜Ä'2êp8è&뤄öFDD`FW1ó—ÞK ×m äËž^zúñéd2 tÒ»Xùª“žCVBb;z]섺ªƒúdÔˆQ&Ÿ+˜Ç$!« ÷@Ç `¯@G* #Äø[4qB)ôTòN™JF4ƒ‚i7Î à›ŠO>ÒvH.k!LC­HHˆq]ç?§×ב;^%ü•™ =oM¾¥§Ìç0"óº‰2/ñWú×=DF"Oû±]g-º'I ÝÑ+(_öü=ÝUUQV_Sq¬¹®¦¶ö Ñj«+Îð”G5•åÆ0µ­«®h¬Õöw¸ª+Êë*êjÊÏ\±3WZZRY^J)%¥%U8D9SÏœUŸêµ=Ý7Æêú+Ó š&µ¬ tJòÄ4˜‹@¦æ>Y–X¹Q“‰ /˜ªX„x Gá'“)¹ p1CRB/Ã&nx$3/“>,VY9Б8Jì„äÓ(¸h2‹¸±~Ÿp¦òÞ±Ù[öœËÔÖÁ6p"t&%,43,Ú"Ä‚’ŸLô%Ö$NbR£3ÐI0®B"H¸ÈN˜(‰L¯ ‡°¾,½ <ù \„©Å ˜dŽP6Þóhhë€:KJ€Qúv|9Ð-A•õ†î‡“5ƒ!É=ƒ$™+$2/H*‚$ofË@*!ü…4ˆ²’.JJsÖ-ÑËðTF7ùЙ‰£ éÞ2uóB±Ùg&'"3êÅŽJ2-–žÃg:OÉ×Íûtà Ã3פ³ú†øt ±R€GÊÇŸŒAÞ ¯YŽÎëáÅYdöÂJé*z?¡Ï¿˜W‘ÙTXgÜ]R^YQžš]è‘îÜÚX]iÐzt¾êk*݃Sêj4sŠÎ%ÁHb“s!.ò”ls Š#r\ƒRê몌“PFCMÕs“¬¾YîÚÖÂ^¡sÝ+ñ5·l™9š>§¼¬<2‘»<–œ_^]O%>æ»CJäˉ®Ì«a¥ïBA ;L(9‹‡º2“ 7Lsò¹FwgÙÝ+Ü‹†ï*ùø:Τ„¦Ñ&\äÕ¬¯Ìþ2ãÈÎa–X±’©–¶,˜KKSSS¹"Cb¸'”OÿÁNJ˜§ "¦3À-xѼzî 6 ô%”‚ Ó‡lV$2Ë*HN4n0Éâb¹¥ƒ-HòHl°(jË‹`f”5{`NŽ=R«Î¤„V3¢ )@ )Ò? d"•¾ÇŒÃ[‡OÄ„°‘ƒ|B0¢ ù={öTÉJìèeS:¬‚8¨¤y$ß$ÒWE`#ݘaÎÛdZ 82Lè’9:^%£† ‰I)”Ž)žZˆ0À?Qzä=ö}&§´)á…ʤÍÈ’á#f ò^¤ Ó%œ÷ÂØ„—@p™¸øŠ011‘ИÜúEiØ{Œ”0`Ö˜‚Ò`YG;_0ò²Ò ë<ÿ÷½õè•n+†ÔWWkª‚ã{¬²¼­…óKkkªÊq¨¶pO@["‰ò¶fëë+ÛyÏ1í'KÉ?ÚKY]¯®ªÈÌ.àÜùŽ<ÄÊÒ\‡ 5âÔ7ÔáQ­åõ™öiyìÜiÁãk›–¼ ð[ª F”n(—øµ-õÕZ„cµÐ²ÅSšùšŠ¢’âµæÁ¡ñÙ-Mµ‡\csò‹*+˜;´R ܨ´¥±½P6籿æÌIÎϦDôü•nÊ-3s¹1Ë0»ÉÃç[¼Ï1yqwAÁA?f妋ÈG0OIÂý€íÍz?)GÌõ|O ³070-øàÐ@ö®3€eCTŒŸŒjîÙ?Å ‡# “c`‹c=’ƒÆÀ×gu˜ :KJD’2@DWä틤ÓIxûtù,ë@JäØH¦?‘Æé¤„… ôHÂTH×¢çˆGf¤/ÂNXSEtw¡‘0¡;Ñß„Ú"u 9<÷€¦ó`>my"–U#=“8òiA'&©„R“›¸q¢ÊÙ–ôU¥Èð…Oó¦ˆÏk•Π“’ó”ÝXp²åuë.U„”ÀZxû fH ÷2p(‚)‚§"žQWÏ"pJI‰¨i„”ð:øIá 2«CJèQt‰¼}™¾€ô%ùH{Jž2À¬§'I Meã+nH¸u™ ¢€” ÚY{(84QÛŽxË;{Ø^3u£wx|æÄÞ™…%ïýèðÄ8‹¸Ì¢ý.±ûê Ô¤¢¼ óØX 3÷øæÆâ¿9Ëá?c¿<Åæïï}}º¥g\S}Uq _ ³¶ûÆ$eÃ0vÚG’ü© VæIЈ4ûçH³)xU-/Mµyj¼¥µã¶qƒEØZóP瀤‰ë=þóíáç'#»Lþƒíë3ìÂⲚªüw¼åCߘ—W”¹§ÜúΞ¿~~ÀÔ9z]dv¯¶õ¾O÷?9Î2 2£­¹fµYÈ¿¿1¿çÓý)yM9‡$§¡tSRÒ™”ˆ"†qº|'Ñ¿‰ÆÐmÔÓ‰EÐ"++±<å‹m€Ž”0Ó4Ñ­BÔÝ Mã›CH‰˜A‹>I ½Z&±³‘M±2éÙ)©Ws;¥ú†Õ‘BG@¹YŒ­j|sOÃ;HJˆ&s"óˆ+¡“ôb²†‘- ßÙ\t92%«šL"{ëÕööcæ§””Ðj0ÁIŒ|¶"Ia,*Â!ŒI ‰}n^y/,0$‡4¾0ú6›Gôj æ…2ÌE £"뤄y­pD©*“E°žQ¢T‰·F''º /i ñù)G‘ö#ÂCµè3“¨'¯ƒ8"ªdØò~¹¡o)¡oÐ…ž"'„WL“aÈ׿€}k=OJà%¸aÍ““hôuVH !‹÷n9Ž`ãí¹tú–wç8<>öp[sõBÿи¬ÚšŠ‘Ëø¬¯ûÝ»˜ð‘—¬>’˜–;s›Tæ­ÙöÉù0"<¨±–f±AJÁÁ„LÙäåšÚv¬n‰ià!÷8-K÷@J¾YáŸÊ7_ó«ÓmR³xI‹öD¦ä^ãñÂd›Mx)1 ‹bSrç›ø%gäÕVU„Åefæþå3¶ ×­8›Y_[‰&¨²¶æï!ªi¬©®üf™krzþ:ó#^ñ¼{Ä”—B§ÎWUÔ‘›tŸ”0•È %–‰|cÁ`–9.B¥§Â6ø¦s3‹‰e( 3OéëHta*ä6Àe§³)a&Õ'SšÐI Ó=EÂÔÌÐå+Ÿ{æh17öÆ,›O±÷\ËêélJXctºI8(­¦™ô cõp5ØÓëÓ"Ë¡¨$€Wt…>ÅèQ„Ã?èBX$ ‡{¢™3cÊ^Ç¡º´œ’”í(á"òmÀ¸c¸1Ä@‰…Ÿ…Þ…LZ  cØB¹,ÒñĈ¡Ê[IîEŒGn L÷&cA,{DþGþlJx‰t`HÝ›œ™(‚„ñpCÈ™:ðލ3ï]†©ÃÀŸ i×:+)‘iGv’òÞ™™…”Èç}‰o0!%¢ÔcQæÕÃJé]È̬|«WH G˜†:¸TRÂRýý&ï—¦Ù!©ÔΩi~é{ä %Å¥+Ùø$E§äNZïÙÚÒpÇ,ùÇXéÿó­Å;s&­÷à ¼1«Ý†¤%¦åÕÔU=3Ñ*¯¤,¯ ˆ<¹Ž5Uµôè.;>^í 8äwY´Çß':ûƒy.q)’Ư–9{G¤‡%å.ݘ˜Y0y‹g¸¦¿¸ñÍÝÔÝÒ—K\ ‹!%swúå—t}uºíÇ œ B*sØ#!§ dô ·òꪧ'Zf‡'çQáôì‚5‡B¬<5Ròà3$+Öuë‘3Åì&)aZd‘0÷‰Õœƒe†ÞÌÅÔƒX2ZÔ“¢ñ‘ï0æD:7½œ9KžöׯsšY:š‡q8MCh>qøB…c•‰›éX¬öh;s1€D²‡ÁÌ/ÛIÀ„|äéPßÐCh>kŒ¸¨¹“.Þ>m-4¾‚”ŒX-ðˆU–$±Œ>'@Tä."p:Rà¼5flqÃ[†hò^è3¼_žòÊqtÆR4f9²âCBú Áaè*ÆYˆIpo #ãã²³ú«MÔ7œ£cRÑb6C&°Þ˜ºÉ;5+^⑾Ä4hþ.?MÚÑÖvõ+;ˆƒ„c·}ÔÖ#(Mò Š3² –ïú~“WtR¶wxÚì¾Ñ餭ª¬ÈÈ)³ÊýóÅÙ5ìqŒrLn¨­Øë™ŒØ# )#¯©®å¢D2VžqÍÕk‡úF CnBÓÖZËÐ]fD)Iéy\š8ø%mµ7uŠùpž¶#Ñ?îòs JÞp84¯¸8>-gÖ6Ÿ…&ö¾ l)Úïã‚  qärWø íwR¢/0tJÙ$&ãAÖ]f=Ù˲!,DBD "bv™Å\NžpÅ4°)‘)Xo‚´Z]ÝÓIŒ¢Œ—K7 ÊÒ!·+=ÃÜ×AR"-c~ãTb]$—ðAI¼.ŠNš@nD€$;k¤·èýĸkI Ž­Äïâ=H£’”н7‚¤8Õ[p–­×@*vnŒÇþFaâH*¹dØŠŠtry¡Ë0y5z÷Ö§ãByÊO‰H¾­%—ñ[¤og€W¨§éµ|J2KË$Æë˜ @™Æyªw½Ÿ X‰4°'%%ˆò`$!‘õ±ÀŸÎ@"¿PÛ{&¶°ìšÉÎ-d£-­ØBRø—™7kWà×%F¯!¢’²Rs ŠŠ±KMLÏJ̆:4ÖWE$dªÛ[VVPT’–¥ÅDç’_X\È6™ò²¼Â"Ê!ûx¹iª«JHËEjBõØÚ“›OMJ1°MË. tt.9yEdEdr zÄIÎIÎ A}~$¦çbM’¯ù`+A™—šCR,r‘Ù—TU–gåjê!1Éyム鉮y^tk¾‘R¢V`Z¿8s“ù¤›”Í œ^E@¶ ‹±,êRt1æCk†ZM>º’jÄa*³SW®³œ}7€Žœù \„†[³‘ ^"ë.ÿaEo¨©ÌÉ+Üï…Gðkª*Ø_c  ‡Ðø&‡(%\nD*CÌê*œ‘hö"¨Ðn † Eh1ÉGOE¸¡.Z’ƒ!¦v#Û}¥­ôã¸!Ž<¥2Ô„§’ÉñBµÜ =£»9?R‚ÞÉ*]YëxA·éÖqJ{"pæ&3ÁÉÙ7ŒN¯" &YLhOø„íÕ²TæC Q»‹ûæ´!ÖºÓ5‡a"{ºr‰”èÛ€ù&ÐĆ«³‡Õú˜¶‰¦5‡ÁY;£`Ò` )e µlOm`Oxœxßl\VŠÂÅáøÅÚFbNcoÀЕ*׳Õ(‚qnz…åF Ï`;dÜ)¾ñVgÉðxÚ3×{Œ‘œ)a=Æ&Ž ñ•Ü\8—4~LŸæï… Â^7øÀYe/Ÿ`éû±ÀxÄØû¾hUâ Fcs: Ò a¨Êì„HW‰XŒh—ĆËÀtÈB§HJ:dDÖ:/ R„Ýö‘¯N·ûdzj|T /ÑäS‡¶ÒÚшÀã8E þ5ÕWÏÞæÃî_áˆ+’3óF-w{î»#cVºS —ˆÈDè…¤•²ôŸBGRWS“aáßlà%_g-=I4Î%/¨UV"o_~]¹ô~<¨dw*/¤„ØL†jZ¸ˆìîVËdß¼bñ¡Ðî´‡L),¯Æ¤dÈ´ë¬ /P]¹Î")9A[Ú#7Õº› Ä' ÷ø›ÅÄõñ1–81km¨nm¬B«‚tŽÆºJnñÊZRÕÀ@¤©®šŸø‰G+iÀZS½&G¹ÿs¶é¶¢¿!Úù&ÎÙé‹öÇ72}ÄÌ]ëØ- · -NÒH«9Ikª¡Ä†:Ô1šF†TZ¡õì.ã,^ƒ—¶:Ÿ„y»Ø;×€Ã4lcI.Ê] 虸çAJø&•.²ºo Èl­ä¯±èîÄá”MÆ_H7 “>@€iÀUW쨇RtÖoxÉ5™³L|uvå:‹¤D¤.Ç É04Cdª[¼êÎÓV v Óü&ág Vó1<—LZï“ùäx‹û??ètÈ-vØïhò˜ÄìצÛýmÄÁE{á(ÙyEx3{àK³ÿŒ>|ë»&OŽ·<ä«h¬­r N»Š3K’÷9Eã­­µëÔ¯—½û£}Öz´6U8séS›ÿõù—KbõŠlä›®·¿·÷«%.ˆCÂrþøÑ>öïÜóé[ßÝ3y£F¬xZ»í]*ÓÒP=I‰‘˜JW4dêÒê¾vš\èuÈ– %ü=+½Z“™9“HÿRÃý£_ù÷À„«;µ’î)á2øŸ¸Œ?uŒñïüF:„ÿìNÝTÚ޽RÂf'§_§þHîJ/Òû€m;³wÏi*ð±…é¾ûîÃÙSž±âC÷S‚ßÕO:ów»M›~?šç4k‡[vfo÷ÉÈ-‚¦|<ß±¥µå>MrlúVïoWº[{ÆYå™’ÿÄxË‚rÍ:×ß¾ÒŠÀ?=$È<<ÃÒÞ™m¿Þ"ì–·ñ)B6µ»£ŸÿîîÎežQP¼×)ú0ÕðY”ò£IàòC¡;bøùý&'¿$Ìý_à­áhH沃¡†hÉÔÐ+$µ¹©º‡-Wϱ;œ‡¤Y±ÞA)MNçbZÔiy*r¬¡GM:“Ú( ðÙqf[ìs|9ƒ2zR8ÌzÈŠÁ‡«³;æAÙÈQéS’t¬72¹˜…陲uQBè¥ò:øØ“x$?I%_z„“jè ÞñÞD-¤““½·ÞáÕ÷yÊÕaPë]k Ï=LJx“´V–ãT;Ñü‰±Û¿dk‡àŒÄ`ÍÚôâd±WÝlºÍ&òˆO"¿åü½šØGŽ[ã±ú`ðn»¨šÚJ¼¢ív޵ñJÈ-.ùàG§£!l!F½)Ásü2SÜ#¶º&ÍÝ鋽ªGhêg‹\Ö%Gç ð³ÊÃ=ËÎ';Ǫ¬½ü"Ó9]¦òýf¯oW¹—W•[zÄ?ú­Å´m>{¢´øšªÍÝb¿Xì‚V@ºÓ6B³n©,ÇQÛ6ëSÇhœÏ",Á0¥Gwøžs'î)¡§²—løðáo¼ñÆë¯¿¾jÕ*q!$ÆçÜkUI ÐŽ%K–Üyç8ÔaÂ?.\HÏÿ7ß|SŽ z÷ÝwåuŒ;ç¹ì+þðÃ_}õUº1=q½úí·ßâÖSßj ðzt&%ô– 6ÐU¾úê+Ý:‚hLéÌiï½÷žLqô/ƒàÒ[èB\ãÆ2 ~òÉ'üñG~L:ÛäD¡\»ˆì²À!dÏ-mà%š?ÍI…áP›zØÉÿM–a‚Àc´-ÄÇêxDRÉÁ7œÄ«Ò{¬ÓW)®¦º£T¹GpR£©\Ê8TOKËVá¦$%šú¦Y D4ÊÙ€5MœCó†RQÞÚÀáÝš»"È?Òâ½þÔéÃÐR_æèfŽþ¢ âü›>Šûaî7oÞ¼lÙ²Ë.»LºæÀìç±±¤Dss×ÖÆÞ±ÁÚõÌ3ϰo ;ï‚i¤„…΀çCÁçÆo„‘\Ȥ­_ë)I ù™3gÞ{ï½8Èp^Á0XT¸ŸûŒ$Døî»ïøfÉágÞ—¢=ò¦`&H 5”žƒûý÷ß—yûøº©m3D)#ˆÆñÉ5bĈÏ?ÿœn#’rà/òò©S§*RÒÕ7®ñÄ›õUšD¤¥ab÷àöÔˆï‚ÈÛèÀH0"ik©Ñ ‰á'ïŽäx©û¹°; ˆJßï-._?éjUû,^wH iQ"ò÷Ž;îøâ‹/°)¡/ÞvÛm¿ùÍoî¾ûnèóŸþô'䶃žÈg %|¤*RÒYR¢HÉùõ´³¦êLJô¥MÍHÉ-·Ü¢“D#òQY‚“9sæÀHp…"‹¥k;ë[¤:“BäÐr”@IÑÝÐ@¾"è$ï¼óB5!¸›6mBLÎYÁx†ež'Dާ^¼x±|è è€Â§çÕ7Ýl0„T½=Çá¾O÷ÏÞá×ÖRmæ»Øgø­õÕš²Fº¢qÏ?nØnʆó~Äû»H "ÄDcê45(}ˆé±÷Iüq·>ÜD„¡ ¦öªºCJ译‘#GbÜ$B$ÃN0ö¤ƒ^zé¥|iÑ †ØgqgRºúæ¹çžÃm³’”è’ºÄòåËåã‰ë÷¿ÿ½Rßts3–sJCW>^Q#8êÄ!²`ðX3•¿ýíoåuðÊ(#—¿PjˆÈŸÿügîQôÌž=‹EeÔSïk@åÓ™”H'Á7ÌÛ˜‰ —Ï¥P Ì¥ÅY3š>L\å^7äQœØ” Ìn3°H ï€ó~9?oì÷ôL4M¶Þñ!±YV>IÏ~w„]9Q 95• _oë“0u³·­o÷ˆœíý“Ƭöà´¼;?4…»ÇdøG¥ã' ½Ì‡(rÃÁ+'ý¾9Ó~Í¡Îá ÍŒJÌJJËCƒu-4óXìa7Z„Aw N`ÐÖŒîzÝ÷æ›oF‡ù«:>­à×zObŒD¾Du?%Ü3JQÞ#ýþúë¯Y >ýôS†ñ€5>ïƒi±³¡+§á`D‰¢”X‡äž¬>¶s%%âÖ®øÿ÷?ü0*º(Ë ÝrôèÑ/¿ü²øœ|â‰'øIwEY+o„‹‰"_ÉÜc‹È“Fd- gÊPSV¿@=ô í@JDwóÃ?Ðm®¸â ŒKèHØÑøÎŒŠŠ‚y,]º”Ãމ‰ÁŒšNEOãçã?NZL¤±°Æ˜éøÔííœü)Á¼ô€KôÓ Ô7ØœÖWÃ9¹Ç}4ÏÙ/"&œëë”2k»× qðOt J^¼7Àìh ò¯ŸĖͽ¥å𛲭GÂñÕ†{ c§lô½ÊÝ#$ÕÊ=~™Y؆#‘[m#ý£20ªeïñÓ“ŽDg°×æÇÝþ= FxwH K/{·nݺeË–uëÖYXXÐ/¥#"*àÓ!i½ßyK0’¯RàBt$N‡Þ,ÖÅuÞŒµ Ð(›ù(µÑ´‹Hž5ZgR"CÑ|½ŒœÁ§Öè+V¬`§ErssY`è®l &„.ÍXS0a!|ìbŒÂ‹˜ß»gEFE8+H ?a!ô.¼pÑ%ø¾âÈmb֊ʆ ©0¤„®ÂÖKä"‹-± ,„TlÀ!9¼zvžGJ øA¥‚R$ìÔåH^s·¸…û‚€uø ÛŒ‚"k¯Ä[Þ6yuºí “­œ &áÛì¢Ø-ŒŒäéIV|yhÞnÿ††êºêò”Œüç;­2 f˜ãÛ~ž^Ûšq•¶ü`è*óp{¿Dï°´y»q‹Ò6ìÑuïÏu|lÌaÜ¢ ëP+VwH‰tk‘àqaæ©÷B‰7ú³ŽA¡³ó4Bôó.d‰¼ÊÎÎÓDÅ d~< ºxõH5ô! ÂÁzC oA¬aG÷–F ø¨Ð$Ê?ܤU2’ÁÛ7ÎZóÎêq¹¤Oæä£"±)‘‹8ô(ºŠqÅ%Ó>éB£ÈHDÎÝc]Ï qW"Èi|ö~IËöí²š³Ã/:9ÇÚ/qÉ>£µ|¶È9=§ 21g‡u„WX*®å‹ŠJBã²Öš‡®7Å ýß¾Â+k›[pò¢=ØŽøG¦;ú'}·Á •PtRö“€=ŽÐ—ú»ýF.?Љ[PÊòýäÜ0}«/®Mœ’Ãâ2ëúÕUÚ)%Àçê<­ÃÙ7ôN¹xßÂEK¢ŒLþ·÷‚á /š&ñÇÕáì…O/Ðæv=ÿÎC²3øg~Îp2(²•½ –”í×&sý‘qß8×~Õï°ˆ)`ùæ,òu…st%Ž—Ô;ú%m9”ÃnšäŒ<Áa'Žox†1PõHßl†½á,HÖ™‡F&d9ù'7ÔV ¬A×SXT‚k5Ä$)Yù¸DC)GÙa•+q ‹) Þå1.á@>¶cn‚úÃä%?8?I‰¸°»`/ùôdH_°œ¡á|!‰\„®¥ðéø*pùœU—B ëÈá²Eÿ¹&ÆÒýAJ œRíáÆjmAƒo4qX¢y/)+Å+O¡)° Âáx9ÓŽnß6\ /!¢„“‰Æ4 ûzpņ¡«wBBj.álÆ! NKn“<Ñuðtr"%[Ž»Â´ºçHt^bä8­ÁHBÙàÉ>!-ÅvðIÏi882ÁÄDŠÖ£I* B¿ÈŒÚj͆¨;²3§U¤dUm…€B@! è=ú‚”ˆA‰½oâ;ý7X„MÝäýi=ç ãÙ¬­e³eÄm¿Ö$0Cž¶È®„+Úa7m-.!«Ìñ–†­2âŒrá:œ‰£åÖVω€ˆR nNZ4•¥ÔTVD'ea\òÍr×QË]W 6wm¨ÅÐ|Û•É„Ý@’ŠÊàrmÔ*wêQmïñEJz¯O«œ …€B`"Ð뤄Õ~à”šï¿IHÍ{ož#'Çh‡÷š§g%)QÃQ! P(èuR"ë:ú‘’âT0_,qYcB{mð®ÐR_…dzÿ}oÉ6«WV–±•ÁƬm¾ã׸#&‰OÉýa‹’ T*¸P[mœ“WôÃfïñk=ž™dYPXÌy7ÚÉ|ÇjÃã³í \jô÷¸\«×íX9Þï°[¶®ÔYHVn!.bá.«•–šºÄŒYí¾îPz%NõÛ`:a­;rô>J}£ÆŒB@! P(ú¾ %²•ƒÄpÜš!;á/ÂܦUã¬ǺÚòÏÆ`vCˆÀMAaIAA1 ~h.JÊJ1>å¾ ¨X\àM‘Ÿ˜¦òTœh¾OJK‰`Ø!ÜN) ÒC&† ÂÙIQ1Ĉ}È%ñ()Í/,&Xµawå¶ÏôÖ%)é›þ­JQ( A„@‘݉Ǝû"1ð KÈÞ[î5Npü±<åŸì­5„kÿ„ °¨Ã$‚$7œ,^Oôð”B¶ç%ÎQ¤8Cþ+2бA!ÈP¯^¼)DƒDUU! P(ú>"%pmûn+»|Z«Å‰p¡ÇïÛwú©E;þÏp²w5ÉÇ8Ugµ‹¤Ò/ÝÖ(UûÃ>pêªHIßôoUŠB@! P "ú‚”ˆ±)»p'mðüÏ·‡ þHê ÎÐÊp/b´-üãÒ|Ì|¼¢îA#´…BäIª+Ûµ0ÚÏjíXÜ“œœª]úÒ‹²Žîe­HÉ $ªª …€B@!Ð7ô:)F‚{’é[½]ü“²‹ËV›qN ^Øöa“°Á¼£¶‘•W„U,k6;nRÒóàdÃÀ0œˆ`,B’¬œB¸ ÿ +œ›’KZ¬L`"¤JJϫӎ}мD‘’¾éߪ…€B@! Dô))mª¯¶t[hp¬± RDMõ•‰iyÖz¼:Ý–-9Í U›,–âl›ÇÆYâË•­7ß­óœºÙÛ/< 4‡=¶aÙ¾@øGtR6ûwfm÷‰ˆÏÆ‹ëŠ!oÍ´{s–=nKØ›³Ç>JRqàpu•"%ƒ¨ªª* …€B ­oHIŽSçïöÚ„ ·H8ÚšªwÛGÎÚ¥9Oûß4›ôü¢¶Q[Ž„ç×ýï{Û„¬Â—¾·½ÊýÙIG .Ĺò¹-ˆ°GñŠÌ¹ìè¿GÞ|$4+¯ðÙ‰V<­k¨}eš}rv‘¤zî»#Ö»SP÷,½›z`JJ8Š“£´9“½ÃȨ«ÃÇûñ¼ƒnÐpDø)ë\UÅQ=yq"ùygÇ©¡œf~æäDàSr¢r“ðÞ©F‡È„Tuuu39e´ÃÕáQc#ç<ôéT£s{¤Þ¾”EÎGS7è2áuŸòƒOwNgd(õÒ[t°Æ ÷)1”4×à< Ÿ­©ùEKö¸…¤:¥Lßᇲç;%gà›µñË%.7½±›µ/$6sá^߈´°ø,Šríð]€“ çÀCÉ»ýM£ J>[èRX^—óÚLûÌ‚’{ü}õTÙù…8;éÍõºKYΔ*22Rú#9==ý”}ŽÁŸŸŸ®Ý±¦¦fÔ¨QtˆeË–§­­­ýòË/333×®]»fÍšsͶ_â§¥¥ÉúMåo¾ùæÎu`Á¸ï¾ûºX·‚‚‚Îkjç´_|q3ì-99ùÛo¿MII9C_ýµ¹¹ù9amm={öìââ⮤zÿý÷}}ñLxÒµdÉ’‹.ºèÖ[oíJ§‹³téÒE‹ñ”÷"q¨Òßþö·îäÙõ´ŒY}||¨F^ÇSôüJÆü/ €²`óÿùÏÎüZ{¾*)ÇÔÔT©ÎöíÛׯ_ß™UïÞ½{„ ]¬rTTÔYcÆÅÅýðÃ11r’šº½NJô5ºÎÚáû¿)ÖG¼´ãfšë«ºÄ<<Ê\;œÃhšj‘LXç‰à£¥±&(.ë‹Å.ðÝeËñ{õß­÷jk©mj¨NÈyyªÍó“IÉÌûûWfÏ~g5Fó÷ÚJª/—%ÕÛpôDÝ%½™þüHÉ÷ßÏ “ÏV//¯?þñÜðY•••˜˜XXÓ.ÿ#<¢À'XótC8âÎ]uëÖ­/¾ø¢„3q“¤ÃÀf}Z½z53¯þñ'%ò“5›ü™‚¹gJJJ¨G²‚P·øøx·èÕÎÉÉáå³Fr#&‰,©:è“!kOõ"„+!!AùÕ¯~ecc#@IT,##ƒTzÛe~$+Vtt´. ¢Ñ ¡¸G}tÆ z«™õXfèÒ( X*¯¦ªð<ò!·’’©!(NÏ%è\]]¿øâ }ÍÖó‘² b¶Ï?ÿÜÑѱ¨¨(6–#Ú/VwòÏÎÎÖ§{IB1Ž92sæL)„’†¼ É“ @¨$o·¨ /õkß¾}ÿûßÿ¤ª ´@ø)Éé!Æ‚(Z'ì6Ê ïјÏ]}õÕîîîÚ®ûòòû￟´Ekz¹´Xh[ïtÚ%ݘC%}[NŸrsù¼ÑÞ8u ™ü„ý°"vèó@­ šF‰OsôQC[h/ÈtH( B‰/²+é'òöÁ–nfŒ!¥ )á/%‚³ñS¹RÊ¢J*o„¿TžŠÉ»£¥Î EH*)—lyÔ(xJoì?9U‡TÒ.=•Þ™õ´ÔD°20¥V@¤s\âìRI £ÂdE÷–|€è’K.á•w(Œ¹²°Fº(oY‰ôZÄ¥@¦;Ind.S„^gêIYŒ‘qãÆéí팶 àô)^¢m nѶ77h~ÏØŸ‹õ+?9°—Ç„p2NûÁ¥¥MÑŽímà_íÄàcÚÑÁ\†p&»†Æ:ÌS*°iÝb¾Ç!:8&“=8Æ©:;ˆï°%¸7)ÇÙó>?R2eÊ”yóæ=óÌ3ôª   Çœfù3fLœ8qÁ‚LåLÇO>ùäwÞÉ‚ÄÜ̲ôÝwßAhdBwss#“ý’aÿÔSOýá°²Ò4b”ñãÇ#8ñô„&¶-^¼˜ ¯[·nÇŽ«V­Ò¿WX±xºÿ~*ÀyDD„Mš4‰ÈÌL[dEÝXqe…Ð/2„<3†„!!»ØöòË/óeOrV) âûiìØ±fffôLCGõ¨‰,´o¿ý6ñ™‰¶lÙB‰tÍ5×|õÕW´”§ï¼ó]\\ø~¢&´]–O>ù„©ð›o¾Ù¶mR *#S3xH5öìÙ, pÛm·½þúëBh,çæÍ›™™X,‘íÆ;“ÄZS§N¥!+V¬  ¥’ü555evf;w.qFŽùüóÏwøˆ§í @YË—/gIàíÓpêOmÁ™Ê0¹ój(W,BäéäÉ“i,f‚^ºÁ¡C‡>L¸˜ó‚zñ XxAAçAbLwˆŒl†@ à~çÎ4„²@€Ÿ?þø#”eĈˆôwÊ‘jÀáÂÃùqvv¶´´äµR-¤V~ø!Y,’*r ¤ê Øc‘Þµk ¡½ÒéZÀNµ¥ëò“B.\Œ¬@òR“…Š÷Bž*è$Dþå/ùæ›oZXX×Þ½{é! 0'þ´iÓ`o$@’€ o‡þFõè$'òã~Ë0á'¯ƒnÃû"7$ˆ4íÊ+¯mr Î²èÒˆùðÃS„ôx/sæÌÑ…’-eO)ëÀ„¬\¹’jÐ éŸ/¼ðÒXø]N…¼Jâ ‚š5kŒ”¦OŸ>zôhh\[îmmméoz*^7_ôŠ£GòaC*Þ)}¸›¡òtÉJ¾UhÜŽ|H.ì‚D4Šo:u   Aq¼n"0Q0(è?~~~ô™[èº ÏÅ»ƒD2HA’¡A&tBH3…999‘EH{ÁÜÀ êLšOdÞûÁƒ8ïn#+’óBáî¼îÎü¾,êç€E H‰—h§õ²wW|”ñWóëjðܪý4læ§xvç‚„È?Bd¯d"\ìÆë£šÉbþüùt5¦×—^z‰"˜¯™ÙÛ¤"‚Îfö{$«ë¢,ó")a¢ù¿ÿû?~>÷Üs,䬻LyäÌü"Éeföd oooæ8¾“Xc˜XY{˜ø¤&aaaì OÔŠlííí™"%7ªÊ„-€Iðùdÿþ÷¿u °Ê|ÄŒÃÊ (k3 Yf˜™•(”hÓ"9°Àˆl‰õÌÁÁºA¾¢®¸â ²âÛ~@5h“;á,i`ËB“`Bg¤ ,Q2QÞ}÷ÝD`™ardáðM›6±FÒäΤ„´Tžf2Ÿûºë®ã/õGªÏG3p‘œú°d~úé§|ì¿—›nº‰˜4e‰€åçÕW_%9Ñ®½öZbBÅxk#fvЀ|?5md*çMQI^7‹ì„ôÈñINÏ4.t„îÊR'.V&ºEÿ¡‡âÕ +ËÃÓO? «£áº†d¬:dK»XºXKŸ¾Á{¡ta6ýë_éº4 dxG´äa6²†é áýÅ ˆø8æ5±*Sù’fig¤Eò*ºœéŸÐ ¦¨‹œÝÿþ÷¿àO=A‰nÀ{ä…B h!ÐMøÓŸþô'À>ñļJzòðáÃé?ôj])Õc ¦3Pí÷Þ{¶Ð©x/Òh=HyM´šÅʂ̒Ã_Æ-ª¤_¼ß>ø€®N[ÂþþþÍHzG§¢“ÓRÔ¬ÐÄ–o¼‘GàÏ[ ƒÑP‚ÌI_žYäd§ßR¨Ò?ÿùO‘ÍÐîºë.H‰>^È“õušfÂføš7®˜Ü2}Ÿƒ„A$PžÂÛ¨ݯ–dhTƒþÌ 57ΓåùòË/§·ÃÿÈ“ADL8¥^–ܰ¢óaÈZ„0{"˜¤Oòf;?1ô€NËà#½~C'§!Âæõ‹Ê“§qqôa‘YòÍÃà†A] ¶¼V( “™K’Ë.»L ÉEIÇ{†ÊÀ®ÆS=<µUèëÐéˆëUƒ£Øzþr2ºžªªríi[C1'é”—7ÕU¶â¥¨ÄÔ1º¢º¼Îó9Ê5z>úù‘VG™P &}ôó5\A¨|a3C}üñÇÜðÁ*k ’&k¦¦]F2|ùrÄòUMžD@ò)! Ã[f?³?s 90oÊϧ<åû‰å™fh «,ÜLX̶R~²4Š^.&,> EðAÉB ;1žqÈOjùâ'ޱRŸŸM>pù|g.“r¡’-Ó(ÙrÃ$+‚!%TžWÌ@Lñ¹I5XHZf7VšFX¸aA’iŽG|¿J4ì¡|Ýò X•Y;¯òÄD Ñ¡|GB XòYeåé½÷ÞËÂ'“¯y ‚v08øÉO~"‘Y#‰ÌB‹JNBPÕ󗵟ELu ”"DŸµi,M(æzh«¬^×Jq,!pY–Uýå]CB^"‹%©x¬I’HÒU{ì1!.^%ýO^Ö'¨*„ƒ:)=ÈZEÿ× ]ac¢é‹ Ñu¦2„|^èz"> Yÿ$­ ô‚{^ L$A›:#€‡!ꓘ°dÑ%ÉÊÇÊ øbÈÂb£å©¾šÂ¤D`éœÆÉéxÈ! -áè+Ö-tø¥#³! ’)ðKÐvš wÉ“ñ˜<¥S‘s ãZ¾=$[¹¡7ÒŒ‘y脘¢édc6Vw2`á.tE:­ô^ŸdN—¦GqOóùÛA©„fDØ*¨JBÝ0L„^À®€”FAËèŠô(Ê’"7Éèõ×_/!^+C#!ŒMZ¸ŽLïeŒH8oœj#‘aN±TOG*ÃP‚WMÄà [éä´‹+¦îLt]ß}&¥««ßèuRÂìƒñGrzÞÜ~±É9Ð瀤”¬|sÏø)›XÛšÞ˜eŸW\bâ½d_`]CwXꪃA9ÈE4†çïß6¦âŠÚ¯;ãÝò—š;fµÛÈe|b6pÂ0,çýÜåÏy~èqðÆÁì3†ÝÂHG\ƒRâÓr_™fóô˧Z§eTVr4`?ó’ó#%Œgù¦aìƒ>È=sŸ; QæS'B˜€Xk™ë¹gú@ù‚Ç%´€@ŸŒû ù‚.™O(âÃld`êg’åûƒ™‘Ù¢ÃÚÀü.OEÙÌ ì5’>Jüì³ÏøeÂ"-Yh,Pe¾€9HVH5DO¯Ï8ÔŸùާ„C¹Œõ>¬%èÑy$_HÈ~òy`†f:h`%Ù²„ß÷|{‰ÌŸp&,>èÉGüåë`I…A˜o5bÂêøâ—µ"xÒjæe&tjÝAJAµY±ˆÌ§_u˜;0ƒëâ(ó)ëo*±pþãÿè {§,–+ê ˜,´|bÒ.yeR’ÞU…Üã„“QÞ#ÜQ48(ú J¤V|:ƒM@@oa…CUgl BdÖ<ÖTnh +%•aapc-7¶14îH¿ýío…%뀰®³Ò ÔÐJÖi>%LšïlãÐD€0½”΂Ä`aÉ%%Ú‚‹†³ðóÍ‹¼Ð`eF°ÒÍ-Yªi <üY’YõéB Jï"OxTF7ñ†™‰2îž{î!7Pê =¢8VV$ܧÎfh¬°Æ =>Í ãEC(©•ÔE  _ÄAÞÀSê œ ኈ1d}ePPmÚ"ŸT^,HäýòjȼƒÌ  )dÎ÷†¼J‘^MWF’ð”žÖÁ2Lè'€ŒÈDÂ3Ä•W +Þ#uà5ýŸÁÈ׋^m±Ðâ;:ÓH9YB‡”ŽÄ¸€:ÀE™qI%œîÁ»c˜Ó…x¿ÔñÅ"ƒˆ.AǦÉô[J§’¼SAžx¡2ip1–E¼§}µªkP!Ф¤¹¡ÚÜ-vÑÞÀcMðœ§UB,{Ä­³ŒÐ†ÖwÖ©yE{¢™ð}RXX²do[p ÂÍ6¶­iøTÛë^Ûyï'¦ŽþI88‰NÊÙlŽ6'#§pÄR¾[ÿü±)•ƒG£×Y„`e2k‡Ÿk`rn^áÇÃKšŸgù¿ïm|ÂÓ¦mñFÖ"V%ƒ”” ä 'ˉè5˜ßùž@blÛŬª‹C˜˜±Lµ’Éè”[ÈG·7„„‰@>7囘ÙS„|•²l0C‰,<õZ±z1S)‚²XçøÙyj#|J!¾”k,¿A6@*ÖƒÎ^F( bDݸd'ˆ®õ zú>Ö©ƒ!R_Qú÷=•ç‚%€‘õ½”H4jÅ¢« Ù4%ë1µ¢hi»”ŽLôDc|Q=’ùh&7=ïN¦xªÇ'2o–ÈLzHÊ’5ÞøíK£øÐçÓô½T†$²sŠ<yr–ÞBžD ½ºý t‡öÒjØÁc„q—àÍ÷%ÿtNS(H¶Sé/T“z6hp…°]+‡Z­³ò§’@'ˆÁÞ¤CJ&Tžînz…‰Ì%–4–<„PV)B¨†T›j¡HP@I7‘v‘=œ§ÛÍ+ª+ÖN½Û蜛×JõÈA€¢þò±NnÔð”»BÈl©Œhé¢Ò±¹ŒwÀÑŸÉ×'M“>à ý H„È_ ¹ñˆÌ%+ã^ì úOç®KL¸¬—†úû¢¶"g¢\¿ŒGº ¹éÖ²ÌÒ¨¯‰ÎSãT g¸qaƒØ†Ö‘¡ÞUºñÒÁVxÀ,%eñÜôÎ#™Ò+¨6íRK¤# ¢«/HI}m…oDêŒm¾Ø‡´4V%§å¢u9äÿóç¶ðÏÆ‡y¤~›uä fœÆ¤ôÜE{"²ð~&’’›ßÖT¶x¦ßd›IHË}~Šõ]íûÓÇû~ØŒ¦¿õÁ¯4»\Ö¿Ô¬‚oW¹ejÓÁÏn!ù¤um͵d»bPnq‰¨oú[Pb0û­¬d‹tuõ ¬aºÎ»_*  U(@Yb'ýÛFar!#Ð뤄/WÞÞZ¯ÐTÜÃ#/™¾Í71#ÿˆoâ: MMØ\_ÍÞ`s·øW°Ym<ß$ ,¡}7”4Ýýréú–†ª ‡ÃLì£ØŒcGcŽòßøÀ—ñR?o—?~cyJœ&þ vûo·‰lh¬³ÊePqI á“ÖyfæpŒŽ"%r§×ÛNçì`ß§`Q(ú>Êô¬k×¾o…*±Gè RÂÔ¯)bŽÕúD¤v‹MÎÈG ƒò%1-!›~ó Ší|𫟅ûWèˆ(YØ\ƒæ…ý5ÄA6ï•;!²£oâ!·8ˆBÄ;>Øë™îšŠìžølÉqôK‚‚ÀWÇ$ç`ñZWSQPXláÇÙ~†==o»zN9*IIt_•‰B@! P %úˆ”ˆ¼¤®º’m8øZ…ˆ`\ÂèQ´º¢¯üÓ´6Ç)ƒAôÊvÇ$ååò”Èì©ÁÄ•GÜLÙä…@”Šr-Cþ6ÕU!}f£±þb)BâœèÈŠ” ¥Q¤Ú¢P(=‚@‘ƒÌ£Ûq(¢{Ñ×{ƒGû%B#Žáæµ¹FüºÊeì}DBÁœò©!¦¸*iÏPÏ¡7xÆ9å©HIt_•‰B@! P %ú‚”I%{}× aŽ&ÿ0ˆ@„.'íäA{ZÒîÈ5;¯p¯}ÔŠÁû9L¡QqZI®{NÓݹž?è—ÈŠ” ¥Q¤Ú¢P(=‚@‘459y…׾З…Fö䜛5AP îÑÐê X©>ÖTãÀ‘~pŽ[HÊè•®‚¬5Ýi‡Ulžây¤Eh©1X†hɵŸ­µ5Õår,ÙµËFú…nt­PEJz¤ûªL …€B`(!Ð7¤Ä°§­å&ms/®JG¯t{d´ùöÍ7¶È9³ hŸSÌFËP¸…•gÛ}gm÷m®«tH^´7 ©®º©®báÞŸD´9³·û^ÿú®MV¡‹@P¾ÛàqÇ{{flóÎÊ+zw®Ã?¿6 ŠI¯­é÷hg&'Š” ¥Q¤Ú¢P(=‚@¯“ÃÙ¼šFRrË»)Aâš¶Í:â›å®ÉyÏ|g]RYmæ?g^ë9û‚òá<ç½Î±>‘éx׌QZk–˜ºÆñMšºU;žãµéù…;í#WÄKwSYyÙ6«ð¹;}ÓóKZš4‡Q\X¢HIt_•‰B@! P %z—”#aÃKCæ ô·¯îÄ×Ù‡¨y»ý8G[íæ•žWXüåbç1«Ü ‹4ƒÔwæ8âñÉ·xïˆô傚[ê9«ï«¥® µUfîq§$%mÍÕõ•îÁ)Öz†Æf²IG‘’¡ÔMU[ …€BàB@ ×I ÎE“¼5Óîº×vy§bG‚ùêˆå®2þƒm@d:(ßÿ‘é‡ó8«º‰s€wÙG><ÊüÏŸì;è›–ûÐ7æ÷}¶Ÿ³úÐÔ4h»{KçtRßÜùÁÞ k=Ö˜‡þá½=»l#9‚ذ¸kÆýKIJ.„Ñ¥Ú¨P(ç„@ï’Ù¾ GsÔæ†*íßJ~r^+Ç74²+G;EO»çP_xD)~Õ ?‰\ ½{Íĵ\Ûh+9µ¡ë±:vk1›ª»r²èwúQË£HÉ9uSY! P(.z”/‹àVUT*üÅé»¶ï÷¸ÏÙ¬»Ñµo6<ÕÓž¼%XËŠœ ùØf|V#Sr“·‹ccCÒ¾–«(Rr!Œ.ÕF…€B@! 8'úˆ”Èi«œÉbÌa³Üs±¸âœîuïjÜè­íìTítyÊ!“›6mâvޏÔ+Ö9~ïév)9§nª"+ …À…€@¯“V_¤žžžå¬mNšþñÇ9P[?¨²SáŒin8(’pnô£Ø9ž‹§\„M]íB†œ-ùÌ3ÏÌš5‹§oÍS"sÃ_"“‰¯.Çg¯]»öÊ+¯Ü³gÏøñã/^L4 %It¢C*èK/ñEJ.„Ñ¥Ú¨P(ç„@_Vz;;»ŸýìgË—/§r/¿üò­·ÞZXXèçç·yóæ}ûö!??ßÌÌ ñIrr²££cccc||üîÝ»á $a ·²²:d¸ˆÙÔ„³“Xˆµµ5  &&æÍ7ßDãƒü>ñÆoPr) }Ð#(ÒÞžG¹ P¤„uµ<Æ×u ÿBÍÍ5î‚ l^^¬¯o‰IðÎávv)éé-4±Ó NvMM|hhà–-q%%¶¶Á»wnÜÔ.}ŽeWTÄ£= ܵ+!<<³¢"³°|:0!%¾kÖ,7€°åª«‚vì8AJd(¦§ÇxyÑêЃÃ--“5ÆSX˜YY¼w/ÿPe¤¢¨ŠvrÚñ›ß@q€tÏ=÷EøáÃÉññJ‰3f6U…€B`P"0àH .StÚÛVŽž9räí·ßŽs38 nã/¾øb„(Bþð‡?`ûÕW_ážõ†n¸ñÆ…©|øá‡Ü`!‹ŸZr@î‚Å«Î׳2Œ¾É­ÇI ¢8 "«¤$ÔÂ= ÎéXVa ¸„süâ‹]7ÜÀB»hذ%¡‚Éï~gÿÉ'QËÐÌLÒºL˜°÷öÛ×_|1ÑìºöZÔ@¨3Pßœ”Œ‡ „U\rƒ xÌžSWçµx1EP(B Š€í¾ñF‹_LˆŽu‰¨Ž¼þú–Ë/_ŒTcØ0Ó{ï%U;l˜ç²ešüNqq„µõ¾?ÿyË%—ðˆ˜;~ýk“ßÿº#zc^rRb°r¥iG>þxž4ü¢‹bÜÝs0º6¹ùæí¿øµåÕÞþ«_E{xDÙÙ¡åÑ„.†Ü (N(}å„ *­P(úEJx°ÒcD‚€„ÁxÁÑ,R”8ØŽ‰àdöìÙœÖ#¾CˆÃn¬Fø‰W4Ü­"Z@jBB<Çûúú’JÔ7ƒ‘—ô)A––›‹ø!ØÌL$,ù!û÷c'lzç+~úÓ ×]·ùÆ·\ýÆŸþT؀Ǽyˆ7X¹QÖ8ŒIªÕP™K/Ýò»ßmºá†Õ—]FHy[[¢)qž2%§ºúÈ›o"‰ÁœÅÍšÜúú¼†‡ ÈpÃ5×hEÜx㆟ýŒ"ÈÍúõ×5=NV”Âæí·±ê€?müÙÏ6üîw뮺 Ú´ÅÀl0S¥þˆRÂÚtùåšNꪫ¶ÜrË–ë®#¾VÖ°aé3NÞ\Ó%R’íøí·"OÚuÝuÈ] G”KMàä¿ù¦›6^sÍüa­­cÜÜÖßr O¡)üÛ h×^»ó@Ö‚®GipúsVSe+ƒDJŒý””WTÀ$p4ÒP__WS]op[Â>¨Æý÷ß1¬8=#!òT~ÊÎ?@MŽ””ÖTWô6/9õ9îæDSÇœSzœ”°¾b‰T )!µ6 ‚?&ËŸ+’!…œãÓÖ†…„Í'ŸðõÏb¿óÆ¡ ¨K,0HV6^|±÷²eø¤+‚ zzîø¿ÿãÆ˜”¸ýø£ë”)¬ñäà4btDS$å燙›G¹¸ V¡’¸Œ£ñxÀÍ7‡ÛØäÔ×#ÿXs饄PnÐ訋õðØ|ùåpH‰ßƨ“’“’02….lýùÏQñ`Þ‘ž‘±ù·¿…›÷’%T^S¿Î‰”PôÎk¯E÷ä>c‡r7ýú×I°`„I‘ŽŽlÌ¡!õmm&·Ý&Ö9Ÿy&¯±‘§'L^í¤ *®P(ú GJ*+Ê[«ÛškZê«YÀ ‹Š“Òóª*49‡îD—¯ÅǪi.IÊÊêk*²èþÍDQcôS»­ª,J̪®Òx Œ¹1c0$,Mq†ÆdâxrñɦGçoeµUøh;ùQ)M¨…••bsÛP§’sš:tÔ1õ,)aÍf‰µyï=ë>0úiVS–ðm¿ü%;„5k’ÔÔÜ––8L@vîôZ´ÈqìØÝþ³Æ? XKnc£Ó¨Q$a©>ðÄ) Ú¦Ùääܺºð#Gà XZ ¾CÚC?ÎN"ï¿ï¾ ¬Rލ¢ÓA;ljê³|¹ë¤I{￟ø±ùŠ+¶mc]w3†ªºæ’Krkk± 9pQ„NJ²kk#ììPîhŒK/ÝÿÈ#o¼añöÛ°þ!;Ù÷׿BzºIJ Pžóæi»u¨Þ%—X¾ô’ïÊ•˜•°Ë³2§ªT¤±û~˜¶£ØR2’þšËT¹ …À@`‘á 9y…{"W2uŠÆ{{H\ÆÌí¾m-µ¬þí¢”²RmÉÇü³¢\þ—Øù$æ“\Bt/®'\}T”·µÖÿÁ–Ó‚)ˆ(z4mÕ7¤‚O³ÑnÄÂôxüâžTBMx*DæÁæyªiŸJK’›ë5iD#Š¥g„ÄfÖ×Vdåvm¨«2Êó¤²:ÈQz–”`ýÀÒŽ…ÇBÃß×_oößÿâ°DÛ»kØáhb²ãw¿Ûú«_íüíoÍž|r×Ýw )…‡exû/)ÛvÌžy&%)I6ÁrÃ:­ù)1ì¾’±å²Ë„ôؾývvµ©D 9xÐô/Ùò«_mûÅ/ÌÜä$>?qû„fÿ¿þEBªºú’KàhsP-“’¼– RMurÉ%{ÿõ/³áÃ÷?ÿüá×^cO¯ùðáö_}Oê&)I AOdrÏ=‹Ð Ø 4hÛ¯~µïž{°º¥±ˆyv]};)yäÚ®¯!05¨&( ¾G``‘’Æú*× ”/—¸ìvŒ^ojé•–˜óÕöÚÔ³ÀóO~¸ACme~a1ô «;©`*ˆ" ‹JŠ‹K‡@duç/r”¢¢â–Æê{>å4¾¦ªÊ2"³¦ZcMuUd³á‡Æ!(¨¼´Â@5È»È!ÅåózA‰UeE8R)!çŠ ­VäFyd•‘]ðÆL»cÕR4©4ÿo50•ù&þ©Ââb{ŸÄ–†êšªòü‚bÚ¢q©r-êÀ?Ê2æ%=KJDRâ½j•çÚµž«WGØØ$„…±¾¢ª@ï€cÏ­·Š¼ÁmêTd'ÎS§Š…(|‚{”<û,;e4R’œ¬éƒ²³õ-Á²N[¼ô’ÍG­»è¢ ?ùI˜…[]È!9!Áâ…Xã¡Nß~‹…ŠßêÕÈ6ŒI rò×HÉ¥—j¤¤¸¸ƒ¤$§±‘;aÚúÿÇæÞìòr&¥`˱¡-öwVß°½(³´:¥mÕEÏq›M}sÝuñþþÁÄÛ÷åk¯¡]¢V4 @=ösP?u %ÊOIßOaªD…€B`(!0°HIs}µWü&Ë0LF-¼5Û1!³hÜZ÷¼Â’-Vá9ùE¹Eß®rcoM`Tú' >œç¸t_ „ÉJm]õˆ¥®cV¹}»ÒÕÉ? }ŽF^ Œ$,.ë›å®“7xÞ«‘’æ èŒï7y}½ì¨{Hj£ÆHJÈgüZ︅{ÈÜÜ5ÎÚ+2ñÒT›ñk<&®ó8LœÅ{²r êªË-<âfn÷!2Œ$-·à½¹߬pûq—ÄbîN¿¿|v`ä ׂ¢’ð„¬1«Ý7[†Oßâóøx‹~t@ 5 ÙO[½gÂGóœæíôKÉȯ©(yší¸Õß®r¥™ð—ô,)aígYÍ­©É®ªBÛ¢‰7dýNN&ÄkáB8qÖýä'v`Bá2}ú RÂ<••ˆUÄÕÇ®Ûn‹rrÊ?v, Ky9;tØf,êñSâ2m†±è†4í·jŽFªªPlºôRQÄ„˜™a/â·v­ÛФâ5þºK.!dõO~Âæ[ØšKJ°}I Ýyà šÁÇE9~õ©ˆOÇ`’‚xƒ½Ä4)HÉÖ_þ’M¿~ÐQí[š³² †®bS_ñ^º”ýÌy­­X¨°)Úþ믡kâë%1&R²õª«„™þç?¹¹˜•´û J“„j‹B@! è+)iª¯ò MEÒ0}»ïä^GƒS"RrƯ÷HÍ-œ¿Û?;¯0'·ðÅ)ÖP–GF™×6Ô˜{%,‚(ä@Dê›jïxoU]udJÞøÕî™9ÕUåXž@2žd›Q”WRþ¯‘æmÇjW¶óOJÎ*˜¸Î³¶¾æ¡Q‡‹ÊËiøÄ¤±©LËV«ð=QˆO^øÎº¼º*$1ï¥i¶õõ‹öt‰MÉ}}†Ý¸ÕîoδµÊ=5·ä½yŽu5ë-ÃMÎÈc†]^‰fæ¯úp¾ÓS­öºÄxG¤ÏÝá—š[”˜ž÷Þ\ÇÜâò/—ºV×Um:¾Ï) ^õâ”#œ;–œÿŠAÇ$V)=î§I‰¶%'c';ZÕÖì²²€;EYÃ_«W^ñœ=÷¢[Ñ$%ÈBØW’šŠÍ)k3á~ØcæL÷éÓ­_{`mlèê4a¾F|W¯–Í5®'æ·µEØÛãMU@Ï<ƒæÀý÷‹1©FJLL`Ž-?ÿ¹TÃæ7¼,°úßÿ´.bèÊîüÏæäØú)"²Úvå•G^~Ùý‡ 7ù dI¢™=OJ&L`EgM…O°¢£ã0öì®-¢l÷-(°|þy~ˆ¨ƒø›/½ò!¬B;A—ùùáÖÖ/¿œ=8,τà °Pá'[`8„oÓO~B|Ò:Œ#'îî¹åöoýÅ/Øtçp1‚$¢Bè²Õ°ë˜›ØG³s§øxu1/ bÉA}´½ÁÇI‰ï† šŸ’¬,N@é9ùU†6˜€´µÖüö•× ßùÏ‘‡à")™y~{øê—wD§æ6Õ¡@höðÚk_Ýéžuñùâ¶¶H/>™Û¨EdòÖl$(ÛmÃMì"©Œ©sÌïß1¹vø®ù{ÒòŠÇ¯s§ÜÎ1{£ÛšjÂ㳇=°² °Ä;<õŠç¶\ÿÚ®í6$ßë5ì«°ÓEs‰q OöÏ5ÏwŠ òñgLqÙUôÆLÈJ]Ï’¬=œÇŽÕ,0.» Wc#ép~¯ÁÕŸø˜k  aqÝñ«_…8à½x1ë7© Zä+âGµªŠmÀHà ÿö7ΑÑÔÙÙHJ°…gP›hpÕš]Yíâ‚Ñ+1±&A'BZÈ¢è¬ìÖHÀOJHð¾}š×ù´41É116~ˆ[¶¨£G9MNCM š¤„Í/7n¸bCž°i“Ù?ÿ¹ù’K°ðpŸ=;ÖÍ fÓáècMTZŠªˆ²¶_uÕö+¯ÜöóŸo»â ý™£¦¡ÎšC”K.ÙsÛm(n`68ºe›ô¾;î@¾røÉ'qCB‹´Ý7† (ØŠì8jö¿$a4 ìþé†jrR(&ˆ”ˆª^#ÑwãÖÕT p)*.E³ƒÐ‚¥]Û>ƒqhE™•W¼¹[¬•g<†ÄÁ†fP\¢í¹Õ~Vž0tÅ|Õ¶™X’ÂuER_[ÉÚ½ª![~V4ÕÃQ¸o=ÖŒœ…TõdhH^OBö*󯸸ôX2-·¶–ì?(Žhì¸in¬¢n4¡­å!†ÜZ`*$7¤j­®$·:~Z¤5‡‚0ªÕÚE媻‹í®M‰0OöúÖÖÒNq+rjý‚,³ii,ºâAÓ Œ-:¦2ÄÒÄ*EE¨cÈË bÂ?Ä╟’ s ­ðädäF ;еóeÒÒˆOq´3qÊË¥’§–yF†ÿ¶mðñe‚›¼£'Âi 1¦ýk"–¹ì’ƒý(13–#5!ÏlhJAÁ)i‘QQIYÿi’•”ê,(Y j~H)šFN·¸¨@Ní"¹f¡RU¥Î¾¹0gRÕj…€B Gh¤„¿š-…¾;÷¸Ç.CÐÈÀBˆµÆ<ÄÖsTm÷ Ü‚‹G’°ó–`É?y$÷º1©þ³ý‘lü%Úñý;ú¾£ç¤$Ç£µçßžƒQA’ùIÙòÔ¨,*§?íIR"¼„=&ì4‘g°x0ŽiØ–rêTÇ—ä»W yÊ:ÝžÄpM{ ”k8’¦CœE@˜ÐøhòŒë¯?ðÏr:é}÷!§S G41ÑÕž›Q¡ÂN9<´È:nNBéøé9kÛ)óSDè‘¡©2Q(ˆ”ÈÊ^Y¡m»…X°“¡ü‘…ø©ª¬À%«„eDZ¦jnt¢@$M¾¡íÖ"èá²îwr§v’{4ý)¼@vù EÐÉAÝô€¤dðtkMRc8’wÏÓOo¿í6ˆúͽÛu×íùÛßÜfÎä¼v1Éài”ª©B@! PtEJ4G#q)¹‹ö,ßÄNÚºšÊÌü¢i›½§,9¢§mñik­Ãžt¾IÀªƒÁ¡©ÄŸfˆЀŒ\îºöPi3r !1H&P¡sA+$rîq"‚âÊAH !hRxJFuÕ¸3 ŠÍ ‰ÍâF\¨õé™Ý7]ì&š¨oÃÃc½½=æÎÅ] ;_Âf³1NM”÷ó¢TE …@Ï#0°HIsCµ½O‹]ì’·Û„o° OÌ.¼û£}[¬#ò‹Kñ rû°T}}ºí6ëßÄ­Öál!9Ša£MëOŸÞœ˜U¶Õ&*ÓÖŒ(¥&86s‹U˜{p2’âíwŽÙjá‘YÁƒYBjYYzÄa’›W•”žSðÙb—Ñ+Üö:F"né_FrÞ[‚9l™Í)íº’Aømûq~>&µ`Ò­‰æ—LÔCêR( ¡‹@vv6KXbb¢lŒ=ÝÅé¼Ú%###ÝÜÜ8È· dÕT_™;_(Šðò4»”Ü’/;v‹µÂÕ;,í‘Ñì¯iyo®}v.–…unÁ)‹÷°Ý¥¦¦¶çLÛê?e“/6°° ˜L3×Ï”v~‘éCþýù¯x„1¸PÃãûz󶑇8ø'¦å==Ñ AËä ^cW»ï°‰¨DžÒß×ù©o\\\òòò õ•Ÿ_`üoP·EU^! P(º†çìrìî!%U~ixùÇ׿¯M·mnªŽÍš°Þ3.=oÚf/ŒJk)ywŽ=¾ÎØAã–†Õü¢㤤å†7L’³‹¿X䜙ˆ‰†ƒÎ±OŒ·xeªÍ=Ÿì?à[^SùüÜ´­<„Ç‘hд…»ñÒ˜š‡ïԼܚ±x»M$›{Qëè[xú‘™œ)ÁþÖ­[7oÞ¼E] …€B@! Tlß¾}É’%111ý/)A}cá;g»oEMUm•¦^ñ Kýx‘SQié.ÛÈcÇêpU‚qÉð©6ë-Â¸Ä ðˆå„Ú͉A}ÓrÑ“›hFTZÞè•nøkw I^clç“Àxøx-®(ûÛW£3~Øâã蟗’3{»/‚“­Vk‡F¥å¿;Ç‘LpݶÌ4ø[¬Áj¶Ÿ¯ó % ÐÔÔÔ¨.…€B@! P NZ[[ûŸ”p†®>áiì¯Ñ6ÑT”§e:ú%bšÊ!5xû؃w²æ—Àä™Û|–ì ˆIÉÅõø¦ÚR"@VˆŒáj|ZžW«3gõÍÛí?e£¶«¸7¹ýݽXÑZ{Æãœ¬Bâ2§oõYw8®ÃYz¾‰š“cµ®AÉÈ`ÄZ¥¯ó#%g~—ê©B@! P(5½nS"Fl‡.è<SSèˆî†D£ eÚa¼ðìX‘¦È#á š°¤©F|hùÔVahÒ@äÖZâ7ÖUâ9þÕšswr 0"rB¶µ¸¹—h(k8¦˜´ÚÑÁx6k©ÅU|o¾Ñ0©¬¬ä,<++«AÝTå …€B@!ÐSô)ißlÂÖÜšJX…NMŒ=‰µ{';þ¬ƒC'ƾI 0øæÝ¤¥×kú^_ã" i5G)……Åϱþ”•(RÒS=Xå£P(C¾ %,Àˆ.róŠ|"Ò#²[{è¬Á覓´SE2âÜBG’3òœ@;°-**1ʤÝ],ÿ‘$¦çb†Â†ñ Ûï—"%Cf©†( …@O!Ðë¤D£åyE»ì"î \dà™^_­isØýË^ <ø‡ÉˆæižܹV Ü©lm¨ÆE;qæXf"¸bÕN™9V‡Ã4œüªÕ}¶È.‚Žf›u¸Wh*Z iá@ОòSŽ<ä·éH$Çö{)RÒS=Xå£P(C¾ % vÊÌÙéW\Z›’뜂¶%$6óÓEÎ8/AtQTT¼áp('ö¡^ÁµZV^1ÎÓöØG¥çÂ3¾]å¶hO c»uÄÔÍÞ8&Á4D¤(œwØ#nÎßøÔœ…{0LqðM:âïà‡{–ƱkÜçìðËÌ-ŒHÎ}b¼åë³=BÒp6¯iyú[T¢HÉBª! …€B@!ÐSô)A8$wò#—»ÌÜîƒYklZîøužîá™swû;ø%eåÝcÕצۑëÓmCb29cÏàW­ñ#Í¢“³9¼oÒzÏÀجϗ¹YáÈäXmRFîÝ›þs„Ù[³ìó‹Šgíðå|œ–zÍýI«n”MIÏöa•›B@! P ú€”Œ:±]­­ÄFµ¡®²® ÷iåøá'Ö!ÕU嘕pÃÏ–ú*ì[k*Ë çý–i© Ñêª+qðÚTWÝ\WE>¤×wæ`VÂöcÐJBü—ÔV•c‹…´Í U(z8솧¤ï(îw^¢lJ†ÈRÍP( žC ×I‰ñF_ÈGy©¶kFt(²;×à¡Dû§=埑Á‡ÄkÔïÛSiöŒHn`ü•ä'òÔ…#DL¢vßô\V9) …ÀÐA ×I‰ð¤ˆ48‰ÿè¢a F?ÛÕ+"_ÁvDÂ6j´íÃ'ÅdÏ0*cªa¬›ÑéN¿ËE:W@IJ†ÎR-Q( B wI‰˜„s@’¥GœC@çäYzÆeäÀ6 r6žˆC´ª ¯ð(-» *)‡(ÂE¢2 ‹Jø‰¾†˜xIÍ*HHË“Âyœ¡JŠ”ôPVÙ( …ÀÐA ×I‰¦£)-[s(xÁÞß¼²}‘iȬ>q©¹¬Êáñ™ì†…À?0‰JÌŽOÍ-(,®Ô.¥ÍuÕVž œ÷‹,"RTR²Ã6'lœŒ“–Ÿ…ãµ%¦?löÉ/,†¦ .^¢HÉÐCª% …€B@!ÐCô.)i—‚”•µ6VQáÛßߣU»¹+ר”l˜Ê>Ç褌|¶Òr‹ýq—ß¼]þóvà†•5ı÷KÄmH –(›-Ãò ‹‚¢3¶ÛDàŠ­¤¤÷kïÌvXw(¤Ípªð –(RÒCXe£P(C^'%ÂKÄËÙ-ïîæ(ߢ⎿ ˆÍznÒ‘‡GÞïƒtä¹ö¥åÞQYÏO¶f£¯ÿÄ¥û‚°G—@AF,=šWè”òòT³£±¸œ_iòãnÿœ¢bŒK):½RµD! P(.Hú‚”hçÔh¤¤å·¯î„pTWV„ÅeNÜàQ\R2g§ïÇè̜¦àѵ¥¨¸ì•i6mm Äg÷¯­oâ|vö¢²áHà‘ËŽfå ©ÉÉ/úz™kaIé^§¨Uƒ‰o`>ƒHP¢Î¾¹ G›j´B@! Pœ¾"%ÚáyõÏ~‡ÛÖ:èC}]•…WÒCߘÿkä¡.1(tpÉúÒT|©½>ÓN$%ø&‰HÌ"ðÉq–ÿ}xõ¡Ô7HJV Æ+Ú>§(Ø ¹ÍÝé÷ïoÌɼWY‰läéÁK©oÔÀT( …@ú‚”VôRMXr¬Ž¿riÇÿ¶Õó¯ wj5Ñɹßoôž·ÛßÑ/‰ÍÇý5ÚI¿†h˜µŠŸ4æ'÷¸â“^]×x†È‡~衇–,Y"qŸ~úéE‹ÕÕÕv¥ˆ~Œ³qãÆÇ|Ó¦MýXU´B@! è½NJd!ÇRU;ž×ð·ýH¼vr¢ýòY9…NþI>éºÌÃè¹v«m 6ìÊ9qÊ»I×y‰PÙllðÇvj ö´¼ ›*iˆÓõ㛤¤ººúÑGݳgOaA¯ã‘è'ÆY>6Öòî÷å—@Úúôª¯¯ÏÉÉyæ™gàIR0½ ¦‚OpBÑ_>;ð߉VúØôhhVWª•”]þÚLû®ÄìJœ†¦ÖW§ŸÈ­¾±¹ ´¦¥¥µCZßè|KïÔÆf-<;;;00&HœÑ£G92//û§&Z?:Öâ¿ã­cñü›£¡Ù]©Ãcã,O-)»!ßãÍߟïÒÚz¬+Y9NZZš···^óîg¨rP(}Œ@ï“þò²Ââb¬Y!…EÚM'‡ielFvR_­ý[rÂ}Z»{Öšªr6c!«¹Š?™™tvt 2§øiL õ®sÜO¬¤8QðyïœÂÑĵÕ=fNÛMRRUUõæ›obüKw1qŠ7uIÒûÍë3¹Ï)®)¯jল¶1£¡T›L^ie½lAcSKJNETJq³amŽË(Í-ªñŠÔ]–ɨÔ /,¯#²ot^J.òª¶òê†øŒÒè´’¢òºÐ¤Âææ)Ñ'ZKÈ5bĈ 6Ƚ¾.:g}·ÉWŸžh•–§Õ$,©È7&/,©¸ºV“X@¸÷Í÷‹åœç6â|¶ø(7Ååµ9E5ÇŽ«mhòŽÊ ˆÍJÓÚË•UPí“’PèÒN ’²Ê}¢òB K ­Ö/{Ï'ûõŸ”•[\}ìX[ë±cá9”™ZÌÓ}. “7ùyEæ6·´·KoÂØ±cW­ZeœçÔ­þù%'¤&qeTÞ3"§º®‰hMÍ-@JeB‹[øyÍðí™…Uàfœ H~»ÚKBòKkçîÆ4J{kî•›_Z#Rsµv&"@âgB¦¡¬ÈœªZ­,ÞB|f™”US×,I~þóŸ¤î …À B wI‰ø}G¾°Û>jÃá°™Û|6Y†­=‚Ç3Φ9ÖTÍÁ4"«À[ þaýê’š™WÄ)6Bˆ—¹hoic’³q[Bd”8- Upþ›A}þa<ªÁ{°Š­ã¼Î×)/ãX`\«Q¢cM5šØãʘÊòò€È [Žn4uŽ ŽÉä ’ˆòˆ-?Tɱæv&¿Ùo—}TsÆ™zDTÒMR‚¤uIzz:]Í)(s§}\xrqLz)ë4!ˆ¥ûÃü3¸÷ŽÈûa[7ÃYcá•6~÷ŠƒaËÍÂG¯öò‹ÑHÀŸ?1Ýf;n7«EŒZéá‘KxxrÑ<“à9»‚–˜†Bì3þ=Ê|ѾÈÔ’ÿ}oš¨ŸYúÐh z´ •MgRâš=e‹ŸDxj¢Uº­=9{WàŒfîÉü<èž4q½÷´-þS·úÆdUXîFø&ëh‡€ +4M˜·'h¹YD@¬aáÞï·ø/ÙvÑ눙”SF„¹»ƒXÚ÷¹$–ñ’¦æÖŒ8¤Ho^%Leú¶€Y;ƒfí \o©©œ– C *«ÒÖþ¦¦&cR²lÙ2£!}Œ’³5¢ÆUZ¼/dÞžÙ;gl×N´vÈý~³/9/?NMÜÃrn~k׬aÉbúõäx«Ô\ ã‹72s ·ÎçXÛ1¸ãÄ >¼‚ûBbÓË"RŠ–£¬9»åzGæÂ¥(zùðìâv£HITÕO…€B`!ÐG¤ähP Gøþúåíq™6^ …Å%Ùù%ëÌC|ÂÓÙŒ((*Ùd~ðhlbZî3ì§nõ‰I̓¶í4Ýû阴"[ß$3×¼˜dåräï^‡ÈÖæZ¤N~‰0ÌÜÂȤ좢’¤ô<ÿ¨ôÔÌü¶¦êUf!l®­®ŒLÊYs($%#_x Äó{ßDüdä[ë—“œC’]¶‘mÇêÝ‚SvØD$¤çWÕT=9Ábépÿè ˜Í€"%í¨kh¶õK[i±Ú<’ÅBSKëV›X$ikk5äzeš-¹'XîTf›]¬ :ÕžL“[´þ݈”ÀÛ–kk;öêLK¯Tû @.ψ\ ¯Ô©ÎHJ&oöMÌj¯0ì ¯€6~é0¹ËžÒŒ9¸_²?”Ü*ªÛe6·¿gpÏsòõÖ'`ì˜YPþ09NÆFÄó›±=€¬$&ÔdÞž`)ëòg6Býí =않 LÏJ‘’Îh«…€B`° л¤D7Â@t"çiÇ88+¿héÝv‘‹öø„§Áfm÷Ýf±ß%:1-ï­YöS6zE&fC ´µÕNÝâÍ!^IÐíﲋDܲÆ,d‡}$rއ¿áS¸Ù'"mÅ üüâO»Œ]íVY]>}‹&˜1uŽÏ^b´×1jÚo¶ã@V3RÁÒ¥¢ÌÎ7qæv_öþ°¯xÕ¡÷æ:š»ÇÅe/5 ÄEÛFËpßè¬7gÙÏÙîkå×P3°$%BJ¸°H@:Â?¬%þfXƒ7YÇðÍMxJñ ³pnø^ç/š…Ë<¸p˜¹%¡©ùp¾3?«k›°JáI‚²Úagâ”`å6n­·}`&j؉ޭ_˜ÂÎív#§#%ˆUXV7ZE§åk}*°Ý.î°gêJ³ð;¡GHÐeè9#>Ýn‡]\Üñ5{ÍáÈÝŽ 0’¬0‹`%^gÁ{×®ç¾Ã«M›•OêG Úú¥›Mr̨2h…ä‚”üsä I ªä+•µ ˜p ^Úb»Ó!žhäI{‘ ´§:#)™²ÅÉ '€”@ ,½ÓÖjÕÐÔ‚R 7XF¡µ!äšW·ëõÑo^žf'Ê,ýB5³Î"ÊÌ#Ù!0óÁ¯Ìj `ßë’¸Õ.µÚ:Ë(dWR–Ð²Ææ×°ì}G‘÷ÀŸ%+EJ:£­B Á‚@¯“á%â<íÖ÷LX& A1™:cøxÓ¡£±u•¶Þ‰S6yE1Ù—–­Ø—–§ï©Á¤#,>Ó5,k«m~åãÓóðúŠ£µ±æñ1‡úÖwµ/Ñð¤ìsó‹?_ìâ‘FÈOþ»ÙðšºÅ²÷ÒóÌ$«ÄôüšJMàÞ;\·Íß`ã§žlgogÝmÂ,îR–¿Æ#9»pôø”„1=è ¥Õ7ÈBŽx§!Þçóƒ ¬Ji3’‰ƒ®ÉY…U_¯ð˜°Þ‡ËŸÑ¾ãYþßžíÄÍ~פݎñMÍNøYYÓpïgšíŒ„ŽOö…¦¡‰YeÈ6ï =èšäž3r…Æfär ÎxèÓýÆ–ž§$%P„Ñ«<„À’Êzô3wbV²â Æ3’sËÑ=Á¥r‹kޟ猜†58ѰöcšUX[Rcí—öýVT…5ItZ)+:²½D–í[Þ5)«n@F’œ]Ž•Ì&A°°Ê)ª¢Ä¯—kBo²éHtP|¡ØÓœA}ƒËèÕqéíBŽ –Ñ!lAÐÔ 5!-B \ðG“`‘Ù<òíaj Ï3Æz4oOhlzi|F™GD’!ÿ˜|”n¼Á†Æf’`¡I",ÍÄ9b·Ç%áˆOªVVeÜ݆²ª´²²Šªæï 6hî¸)1ÆYÝ+ƒ ¾ %ºó´Ë´u±AEzVÁ¤ žS7{]ãᚆ f™iàØ5î8ik¬A2q½'Ò ¶$%õ߬pÛf9owÐúÃaˆ7p˜¶hoàÂ=Ë÷357N\ç¹Þ2lÔJ7rÈÊ)újÙÑôö¤4½7Çq¥Yðn‡H¿Èt¼ÁNßæ;z¥[6§íh‡ë”a3{Ð%Ù 9|¾ØÕ;*sÂ/gÿ¤¶Ö;ŸÄ¯—»NÝäMeUo̶ŽÁʵÇt7²Ó§²²2++ËÊJãçzaèúî»ïJ*Œ7{ÌÝ4×$xÊ&?oYÅ7XE³£õÀè„!,ù[mc¹ Ž/Äôµ¥¥eíaͨØZb5‰zŰNç‘ç<¬76û%d–BPø"×ëV|Óë;«Í®àÎ6%°„½Î'R jÂrE¬"Ð1µ´Ë/©A–ƒ-|…¥½´¢~«M 1ã ¼£r!)9åÓ·ü¸'C ç`ͲÕÚ7mÒF˜>lÐ@!œ0uMD£ÄÉJ ± ƒÖ¯–¹£ø˜³+˜þƒ9ª‹aË "ì<î )(Õ ¢&´?Ô¶$ /ºè"¹7nÜÖ­[[ºß5‘:KEïpˆ£b“6ú‚ !h‚&oôÅ΃²¨e°¨5¾²Ê(‘´«…WÔhÒúšEûC?Y|dÒó*0.–ƒnÉü¤]»ã‰ÿÝF_¡;šMÉFÍ~5-•̯¼òÊ©Ÿ …€B`° ÐG¤„5­‚à<ž{ø”Ìü½ŽÑ{¢c çïqŒDÏ‚@…Gù%—„Åg!S!2$†cú6Y…ñŒÇzµ¾FKK„}NÑy`R]Y¶Å*b¯C”wX:ë½wx:‡ WW”ChÆp:1»y1Ùï±j^¶ £Ô7œÿ›‰ë6TH ˆ­krfž!Ãr÷Îå¡D¶üx…q`‘a“N¹¶o?î)©©©¹ñÆyyøÏ «±bÁ*øWcØ"ßÙµ š±ˆ,È ä^Öl–aÙ†ª/áh:ŒÃ‰)y²…Dï¤ NÈgi”‚؉úÜsÏQcRò›ßüÆÆFÓ­tÞK†TŒœõ¢ë ©×B´ì޵WI¯*aµ¸³ih†~I[ôëÁ¯H»Èª¦¾‰8HCø×‚ƒCT@ê Çç¥ð“½62*ä»o¸goDPBh‘q5¨YÉÖ.`$BŒã ›¡èÎu“VÃlä‘ÔAÇœŸ4Ê( MŒË’VëeMš4ébÃÕ¹ ¢P(}GJdK‹¾ã¶ªª‚ 8¸‡ ²a¯ ?‘‚vâ”5ÔTÈq6r!Ú€Í( )˜wD£Ú¾›2ò!…6PÙåË!1ü$PŠn»à6¯Â{øK¡ÚqÄíV°Únâ£9’í<†‚zŒ‘t_RÒ¿}«¡¡ùµÆuèÀxÔ9¤ë¼È4ôÊç6{l­­_»UMf~ʬzµ9½]y•¿B@! ,ô)ѽ¦Êîm´ßœ‘G'¹ qØsë¦MI×_°Š©P( Á‚€"%ýCo),#DÕS! P(ú EJ )Á¬­ªÍêR(NS'{Êú}¤PªAe¨i¿W¦ZRŸY·.vmW³…WWÐßx ½]a6Š” RRWW¢.…€B AAAœSÍþ*œ rBuÿ"œ¬¢ÃùŽý[™¥S·øøx€Š‹‹ã~@Õ­‹•áýâO£@#""xï]LuÁFˆ99µ_†…ÊpèÊ¥HÉ !%œwãèèhcccooow¾iå:ß T:…À@D€.mmmíîîÎZmaaÑœ¢ñ?Ä÷S°§§ç‘#Gú±2Þ5¡>¾¾¾|4ûøøœSÝôÙ£çJ·´´„QÕÖÖ=z´›Sâ@ìÍ=Z'àˆø¬MLLºSöÆÞ[ä}ÉpèÊ¥HÉ`"%®®®NNN.ݸ —³³s7òPI(;«,"}Ͷ¶ý[E&âððp¦`–F\ÿV¦CéÔ á ¤1 ÷]¯ŸÙƒ›þm«6ë+’8•éz.̘²jWJJÊ醯U^no@D¡aa:Ö¥K‘’AFJd2#ð‰ÃÅﻋL…´ÞÞÞLÜý;¡ôF§Wy*ŒI Ÿ†|C34d˜È…(¥+#…y™aŲ×HI®“Yø%[}ØRîT¦;u8]ÚΤDŸOÎ0¥P[ EOCÜÜÜ [ýUÚÅ›íLJ„û[ã·LMN7Ó½±ÏæaŠ£bƤ„þ©÷Fyé ¨*ØöÆkU¤¤xÆ9•z»oP߈¤Dz*U„ùùùèÑéÜÒíŒ/™’ŒC˜ŒÈ„zÒ %¼C&wÎê”™÷ÆŒ©òTœ$%¬Løf€`b’šš*7^^^DÓ;sç1Â8bÍÍÍeˆ /9¿žß”-Ù2lóòò øfe8W¦CAgƒç]1v %‚XQ=©ë}çù„IÓ>uýüüˆÌ ÔDêß¹2ÆŸyR:¿OóΤ„9™·Ì…þÎxJ4®^‡ªvî]™O™J–sÞ;0ÒÓ¨Fff&úÄνÐ<<<ÀOD—tFéüFÁ)Su %T¬ ©!C#;;»¨¨ˆ*‰ Øž®+vnx_Ÿ"%çDú'rwH ³­ a÷Ê×bX&8:7]M(‹Wå'ôHBHX^^^RR‚Æ]žÊ£©DH+ä†K×ûpÓ{R¾‡*« ’:*jl¾ìéóš° rÉ’¬éÉü•áÀ=7|Â2¸˜¬Yç¤çëI$NW€íLJHE¶,W,êŒ\T'2*/QöKˆŒb©’þSÿ"è¢+ëLJX0X¢¨pqIÝdN±/‚ÈhKzz:ñ%+}ù—™G“Vè e’¥9úÌÓuH[×”èM æ˜¾òº©¡ÔMh“^¨þ6;LzRCgI¥‡èS¢µqÃ%a3r–¼úËG#çÀKô†K5è`b`ñ)@éÝÀ¥.¾Ê.F“jë’)ÔAΙE·BÅ:ôIˆêãE:dçtÖj(RÒ?<ãœJí&)AkŽ)5$ƒCVnÞ:󣱡¡šÂ!|Ê a;at>âÃH È|¢³!yçT<%ÍøK*¾œ>ŒY÷œ×#Xñ’³ŽC¡è@J(9ÔÜÜœÏA¦cQtÒo§ŒéÉ|ª2(˜‘ aàð—{¾yÄPbd1@˜»±ä)YuÑã”’ù &²ÆS7Jä"[Š“…JJ§bIIIR4#‘¯¨ÑøY\¬ìˆå Ü0iÜKÿæ>+ì$%ÀÂB.óƒ@$+7ëç=1ÏðˆIƒ¥é÷|RËGU’Ú8pÛn—îÈÈHþRa¦ nȇ¶°T³¼ àˤ_G{‘ýðùÄ$#EP6bÒõšŸŽ”ˆú¤¶ Ä{$²8ˆg(Ó;ÐQCªDëx¹Ä‘™2mJ»ÀŸÞ µâžÙpòç¢ùò¾äõAbh&?™u+a´bi «ƒ!ÑDÓJˆâ¤‰¶ T{êLZР»Rnוq]_g&%ª“yqÒ÷ "ô.ºÉ!(ò~E'ò'–Þ©Xòžùê;R"Œ„÷½dÉ’'Ÿ|òå—_þßÿþ÷Âé¯W^yåÅ_$ŽþWâJÈöö#jþ¯ýkþüù¢ íƒ«;¤„ÌHcŒÛ1„è"0wƒ|?1„è@"þ¡ë0›0¯1«2066HVoLyR1bIÅ@a#Ã’øôBâ3Ʊpdù28[WTÏ}‡À)I ‹kk S§tZC@”ú¬ Ö3Bàë\ÈBX'JŒ/â°6pgvf¢ceíâjÑ™”ˆªž “1È䛘‚Ds$†ç …0‰•(ߌAùTeęŌ5ufUãžZQg²êޤ„âä ^ŠÆ¦Â< °)—kM}¨ªÈ' L¬£|ÿ0)!„©C¬qY_$¥¶äLÉvÈŸSÍOGJ¨-°ð‚xò*yS2OB8(‹jE݈FÚÅ[ „¹Ž%™™MV_)‚7Nm™3Ažo9òa…& ³„×$ïÎÁEnº¤„¶°TËÇ!ïT,Qx!Ê"s.r !Þ¥pþÔTäO‰ä)¯=8rNGJ ’¢š¤GdW07Hò`xÒýH.Ì ©9mg}4@¦+#¢OI‰ôƒqãÆ-Z´ˆ7ÁRÇ8§a/Âéå4U´k¢­”h¬‹´í”©ú&ʬ^½ú‹/¾ø¤Dgôxcqý†©JD¬Ì¢²!„Q'¾Iô EN|"KœÎ©äÛeûöítD}·Ž|*q‰¾¶ÇŒÊJ!Ð}NIJèç ú¼Ìò2J‡ç/#‚žÌxa€"{t‰I4‰À=iå©°.öü¤„BÉ™‚¸d”NõÄgø)õþ$JžÂtxÏ©æ§#%òfS&(yò*©¼H¤ÂD£òMfB.IˆDTz %g2‘@š¬G^¡¿>i í¥âHcEТ#I|e ™"è%’¶+Ë|×_71OIJdDèëˆô7é{ܤT• ˈv >çºô5)–Nž<™ŠBñDótºëÍ7ßä{KÖ~ÑÈ…ÉL×ãŸ!ÿî<úo¿ýØb‘^@“!›"îëÊ¥û)‘ßy0K >e~‘±¡éß%Y&Ž©ˆ#›ÙàÈTLÔÀ2«ÊÕÅyùœ†Š¬è&ôÌSztÕû¼ä¯}u#úø’Ÿv¥ž ™]Zçñ¨Ú8ã†çv®ã±)9Ã|bŒ•>WÈ,iú´ !Æqt”:ÌÝ©¹ž'Ì ³ó´3¼G}º;å 5žß¾>×u¥Ï·W#ú+뀤^J{iv•R:{tÕßšq÷뀕q ¥]Æo°+c8ý@J&Mš$:Ú¥K—"Û˜:u*"S‘ü‹: ±Â=¦ ãï¾ûFòÌ3ÏL<]¸p!Œ ²²råJ~²²(r#–SȈº²fw3pÔ¨Qœ”Ð?dp¯^¼J}*¤ ±‡U—B`€#€P]ìåì›þ­m‡³oú·2J(´(µè&5ª†g­ †æ™®YDú`Jøà<¢GÅ+\fΜ9wî\Y¤$ŽQÜÔÔÔâº}×Ú½ûØOà %m)Œõ“XÌ1kï‹Tô«½ÓRñ+Ú&…QTtŒ…˜,n“8;5LÃ#ØqÇÓ" öPQôÕí‘D{Ç ¼ \µÊ:¦öN®³Ç/á„£L‡”8å%ÎÑ–\mIJHõ·ß~“T¡ØB âBe——^z‰j4lØ0x >º|x˜Bxå'÷”Å‹ã!EÔ0Qñ“,œ[¾|9«´ƒÃ¶DNs ycdÊ7Ó“&¬/õªJÉj(¯:n‚bý¤Ä’âTa …€B@!ÐyhKR‚£r=d; Èø§Ÿ~гˆ¬ š?>¦Âgžy†)…¡ÌÈ‘#¡÷³fÍ’{Œ+H 1ð¦u˜ý‘• ¼ÂgeáÂ…=?ÿì‡ïºxÆà+ûÌ´ùÈÞ¦›‹Í»aç~²ûš/ßž»Úµ""ž][[$ÖOJð{Ç.Õ5¶„éì[Ú(ù­é(˜¾Á¦ØáÍdCdVt¸0&…%²”Êfa½" ”²ê-‡K[@ÿvHm”¡*å6#%ÌZ‘0Öf[0iŒ=¬#ܰ>»wïÞДÏ?ÿœš„ã fÏž­“>ùè£X Ͷq˜I˜¦!¯½öó8dC¶¾ÑóãéåýF·÷žzþé‡.xúÙÓßúôŒÏÆœÚkºM¯ 6==mÞõ·y-èº÷#?ø#}òªÜ]ž¥¡±•éuå{öÜwlD¬Ÿ”0Ì|ka:|¿\d°1Žƒ…B‚¦…!ÛvIñä§Û†Y°Â¨À“.]Kï-¶c%”ÝØèsPÖÖXD6T”¬ìX Ž/uÄÆCÂzºÄãËÅIû ¸¨„rjA‡”8íQšƒ%W›‘¨ƒl.„¿vÙ‰H6øZ±b?áh8  èh© Å÷×W–k»Ìu¬ ÇJ”ª*Êêk*,«¦ª¼¶Ú¢m’aDª­.oÜ_Óx°¶¡ö䥫 ¯w…m’ë‰D¶M¢—@]É^²Ì͘ü™€Ð~“¨teú~Œ».Lû%ÝbÌÈ &%þ “ã2fÉ-ÆÐátRb¼Ý¥IÅÖÑRØle0æIKzŒÏ~k„”gðh]Á1 3SG¯EyôæpRI‰lƒØVÎ8rL¶É…bÎËËϪ(Ž[¹#òü×vÛ¼°È¦ç×ç}óòÙÝ=û•{ÎzæîSyô´Þ³yü—S^›fÓ}­Í«l¾ö·ézÊG¯ìít×AÿP0læÿ‚ä¸ýû+õ…=Ž”±ì¦Î—v'mêÐM3MÌü•QkÔ2ÿþ³<¼â„9ºŽ‘¢Q±ê=õ>f!Jw|8æŠò²ýõUðÊ.Öÿ’RBW(çÉÉ¥£$'1ÂÑUr‹½jk˜ ’pÓ~I·(ª9)@äBuu l- /ÌI‰ ,ÖwQœ2}&—P.ãÊ@U1ε $1t±v!Œ“L™žoÆ^`œeî­r‰€#o%<ùiÉ6è]”à' ÿÐQ0¿Ù·oÂö1ƒ~Ž|ò›7ìm>°µé¾Ôæýa6ô¶éöÁi/=uÊ3·Ÿþð §ÞvÍiwD—^¡¿++ÊO„23Ä4ð»¼I™éiñÍöÛr ‹±— òåRឯª*PuÔÜŠ2- ƒœ!!9bˆÈ@*µIˆÁDýŸð¤‚ ÑrcP9¥Õ•eÕUåõMù:Lx¥g„ìì­­pöO¸ÀkDµá[¢­(×þmUE9àð© IéyüÓÂiàThÊ„Hˆ`ÖÔaŠòãs-¿ÈŒTÚ_Éb ?2¢ÒÔJ‹Œ×VUD$f/Þî”â쟛’KxRÌ' B üC(é,˜‰Ö`Ô)ßS²Ç ˜”¾&+ø"X!•Ìï!aS‰‚‚\pÁ¿þõ/ùE˜VÅÙVMH‰èf¶u¸øâ‹o½õVÙ9©£d³0&¤D ±ÙïŠM³¸‘`0{î¹ç.3\B¶è^uÕU]t‘lÞÍC¼Ï>ûìnݺ‰ŠaÙïz¼Äœ”€˜@½`Á—è­ÿ¯ª¢÷øå—_Šå´2³8§Ÿ~ú¥—^*›1ñ'²Ù:»ÅRë ¤ätD…‘£¦qorvR¤ÓüØŸ¾Š¹µ[ÜmoÅ_ñjˆÍÿül^µyy»ÍG[lz,´ùôo›}l>ëgÓí›ÿ¾lóØK6hsëð÷\0ç%ûé¯lœøtbàJgg+ß5‡`0†‚¢‚ÂbÂÇ¥ä66T£ÞÓó|ÂÓhD¦Ã¥R3ó½ÃSÝ‚“÷UŽh\‡ã`9$G<j£“²?8&è)GJ°¨¸$D+fa©ÞaiéÙð˜Â¢b蟓Á„Ô¼ï&ïÜìŸWP ©i'­Üb?ÕæLH‰xö1?M‡Ë”6< OŸ>Ò{°ßÏ—-[Æ};eß„”ÐѳSâ¿ÿýonÈ8ãR—Ýæ8´¡1)FÂ\9»0ðœÕŽß~û-›5 ‡:D¶…oÖR‚¨äâÙgŸ¥X{õê%¥ü¿ÿý=–˜úgñð•W^ÉjØ÷ߟÍÝQ¨Ÿ|ò ›µ°Jö©§ž¢z@OY¢ã¤Db•w,JdÕÁLH y„xÁEÎ8ãŒË/¿œˆ…aäÖtn KLh,´ êÃ[o½ ‘ÀB6ß³gO¡õW_}5€sßbæÿ)¤Dg'xˆäWW&gFÇ{»Æ¸¬ 02àÍßv?òCÀ›Ÿ‡]Ù-ü†wCmžñ9ã¹€s^Þý¯ùÚ<íwñë^—|ðâ—a³¾ðvï³~ù÷‘áNRÒך7OÓIIMeYhLÆOÓÝ¿¼ëû¿w­pŠjllxêgûßçz<©°hϨeßLØùëLG{oØæ“°¯¾J7äæõ›åõÝ$×¾ÓÝQ~°ƒ»¿Zû×Bßo&íüsžWX|vãš »b¿¿ãû)»Ì󆦄Çgý<Ýý»É»¾™¸sÆNé}wèö?æx}ÿ·Û·“v:ú&6ÔU,Ù$|òë,4½Á^¢q Ì“lƒ_ù} ÂL]<àΞ¶ƒúòÕlûЂ¢bƒ-G³.@)ÿqã ùÞd¤ß,OØŒ{pòà’}ÿùd5±6Ă‚âA ¼¿›´ó§iî~¿!)=é¶ð;b'¯E¶Ÿ§¹=Ñuüª ÆýÕîÁ)}yÒ®?çy§dæŒ"{àP„¹ö»‰á‹±;V:GAJ^úmsM5 ß°ô隸ùÅd¿=hø,Ý£ê3ÍãÇ)»~œê¶Ò) KƘåÏõÝÔgºÇ&ÏØŸgpäæÁó^[Ü{ã§£]¼CS-t»i±Ó±†æ¤„ž÷믿–Ž‚5}ï½÷7°2„1"?ÛÉ$Ð,)¹þúëE˜¾}ûB’àL¢øÍI {G¡‡ =Äiì&.ZÊеYŽf)A¿¾úê«ò“O> í‹;:…ŠED&ø¨¬Ì`Aè#<ÂO¶·Á–ÆžXP~¢}¥ÝYmö[+˜9)K ÔsàÀðtRBÌ@ÄÙrõÓO?-ä^Pe6–³p#{ŒvÚiP–åùÇ‘ÈÍ^N\d%ÞÁýY¥¹¹ùÙ™¹IÉÞIÞI¡~ÙÉaY!»3wçædådeøÆäåTTif¨N4}s ¡êï5k\µc9óŠJÆ­,()}màV¯Ý)ø—W–=ðmÓfÿãׄ ï÷Õjƒ3icL%Pøp£Wò¢Í»yúôÏö¸ßaÝô‹Ì€©ð¶¡¹XÍ^w?ñ¬¶>d…“vˆèÁ†ªØäœÆƒ5Lßா컿Z—ST:r™™azr‚mÈ—˜šÍnÀ âgÚíþ{vÚð3¿:8ù'róïVm}uEãA$9Rð×b_æ °ŠÚÚÊßfzî)+Ýì·xKX}C-Ÿü0e—oXZhlVÑl£ÇWõ0 ¨tfCH¨²¢œÉx@fŽæýç|Ä”<Ò›£¤ %Õ“×mñMžnºÉ D5Ù?dolrîºÑ=¦Û‡MX(àÜÐ}•©kC¼“ uª^¬2Ð,æ´2² _@‹ÅTµ0Þºí^]UYì?×;(>.…!„/ŸûÅ¡²döeÕ¼5úê1Ò¬Öðlð‰H0O;,ô–«`<ÜLZëwò!¥ÖpGÏ5û4¼ñçVƒxãVm÷M`ÎèíAŽhõyEÓ×óÁ}Õ˜¾ZìP:KR"^zO¶p¤'ÅXÍFGÔ…ÖÁÈÏZ?nô ò¶Í¦9)a„o¼Që öî…”°÷õ,ãÆC6”=¤KIç"%Ò¿¡eÙâ•W^‘„6eµÖtÎ9XËÞ}÷]9\<ʉ(ÄYgEHVŒòð¾ûî»é¦›8VP¦3º /ivúFŽ*Ä"¢“½ ÐR‡¿@†{ìLð¨'ײ …ê!6¶SO=•jÜbÛ±"R‚Ý eOE™>}:]‚ý YôË®$ÜÈêF3¸µNœ8‘¥Â0V.b£z9õM<•èS8¢Pà7Ùi”Ú&ç|rqœ0ñ^ÌMMµF2Z{u"G×ýõÕ³íB—oG±Õ'¤åM\X\Vþæ m(LmÂ¥¢ì¿}8 {ìaèR¿-^ñûë˜Ѫ Îÿ_ÿsë ý6ßùÅšéBè¶{ŒDÍ7 öv¥ YÄa•µ£–<þÓÆ7n;륅¼Zà†ãœ.ˆD߸µ¨Lsb¨©.îW´ñC·?ù“Ý+l¹ÿëu;ü“˜/`Ê­\YQºxkøú]𧃆<Íʺïž^kˆ$,>«Ç(—gú:<ôízÃýšªÒú9”VV<|;Á­ÁC¨Â5(i¾C8g’"Øôõ!÷ôZûÊï[ŸîkÿÃß»Jö”Œ]š ñj¨-êG»ƒë?¶Ià «‚v&F§ÿEá¬/H̰E¾Ì.uyŸº]º—îÝ»?øàƒÒ!@Jn¸áœ 0\s1Ÿ"½J‹½jkmúFÄ@ÒZ)ÁtD·Œ`Ì\ ›Ùʲs‘!à‰âÀËA@~â‰'äø!Ѭñdqqí$lTA1ðûÊwÞù÷ß³Ñ-Æ’_|kAWšÄi–”È´ûabA–¹È;œŒ™¯ë®»N=æÒ-%l!·ã‰0~,%üm‘Ù[)¡áÉšcÜ‹øûè£Ê=9Áዃ*È$‡øÔ0í'É3;šp#$ø ÷ìk^ w¸¿öÚkñN‡S¡/./t˜œ˜Žã¸œNDJðU\²5|–Ýnœ(ðÁgˆß¤ˆDtbö§£wl÷Ã8Q?Ù6Qü$¾›´+65wï¾úU®qKËKötûk[f~qrF¾[ìlûÝ=ã'¬©«gH}à‘ÞèÅZÌ$K² ŠvÇeâëppÍ‹¿ma~G HÉ#ßÛ•T”O]’™[\U[Ÿ–—‘]ÀŒGHªWH î#³ív/Û)ùßo›3r о·|ºšùì=Ä?:søR´/Öˆ?æzŽ_æÏdébVYá‘_RJ´ Yt:xHü<ÝÃà3Qúë,OüiPºçC¤ê ,ÝG:çäæ–ü6Ç gœKúÏ&ð>LA¶ØäìÏÆ¸8ø$­s‹ƒ'¥çGgⓚY°Ê9r­[ÜÈŽ> L<ñÉÍ=V¡à Kò÷À‘*Ÿãé¯tÇW¦T2r «ëjì=“ vlðÅXרŒ|ì4°º¿ù¹‡gŒ\âÊç¦x² ‹ám{ÊC¢Ó™söKœ²6˜’LfµÀùæOmᬈY´5|‘cl-v™šj×Àd\[ðá!Âà‹ÃdV–’ƒµc–û{„¦U×Öì)ÅMv8t±ïxÜYÓr» Æ"R÷åØiYù”Ú°%þ”.,ÌLájƒ ^&cVPs(}ƒt1–˜XJ¤ÓÄÕ‘mxÅp—=éa¹˜°ÓØõÅí¥ÇoBJÐ…Œ5ÿóŸÿ0”ÂóÇd¦ös³mQ6}I°Œw9³ ^‚S03ø”pbm§ó)aäÇþôðË9v‚+fÀ ÏÃ?þ˜Ñ,Î=ø”°Û8Z™‹â@e0{Å–Zr˜0®'¢ž»LÓ0Ÿ¾‘%3Œÿ‚y+ªó\Lqʉ.àÆÎal្’‚¥€'0xÌ*lÚ>gΜ/¾ø‚'À¤(\̼:6\VDJhöPT¼ºÈõž <öØc˜Oع„{úv1Á7‚ñƒƒ†ÊóáÇÓ6.¹äÚ ™¿ãŽ;`Üðü”SNÁ'‹ŠÅI:°!ÅÄÀd­˜X°¿=ôÐCú¾&zÔâM'"%˜’Óóf¬³Ââê IŒ€ûÎðDAs‚ÛºD\êè9VHÉ~n›Ð¼Sǯ döµÎ5Îg~Þ4kC踕sìw£ÚYÙ±Ê9jô2ÿYC_êïp ¾ ÝÆÈž´Æ® Øäw`_^)ù…ÅHëÛIxEÔ:ù%Ž_0nE‘ãXzpoÕJ§èU8»ì­¶s‹CÙc~è7Ó _TÒ'£œPíØ9ð2™høç\/Ífƒ¥¡ GÝ'¿]¯-º©.Ï/*fí1‚ázB6QžaqYÓÖ‡¢¡ñÚ¹qwL§6î{è;̰{™¾yíÏ­ÏÝ´uKNgmĦn½k̈%~ó6í´ÀÇ=4µ¤tÏ¢-áhåE[Ã>³·Ù‰®A)Ë¢ð EÁ#aQÎ*]’!„ÄÚD„ð†Ç¾×¬àŒÀ¬éº.ßR&žyÜÊÀ «lÞ½h[Äîøœ%[#˜º‚f%¤å‚ ¹À•ÄÞ=ö`C5ü`ÍŽhÈAPLÓ(†ä\ÀI(¨!Þ*daÔR?˜¦{œº #Óm]bòó‹0)Á* ( MH;÷XìRLõ¦yí0ÛCq@Ò¨åþ˜cƒÄ.5m] ¦ sÆ¥x¨Œ^îÙìHgá¶ÕË';6sŸZ=3&“&Múþûï1SË  ¢†êp Wû¹šštZkÛHra*ÎËËãI‡¨=Ÿ3ý3ýª „³‹èÙ,¬4æ>%<(h¶þùçÁ8¦êàÐ,ŒñØÌ ‚?.F¨[ò/dÞ ûUwW,Xh+ü Å¹Ë\椄 bt($h(ÐqÇ\„þŤD¥…¡¢^ño%<«´Ð΄á Ç yMv@1ΊH óv ÜtɇàpOÕçž i„º"VÝÈÛ‚vP3ƒ¿†|`Ĉ<CËý÷ß—5>kÜã¾DUƒ”pªŽÐ*%æY|‹,Ä$@'"%tè ¨Êhkù©-1xr ÑñmDÏ¡P70u²·:=«P[*Œ“G•¶ƒµx‡°¢ûÄ«lÉÌ/â ëwX‚·&„#2!;&9…Š{)Z€ž?1x¦ƒ´´Xnà ñĦ憡¼6£RVÊz™üBH’vÃfX°. ­Ïbþj7™ùQIZBÙy…â@б‡·à ’ðúÂsÒ… ¿f_,-ÕÖÚ””`oHÉÊÇ=%+·èýaÛ³r #²XT!À¤‚JŸ|ÑÛƒ?ú…jÀOj‚L^ðP<$øœ’bÐ%{o´ˆ³õ0'%@ÁÐÌbF’¦TKáÊ4  7 ð£#Scü$<ÀJ â'v&N©Ã Øi,%BJØà•,ѹoLj¬‰‡˜ãGÂCr%ªÀO˜,÷ &˜ú½÷Þ{yÂO* s„^x!Öf…øK0N'Æõ“‰îqcN×&%MiÃþh_YªÊOyņלּ`¹ÇßëCQÞÁöƒ ‰i Ÿ¦{,ÞÁ3^‰´ây#qö5iO_ lx®%/™%ï"§°=þé‚i24åB[²+%ÕøoŠHÈ÷²Ù‰¼•bmB^ Tã+ZvEÙ$¡Ä)òc ŠÍ„ŽvLÑ"“\khP":"’á­öí!0õºÑ©oŒI‰¸‰ð„~ë7Æ›>‰Šj?Õkb)aHT„éX;„ )ÙPE&(Ysehvó4x†À«/¢Ä‘YžˆV¦Ä¥>È¡?MÝ`Ñßv=FBîšõ)ÑÑÐ+$ÕRj¦Tc0…äéØJe+Á³Å¦dE–޳ÑI ̃{æí`°­óÏ?[L ‡^œŒ˜Íruue20ìB櫘¸á'³ÂBY¦L™ÂOì+P]lŒÌÔ0%Äsbk’0Ìá¼Ö%-%²%°Ð ¹øîµëÐOy^R\œ—ŠÑ}gJ><ü]IqIRZCzã0‡cn)-‰íaš¤cÛ MBí•ោ9$¹YŽøêÐã<êQŽÄ4¶äŒœÒ=’»Cé¾ÑJ¾XDŸ’“ÎâBNd(| o›¢(”ãÓ[üê$ ·¡Ï< ™$AùršìÉO÷›â¤$**ÊÇÇçàÁƒœK§®öF ¾¾¾°°°U§;88üïÿ“Êš””4dÈf+nrròܹsOB¦ö´_*TE—£ÅŸ‘‘±jÕ*Ž+"@\\\DD„yÈÉ“'gggókXPPÚ~Ò¶*æ9sæÐÖZõɉž?>@µ½½}¿~ýZ v⊊Š8Ü’xüñØØXKBJ˜Õ«WÈ}»VQâ«%K–X.ÛÉIøá‡òòòÎ9眛@HHȯ¿þºpáÂÀÀ@]ÔåË—s/ìß¿‹ò[®ÂÓÒÒ,ï©80•>^µfÍm‹’´U€eË–}òÉ'm›Š§EŽ %¡¡¡+W®¤»¤bQ;ÕÕ®„……1ÄG´XHz€áÇŸqÆÒáúûû?ôÐCÜpPóúõëgÌ˜áææÆOô4Çß}÷Ýt+rPâºuëЂ¨p‰'??ß\…ïÛ·ð¹¹¹cÆŒÑG~;vì Ë@™1Ø’o˜„/^lÜãÓÓñI]]ÁÐ|B3–td3gÎ\´h· véM±ñædžñqãÆÍ›7±¯ \/¾øâ¬Y³äI.fÏžÍßÚÚZ~rOöGÅ=Ü[7ôqÓ¦M#~2ÂÏk¯½–n”\À³y%ÃD" º]IôH!ÁS(Ž\|BéOŸ>ìKä¾¾¾ü1bDff&Yæ+Þš¨yb@×’:ý&…"¢rM˜0x$_ˆñ /p*5}·ÉI–ñññ ‡ý@RR¤BÙIŽh¡üÕ T”EUUO0¹!$XøÙÐÐ@–¤‰SLDT‰o¿ý–ž{Î]I°"×z–áp+V¬èÝ»÷È‘#õ‡Üˆáäï¿ÿ...† R@ æº@<$-üZ¤ò ó0ˆQ%¨111 Ú Tª HR%˜ð<”hùHæÍÏ'Ÿ|2%%…‚6Ršc,¤~OZ>ú(ZD*ØÅ_Ì߉'êæšÏ‚ ° Hqƒ[zz:7Vbb¢T6ý"$!ƒ ÌCð׸>SÁ0ä §´ ÔXK<àO¹P¼½½‰_¯3ááá$JYÐ40f8::ØÎÎNr­_ädÆ/EÀ å Õ&Íw £"a$$t¤OŸ>çwž^!%rp¦¢RÁôÚòöÛo¿ôÒK&ŒYj>•Îg×®]R·nÝJTl“R P½Œ¢çá©¥6lù¹€ (hƒÜ“ú7Þé¡ÔøéêêÊ+Âx‚|BK¤†H¯EAP“úé'úO~R–.]J…¤žK`ð!GD"Å*ýMAPôà,õ Ìå-Í-224 =edæ!Uy¸¡QÀê¨N£G¦ÒÊ'Ò®]»V­€ Ò‚¤E“}2Hqë¨Ë8‚”P*´X {·ºN ôÒÙYxÑ6hr2øãÛ矞: ÁƒÓ;ôíÛ×ÝÝ'o¼ñíVšoÑî¼4h­KÛ;ï¼c’"-Šhÿýwš¥ý£· AÐb g$rÆ…D5`À$!€H¯5†6¢wà^Ò¢…ÿõ×_ü¤}Þ|óÍX>P9˜‚Ñ<$Z^òÝwßѪ‡J§Ol|ûÄOðSô.]ý’#~¢*î¹çú&îQrèiúJ~9BÊ@ R?ƒéÒ}÷˜,MúÍaÆÑ× 0Ô˜”й ÆL¢P:£—_~ùá‡&~4ëØ±cyVà`<ˆ§ïCB2+€Ó]"ò¢ÀHÌ“W^y…Þngœ"ŠaˆPÃ¢Š DŇèEdà+z|òþ矾úê«p8`!BÄà9RhPšˆ*Eüã? ºë®»>øà‰‚!â!?°P.¼ýüóÏI—?üðCâ1®7Üp5Þœd„²ãÃ/¿ü’ž~ŸRðüã?Ð|dM':è0Éì³Ï> ôã@   ¡Ÿyíµ×™Ü ûå—_ÐIÜPj$AB€O¥"uÈåøÕW_ñvÂ+d›ÔdJçþûï÷Ýw¥SEiˆ 2(W¥J#™%Ë€l ÉC’)Qur‘Ô9o¹¨ZÔ^Ôð\@Y ¹¦’#JŽu’tÍ5׈>– ù`)\ꘟŸŸä‚ëÍ7ßD•BAÌÁyÀ¡P„ýÈE·Ìá:äZxÀé§ŸþÛo¿I¾œœœL@ZM ¢Âƒ-À"üùçŸoLJˆbM &wÂw©xP:“¥™Ó*±µÐ' 5ŠtIÚe’4>öØcbSA©cw!~Š€ú,Ðd#³ýôS„o•² ¤`60c˜·tbÆú" ÷Þ{ï¥íð æG´§œrŠÄOZo½õUñÖ[oE`b£±#'ò )_¨-Rñ-‘ÐÆi”©@Ø- iÁ™{1•ŠŠo3Gý´#H‰%¨0ˆ*ЦH;A!¡ƒ1$ÐDi-tÄHE¯†à†6#7(6Fä2´âºä’KøËXMæêyaÔuî¹çÊO:MQüúESDý íèŽå¡hý³Î:‹ndŽÉUW]E—!¶®÷ß±™«¢Ï’'tˆ¢³õËÄÒÎ(„ñ¥>4‘`äš>…n­F÷Ø<¤§£ƒ 'Õç¶$p÷îÝEÇ0òƒ±¡u¾ùæ}ÄÌ Ü®¼òJsáMžÐÏ}÷Ý'êŠóÈ#H˜¯¿þÚx޾^RÔ‰R^ÜèùbP+<òûï¿7W$ؤSã’AF2Ë ù7´,ݽÈ@ŠR!˜(KbjO¾E]¡,|ðAù _aœ*7bKCáÁ“d°1¢ ¸9í´Ó$<Æ#÷rQ1d ‹B‚yÈCâg,Kç.ô”Kˆ*M ’q$¡òWFÛêɈ0'z†§Ô(Ê‹ŸTi"‘8•€†ÀRÂOº{4 ¹ÐÅ0–S¿§E ªüÔÁGRލj}rA*<hêÃô¯ä[&{¹§àhz¨a¨? òÔÔŠŸ'W_}5΄-ѱ=è²…NJàd”…+ÐaÐn qÆ3 ÐÒbþ‘W¤…œÆù¢"ÁÀšÅê i@ÁSÜæ¤„öH ’šF¥…¥qCe†m˜Ä&’YØ€¼‚%mކPÞ2èÕ«—ˆ È… ÿùÏŒí@0!8„Ä 2¶àzyyÑËÉ«ÿþ÷¿Ô@ M˜&†¾§,xŽ)Hj/4ä©{zŸcœ :=X‹”5J&¾õºAltb<' }&-ZLŒ¬4UÊEj&×ÿýßÿ‘5(—XSÀ¸è`¡Ýpn ÓÞ3†Æùê’÷Š”t¦b¥…Ȩ—ήí³Ï>£s¤gÓ%]ª¸¤1 £;Œ¡§›ÊØÆ3ÆÑr‹v¿ð å-ß2¬áÝ ß¢¹iÕŒ dv@¿PôúOZ54E>¡CJèhä­:]˜;î¸C·¸ê1ð–8ÅÆƒ­…!‹èNtÆgù“†"2+6sØʆ´/èÓ…uÑÅËø~Àˆå-¶h.ÎBnø"ý"fO’â¿þõ/òrÛm·1H"˜ëÙä­Þñ Å IÔÆg1äèù¢óâ zÚ¼O'¿¢ðô Ò&üþA߇¨xW )y"ƒ<ô •·ô’º- ŒI d\=)½ „²0–t©E&¤„ÌÊ+ôŒGÿ¢ Iõ º¦[J b ”‚ +¯¿þzîQWB>Ð0!*Ã{ï½ÇOL Æ•„¢¤‹&ʪ( ½z'­ßCe èòåQaxäN\Êš ¯B羉wˆ9)Aó‰­‹:@õC££ÞÄ)±a}1ŸO¡ÊI¢ ¶èÂc÷p—T èB*°LåÈ%¤DÊ| {Ð+ XŒq \ô<öèу:Ù,)!]º¡›-é0]˜”¾ž•íßÿþ·žt,B»/ª“>ÍA¥Õ%Á¶!LK¥ºÒŠÝ5`o¼¢Ýñ zi“˜á@˜@àÁFA”¯´VjÚW\¡'!•„â uIF,rÑ}ÑFä+šžXvu I ã15„ÆËs::}QÓ€ŽOÚŽÄ#¤„GOT*-¼Y¯öXòx{ÓM7›»LPR?@¶ £Nݙ̣ÝѸ´U-PúAzILߌy‹Õs"mÖÏP‰Þ-ŽôtŒNÌ]óÐ(3ÚñˆÊ”Ñ<2¦MÒy1p§SF¥ÑA;‘VMÇGócR€ÎQ\(:Ó§žzŠ~„·htzC-ñ–Ž’xŒ'}yH¯Q€F`eå'–pâàB<2KB×Ì(5Œém' ƒ‘£mnd¶›¾LT>ý7ôMD‚âA ÓØÈÏ%K?È/Ñ+Ä`¼<‡˜…@p;1Ð#K¯Š‰E^‘e˜Â蕇|aJ'£@rtæ™gF|>>úè#^!E IëúÝÃCd“Ñ0’oé»Q~Ìæ<ðÀ2ôäe~µº…Á} ëºë®ƒ @_ÈæºrÑšDN %väA~Š@ÔÄ‹IÀî¹ç(ecÁô¾›A°XnøP” ý5¶"À€ênݺQEÉ…¨$Ö)±ä¡¨ |‹öEy)yžCÑŽ(-1w“‹§Ÿ~ZR!³(!ò"ü•z¤TrÑÐ\Étg]fjš[llºð(KÀD€*Ï©ØÒh¼ýöÛÅíƒò¥v!‚ Rái•X,@[|›@Rè£\t†€@ÅãžqØk1•QÙ 2ÔFú jˆôNT*i„ä+r„͆b%Le‚!Á¤ò ³nl9ºPf¥© ¹ATã9AlÕOs)éLµ‡Q´sj¼XûiiÐú5h„4xþÒsIãËã- †a™Ì¹Ð’Eµ_|"ã:_´5 žæM'ËW °]€¾ƒ>Ž„0uÊDÖþ˜=¡—§'B*ŒÉ„G^Ñt‰±o¹å™7ajƒ ã>1Y @´ ’èðk#$2‹Drtôé(-#útÉ&º%Í <ƒ.€¾€ta$$'½=}™•¹g"*ƒQÐ@Ð@q"­(Ný>!uD" t^ˆ'¤D0'ž@ŒÄ V.R„mˆó2ê‡݆¦IÔsŒ®´Åô"€CûH‘P8oÑÖü$BF‘VÔ3þ4üEO¹üoÐXäEH ‰±,©@O…)’#>—a:ãuƒúLÆsôàèÞ2hÇýÒa”.)"!‚‰ã0ÕŒŸ:Z RKA`žº¡B`iÒqS¬’¨Ô ðÑM÷X)Pxæ9©0jxeÀJ„ñ£ÈW¨¢®L¨-ÁÐôäZŒ%E&æ4ä¡LJwú`&”5&ÆÉñIR„Íð u%f'@&ZÏõ‰3Zð?ã‹Ú‹0¤È_©·(?R‡ß€1àb) C¨r2=¡_hhZ1ºÄ„‘úˆhé&ιÔR@¦Ù"6©(e q¤›L†Bƒ°hR|D"²Á Í×i3¢Ià ˜<) nhDäBŸ=ÑE¥k¢‹Sq"0BR¥Q@(‘æ &AQQÛZjq,!Ébü’ç0’gyj÷BýAƒÏÉ Ñ‚hÌ…QE¥½ëR=, i0¦¢²Ñ À„: Ñ„–ѵŠÿ;ý‰ÜÐË!õVÅÝ vE&_ˆ!—Ÿº[.c*ú7JžÄ+zQå\bÒ(ŽýS‘’VÁe]u7IúÚ°±×$‚ê*Ÿ·Üû¸;âI–è:Å€÷×—„Ð)-íY™WòD¾Òãá¹ÜKZƽ¤Ì¤@5ı@’0éFå91›ÈI´ôk3:•äÂXxã} $°¾PHâ¤ë1¡>‚•<”Õïü4&ÆeLlˆ*€˜€ÆW&i£r ' «Êä×dèÏOýC]aPÛ2tÓi÷ˆg’/Ñ:2:¶ò„NÜDi™”2?&¡qíâÞXèy¤™ ­×4ó I®É‹És†ªBCå‚l1‰ÙìÞ”»Lü™Ç ˆa 2êP§Gæ…h^©ŽVк‰Â$€Ô7ãâ&N“…WÆŸ4ûŠƒ,–b&grIr„7ŽªÙhÅDaü¹9bÆOÌO°5ÁÐD=NéCt!iM\&E&²k±ÈzIDAT}!‰Ó¤MW$c1[¯«D¨'G¥æ£1¿’†Ùb`d3N…ðL*æ “Wg³åÒbB*(R¢ª† IwÞlCD…3 d0ÍÐsEƬ¢2F€É{ÆÙ] 鲨A.FÉÆsgÇ—}47>@ÆÓ%ÇCjFŸœ‹•´''!•ŠBà$# HÉIÜJ“ƒø·ÇÄ':ƒyY,·ÆsV Ag gˆÙìò$c†÷‰‰9ðÄ`°ËÄß1ì&!þ 'íÒw9i)ª„'EJNÎ*…€B@! P(Z@@‘UE …€B@! ° )±ŠbPB( …€B@! H‰ª …€B@! PXŠ”XE1(! …€B@! P¤DÕ…€B@! P(¬EJ¬¢” …€B@! P(R¢ê€B@! P(V€"%VQ J…€B@! P()Qu@! P( «@@‘«(%„B@! P(Š”¨: P( …€U  H‰Uƒ%B/Y²dáÂ…Žª.…€B@! Pt8C{éÒ¥“'OŽŽŽ>¶¾S¤Ä>`a8q—ƒ|9%•kŸº …€B@!Ðy@ÆÄÄp¤ùÁƒ¡S)± Âa‰’€€€=êR( …@gC ºº:888==]YJ,Ñø ¤$00°T] …€B@! èTÀ jjjBBB)élÃB;5)Ñ8}I :U;:a»jN›FeÿŒB<ž‚Wß(GG@‘ }g ÖyI t¤êÀ†ÆÆ²ŠŠ®ÍKÈy¬kl¬nl<ŽœZ-¡ÑòUYYÓØHÖÊkjšøeg ˜V ©Ò_ Š”t&¶a¡¬””P«Œ]¿Þéý÷KŠŠÊÊËC[wŠÖ+Œ¤¸ À«oßÐiÓ*J[£¶Ñô5°Šº:«‚aÊ««ËªªvÏšåùóÏ))ÔØZX¥Òš žüBÒŠ}û–²àþä  RT(EJ,Tô)X³¤¤i ˆQÝÈ®®õ·Z ý_sêÄ46 £ht£×³#"4ŠÓ8ªúÆFï?þøÛƦ$;[3–9ÐlÌ[rSBÆÂX(ž÷#³Ó|¤ýÂS¿iFžæ`Ayef.»å–m½{‹±DÏìá²8ÔDMR‘øMŸ>÷‚ 2*á%G‘¡ù22–ϸ¬É²áŸÄÖTš‡¤2¯'2ÿ¼¬¬´¼|Ç_L±±™ac8lØÒ7Þð3¦¢ººåšvÖÒlîgÍ ƒT½cáp´ Y(.®Ø»7ÕÝ}⥗fVÔ×óD¢U—B@!p’ é)Ÿ’ÎD8,‘Õ„”HÇ[^U…Q}¯ØÕEIìÙC_ÌÜÕpC-d}=ä@fxXImñ4hšMYn.! _qh @Ì0/ÀCã,˜4Ô ‘ðÕ"™…Ü0vç anšÐ¨®4øG6Q¥"?²1²o§´”{ 7"/’žÈì’žùÕÓÒ¢9’rÉ4 _U644ÁRU¥‘’ìì•wßíÔ§O•M¼ÊJ>ÇD„´ZºÕHHÄÐrd(,¤­Ú¿?ÎÞÞ¥Gü”>‘ª¨­m’Aòb$°Wm­`®Ã¥Ý—•éà#C©!õ¦j@–KKy¨•fe¥¤ÂOʈØSV]­}n¸×Êtï^-êª*ò8߯&ÕÉ‰ŠŠü®_~»v-°#¼–ÁÚÚJ½¦•—S'RMÂCEskÂ&$ÉUTpC |Nqå'hy ù‰HSŒR’(ÏyÛŽ¡²i9ª«#0WaJÊP›=yyܹTݓܫä Ú"%–(úÎƘ”HÇŠÆbB$tæLû'Ÿ š4‰1ºÆ$ª«SvîÜòÒKyIII»vmzþù€‘#é ³cbvõêå;|xü¦M[_~9ÝÏO;2hm¦¼<;::`üx‡^p|ûíÄíÛ €Jã¯ç¯¿º}÷Izýþ»[ïÞiitúh¬wwÿ1cÖ?ð€ËgŸ¥ûú–74 *Ðjhš$''"qþ補¸8”ß_Í„”ìÙã?jÔº{ï-ÌʪܿŸÔQ'Å……A“'o|ì1ïAƒŠrs5ýd¸+Ú’äwúðC,ÈÊÚúæ›^þ ©BÍ»ÿôÓÆGÕôÓÞ½üÌMHþûoÇ7ß´ê©øÍ›¡>èþÒŠŠ8ŸÎKN†g‘û?Œ'@§æ§¦úüñ‡ý³Ï"CYYáÑj.Ÿ|"ùuìÖÍ»B#¼DcLÓzôéCr$êѯŸkÏž%×HÉ*HÉO?¡/Swî\sÛm„Ô”}iéönÝÇ']òXRP0j”óÇ3b÷ÄóçƒR‚££6?’–†Fßò ¾Ã†'…å3`¼ÀÉÉ<_ÿàƒÁ“'çÆÅí)/î%‚Q^èÝDgçm¯¿îܽ{ÜæÍEyy(iêCà„ š²¯ª Ÿ?I¨9EÛÞx#aË–âÜ\¯~ý6>òˆV…˜kÛ°aËk¯íèÙ3Íß_øÍš»î‚S®½ýöÐY³¨u^¿þ ¼ÄF€uwݵ§°0ÙÍmëë¯ûO%¿d &N,ÊÏ—‚Ö ”›êƒÇ£z XØ¢E¤K$6 äž{.fÝ:­L÷í+ÌÍÝþÞ{Ѷ¶€ ¢’O CÉRý¶¼ü2ȧûûSå,7>žÒO°·/LO§¶lyåû'ž˜nc³éé§7ÿïDž¡x‰R “€"%‰mX(« )ÁŸ³ê–[ès§_zéÌ3Ï\púééÞÞè¼h;»ñ66ö>ºèâ‹'œuÖÎ_Mض`3/¾xö¿þ5››SOÛ¸õs˜” ÛöìqëÛwÚ™gκꪹ×\ƒrÿî;màÀºGvÖY}tƹç2 ³æ`(ÎåW\1ë_ÿšuÍ5s®¸‚hƒ&L ÇG‡¹ýü3Áf^zéÔóÏG†tW×1c€öuÑEŸþªë®ÛST„"É ±½óÎYg5ãŠ+f^pÁêë¯Ï-g€nd™`Ä DŒÔ'ÙØ,<÷Ü—\2óŒ36>øà2r}Á“Ï8cíw2|ÇÒ0eÊÔÓN›}啳¯½v–ÍÖÿýÅ©Jrt´½åìš9¤ªj®MÔòåÈÊÂsÎ! 3/¿|úi§mAUÒZxÆÀe÷ä“S/¸€9 Ÿ5Va¤ûшÅ99ë^ziÁW,3H>å´ÓVßx£6e“—§YJ~úé@ccÔ‚Cll ±Z•C˶¾óñ“ëW_=ãôÓg\|ñ¢³Îšhc³ë›oxî5l°gøùqÏÍô£F²`H½òškø¿}ûd›)Sèý¹x‚: 3Fr›ìíÖIܺõ0)1 ²ÑÖÚäê³°° 5e†²ä[ôœÝsÏ-»ï¾šèÙÆêúú—\â?nÏQ¨êü|Ƹöo¾¹â¦›ö䄇A³˜r±+ ª©[__Mž}ûˆ9jåJf—6>û¬ûÏ?‹œ\.Ý»oxàì˜7­KJpÿ\|Á(r±ÉûŒIl©nnÜWÖÖŽ´±‘¡6„¬“Iq1Ê -5ÎÆs©0vßúÚk˜y@ 3À‚sÎ!_ééK.¼0lölÙ\»ìúë}GŒàº³ôÿþO¤ò:tåM7aŸÐGØš¥R’Ÿ¿áÕW7¾ü2|…`$H»çÍ«*/×IIÌÊ•cml8RRVZºðÌ3wtïŽ ›ž}媛á Ï_~áÆoôèy§–Êý¬SNÁÊB`.ßQ£VÞygEYvH {ñWÀžg˜ëiRùååÄ òéß_bF¶¼ÄDd›sÍ5X³„”xºøÖ[±”` áfãÿ‹³‰„™>}ù7VjWä²e‹N;Y.ÒCÈÜ€¦¥-¸ñFŸQ£ˆ-Ñɉ O˜z\”ÎÒo ž>]Ä&ÞÍ OÕÒ QyŽfúYg¥yx@m¹rÃÜz**eQ‘±öŽ;B§OÇvµôÎ;>ûLË0ùMH€›Æ®[½råŠ+¯LÙµKäĪ7ÁPÖùQQóÏ>Ûñƒ*ªª$*¸#Õ£ÜA­º*×¶jT¹ï()‘ΪK]Ƥ¥X˜‘±øüó½ûõC `P#ôѨáÒ¢¢xgç™]”ΚÞýôªçžC”ÓׯzàLî(ŸÁƒ7<ô÷«o¿}öÙg/¹ì²Ê‚‚]_}…zzqž@/jÓ7ƒ¡,+˜ÈÀ}aÿ~ä 1"70CÅÚÇßòÑGvo¼±åãWß{ïÌÓN#kúºSM~îúî;@¦Ø¿óΦ·ßvx÷ÝY§æôå—‹n»Íwôh nOYü»”ãGy âðÚkZí22P–ã7p`IbâÜSN 4IkÅÅT4OO*?¦) (åèÚQI¥ûG@‘’.EG$3¦¤„þyçAJÿ1 E[`šÆDÁ´H‚³óôóÏO÷ñÁR¾‰\´h„øœB2Rœ›H‰Á••îíÈX6Å×wɵ×2Èfª¾(99xÌzs±”h¤äÙgQ!è$YyÿýÛÞ|3ÙÕ•9šx{û’´4ôÊ‹/®..ÞññÇÌŒ857ˆúz!%0•=¹¹š {÷¢†C'NÌ Âh±î¹ç¿ùÆ¡{w‡?ÞÚ³§ëÀE99âŠÒ9‘’Õ7Ü î“’çž›‡ÖA2E¿vmqjêÒk®Ùùå—)®®yÑÑ)ŽŽ ‘s¢£C–ÇwÞÁbÇçŸÇ;8IÌڵȹ™D¿ü’¤`[¯^XS4RrÉ%+¯¼3Á|†ŸÖY¹QQ¸Ñ Œ6ÚÞ·„”8}ó 9ÂÓ“¯–]|1@áO|xúfÑ"0ä­¦³«ª``’’””¹—\íà Í%lèûfI‰ýã“_æ>ügÎ\øïçDF‚dVXXÄ’%p¬Í¸þ¼óÅM$µ"*L c¢j÷œ9nßÏ$WŒ­-_M¿òJׯ¿Z¿qãÝr‹XJæ]½ßر⠣‘ÈÜÕWã¥+űíóÏzöÌÏÏÌÔH‰½½))Ù¾*8”²FW®„”lÂ:rR ÔkÜ8 Wæ²jð/R2çºë4™ ¤Äí‡æØØ€ÿæO?%Ý-=zléÙ3|öFJFޤЂ?(/»ì2çÏ?÷:Ôþ7ð;!]H!bÈÑI‰8 i»ã<ˆ1†j«9>ãðdp½ùÇ+€Bàd# HI'%šëeU¶·ßŽg }=:ÆáÙg×ßsÝqì–-3.¸€®f$¨«c5˜âµñž=cÇÎ:õÔÄ-[4·ÇÊÊÍß}‡zæ«x'§9§†Û£¶è£¦ÆwÀ€Ã¤äÙgW<òHõ¾} XS=<ær ®˜U%§æcXQáÜ£ÇÂK.Ù“‘‘ð5_ÃF„Ä"`Ø0,%:)AÃ*Å«‘)œC«Ðj ˆšèà # Qf¡Ë–aÀç'–˜í 7Q€”,<ï<”°¼"~ýúü°0FÛH¥-©¯^¶ *841!`GÁ÷–T ùÉÉ«®¹ÆoÈô1YÃàꂵ4YJÌH 1àdzîý÷“wìºâ¼¼õ¯¼²ùÝwÏÍ4ooì.É..L;­¼ç|J /ÌGÀÛ¬§WÄÛÙ£:ØîÙg™L!cšì€àjfú¯ 'ž8LJ®¿¾ !¨rbcÉå¹j‘ÃÀ¸÷›3ÇwÌm^©¶–y1Š•‡L9ayÚþé§К'Ÿ$ï$]˜“ƒë s"BJæCJÆÓJª¬ ÿéÊk¯ÍŽŒÄ´ÃCL ›6ÁóÒÒÐú‰›6&%£GkÓ7Û·S €8,Ãð4²½é&ï?ÿÄ·¸ð<.­@óò\ ŠÞ¸QÔ`¶RBùŠ=cÉD,] Td¥d”äç/¹ãŽ?ü ÉsàlláÙg5kVÝp†1Ò¥æD,^ åÅn”1ïÔS“’ %ü Sb jâ#Š—œl•¤Òû§# HI'%Ú„ºº¬¨(¦N–\~ù¢»îZ~à «®¾:ÙÝŽ>rÝ:LhDè4FfÎ~þ]w­¹óÎÕwÝ5דּpÂÐÈDeå@·o¿e }ÛË/Ï»ðÂ¥·Ü‚ÇÆûïphúfÓ‹/bNßðÈ#Ko»mþ9ç ×Q`˜ V\wÝ¢«®âáö·ÞZqÏ=³O; ½NTî}ûâú°ø¶Û‘ãê˜äÛ¿?S6Øù5KIC¶ lƒ•–”¬zðA¦×ÝvÛÂ;îXzÞy,t";°Ÿß|ƒ5kÑwPÜ Ï:ËoøpäˆkŽÉ#Fˆ¥[džxbÁYgÍ»í¶¯¿N}P«oþéêQå¿#P¤¤«“Ãv®îc¨Ç w!æ}Íš]SÃß}ÇzQm"_–‰ÖÔD,_¾åƒpŒ³µá…<0n£‡œ>ÿ<ÁÁú‚1<'>ÿPÏÒüüàníÖ‘¨æèúì³Ë￟'¿þ2{6ã`"$-Rôüãì¸\ĬYãÙ¯q:}Ó:;üÑý—_ï¢ó´y“/¾@C`BÇÞ°ýÃã·lABâ£À]}û:}ñEôÚµLO°1æÿÑ£:k;ÀvñøåøDªjïÞX;;–øff2:‡œm~í5檓¨XÙëÙ¿?«°‘lyûmÍ›Á°šW›pÉÉ ž81#8X[J,X›ÊÇÄìž;wgïÞh;¼LXzŠÊôþýwÜe$-˜xüô“ÄC–IK,(u]Þy‡…<»¾ÿ>|ÁmE1\­ €•±áK—jeAî²²\zõò8…¾$¾x±¬bÎËùË/½‡ ©®¬D"-~Û67ÒJN†Ø! L%lßηL‚`RbÙ+¢·wï³~=Œ„ìc £ôYlLWC¢©>>¸ˆj‰ÄÂoqë!’ÐÙ³·¾÷u#1àrÈîýú‘AÞJ7EyˆýÃ篿\zö ™99©@½ý“OX›£­yÎÉñøí7.Av),Ç?dýmÓ’i¸ÖF0ÙñÝwAÜzˆŸ:ãÑ¿?óJäʱp!K´ðó}V´MSª«3CCCgÌ 2%í+ÉÍ…ð¹öîù¸ˆ µiA|z ]¿ýÖó·ß’0PÕ×ó/?)‰™ Üo…$qî±,twþâ‹Ð9sà»Æ>ÔÑ9«4ÿD)éâ¤Ä03®™¢µ ¬°`ï߯mÔàÐ:íge¥,ÅP/käBbÕ×ü6Ï k¹a ÑIÚ$ž}¨:þ1Y#;qá*±úÙgµQ;þ²‰¤^S#n¤A;òJÖÍ¢ïëëyExIE `ØJD{KœÜ 3 8Y`nhÿ~]¶ß€»o="Î&9¡DzZ†ØšÔ*»ª ¿aâ€oµT R¡·´'“AÄ *¬ 𴬑1@¡¥ÅŒÆ!L$-MÚCi‰£ë:ƒO ’ÃQ´0‡6I -×ò9:yˆÐ€•6L7l»¢_$faØ?É5C<½0ÌÉö#H¥¹}¶;# dBÑ–‹“©°}à°õ*À‘*!àk9… @£á€Š½ô›jÅÁ&4I44À5”˜ŸC0¸‹a8ù Ù‡8…8 hª“Tƒ»Òã¯4I °öÉ¡²Ð* BbýÚ¿_*LQF>¹,¶Ò"±²,©ps¸ŽñÜPµ4| õùy(b3C0ÙâöŸ¨Tž‡€"%]Ÿ”ˆb=¢{µ`¼í˜FIJpnXsóÍì'ïn"óÏ=;zÔøóCŸê¬b¦7_ƒ ýÉ'¾Kä‡JKO´ÙW&ou™ÍëQΗ®´ ÍÉ8ƒ¢xš64;ÃÁt@Ž„EÚ¦ €‡ä±Ó’%Á9953µ°FÔ§(ô´ )j. âŠÁ>˜LÓ°RóŒ)Jæ2˜•ïa¸ôüYšô½ÑÃæS9ÔU5áfR…ŽüÜ8†¦dQd“2®*&Õ²)A½š5Wuµ}Jp þÏÜ €Ÿéû7[IL$?BHc ¢IÇ©%•ò?š¤Úѵ«ñ“ÍÓtÞâ ãlÌï °ô#zÅ ¶ÍЉ·8F 2¨ š8=*±kË–-7nôññ9pà€»»»½½ý‰Å§¾þ'"@-Ú°aµˆ†±cÇ;;;žXȃTÔp$tuuµB ÍáBæ5kÖ¤¥¥Ñ6¹?ñÆnU%‚0dÊÖÖ–…²lÙ2k«3Ö×qÈCqtt^???úyk@Ö¯_h¡U¤ÄB :>XUU•›› `ç _NNNÁÁÁŒÆœŸ‹‹K›¤xÂ"«¬(2µˆ†áååuìZÔQ¢#•¿¿?z{{[§„&ÈìÚµ‹\Fº©V5==<74ÛŽÂüØé’A-¦52ˆÊä§uÊÙy¥¢Î &€744”ÚlF¤†ð÷¤eIÂÂÂ,T¢Š”XTÇRÒ&ÝNJ貹׫&7µ‡‹‡ÒÇ¡oÚŠ ´ :9˜* ÕFê^‹,‘„jFøöè"‘Ç„”HZ­•Ð’\´UsRB“7–¹Yvz´SÌBæÆÓÓ³U„¦­„·$!%XÚ$¼qÍ1îŽ,‰­ À˜q>Z…”*dµðJR‚É„\轺Ô";¯Ú£Ñ5["$ªHIÇsˆ6— ½I u—¾,&&&66–0?±VTT¤¤¤lݺµ ¿Šªk `LJ¸G#†‡‡Sè ¹¡EFFm¬¦#@çN­£ÃbÐÜæ]¤ )!-¨¨(ääâ¦E Ora™‘9""BdŽ‹‹Ã n~RRRmm-74Øòòr 'Yr “3!%ÂH˜kž'((¨Czp¦Óïéu1ÌqEN['/1&%Û¶m£YÑ©64±Ý»wGGG2†C´ |ý¤™)is>`¶+)k^MM ƒjmYY×­[GÎóóóéGGáéÇ ÏO.žK¦ŠëOhvR*X'EÀ„” ;é¬éþ¨¨¥¥¥Ô.ªZ–:ÃÅT3>ä'UÅÉ æþýûÑLü¤¥É[êÕ Ž›MH é–öîÝ‹ÚF΄„„øøx$¤ö"›þ—ÔùÔeˆ)Âð—Ÿ2½"ÓöHË>ç§\mBªLH IÀíDfœCQœb~—öÈ… 2Q…^çaQQ‘Ø!| L0¶/Y˽<㨔¹i½kLJÀ¨)ü 2ëëëÉ .!¸ç‘D‡Zd3–_¨ ±éå%•‡L PÒM% Hë#0lV‡s(€ãÀG¿Gó9¥΄”)K™~â§Ž!Ú¤œH‡`b)AB!”””Ð0©ðàL.„W!°Ôò€DzN^¤¶K 9©)± ÑæB´+)¡iÑYã€Æ iíÙ³GH 4…I‹Esð¼®®Nfè©© Èø‰S«dHGÕ§[!$ …:dÄs"-G}Û*ŒI‰>ßGïCÏž››+ €~šÀÂ1.ò“¨O*Š–hYq˧á¢/\–WÔ"|žÐR'bÉ0!%$M_LZTTz[~JäHˆô×8spÃÚP±Q<¾¾¾HŽ´\<¤ÎÓР4ߊE`¢m"nBJÈTƒ$°É‹ÌÂ-hƒ †¨\È€‚DrT)Úm*¤„ì bù;M¯dŒR <ð$#BT/OhÑd<¢ºDéâf+OhËí1 dBJtê'_$§8È)R"Î_òˆ%G/ÅA]¢ìRi©<F` À_rz C©iÀÅ’CùЬQd= S$t…Ô.È ž~±>*Pü[©3ô‰T< Üð9Ÿð-ÂCB¶‡O‰¾Dçh¤õ#yß.ºlH R"£pò%iÛ¤Â7KJP‡¤"ü€tÑ£ Š 1,oQ04Xãs” Î‘ ÅL%>%Ü€9¨¢P )!fQü4j˜-ÏÑÇí±€¹£+eMÝ€€" U]He‚ŒÊ î “nQ£ø¤‡Í $DzÅĦ›"³ˆÍ_>+ˆ¨Q„¤+Cé¦È>j˜Z'¥&ªéýè÷Dóæ9“$bp،̣Á¨!$0|ÞV»6wkm–”ÐSE©3Æ–j¯ 2&%RIÀ x ì²ÆXædO0EJ)i¡æÐeó4}ŸZ¯Øºi·\4{8ÒÒhÀâh"ÒÓéèÔ¨Ðô<Á.*k÷¹¡‰rÑ’ÕÎHÇ×z;ÑW椄Z$S6(B}¡ ÷R+¨0T*.t¡lŒ-ó2¿@—‡&_%9N·'¨æM¦o å’í·IE\kQŠ\ú ’º0!ê!ÉÑÙB¸ O{FÎÅ'íáSB*è R4æâ»¤âÊJk…?YCf—i2¦%’GrÍ Ê†ì^–³’¯ b] Œ1¤tà::m['I‰p,éLH0e¹Fx~ C%_ˆJ—Âäšç(Z‚QÙøÉCP¢òðDŠƒÎJÌ$T*ù„bP b–e†úô ÏÁœ¡nÜC: Æ'@+¡}¼y°"úFQÒ|%¢æÛ–ÐV 7KJ@˜bOBN„R@#d‡ÚBM IMã-9…‚C¤þƒ'æ¢ãÞìN‘’®LJÚ¤ãÓI Ê@oEÂK¨2 ÃOñ¡%s#³3üä’·X~Ê: *´þùqWß¶jœ*žöFÀœ”ˆŽ¡>4[©dvFúR‘ô`R—DMÊ[ùy‚Y0!%Ä&n+’ºÔs’Ý#ÌCO—ðº´2e ö @`]Ú6i˜Äib)‘T¤Å£aÒù©#ׄ—}_$³òŠ0ò•.*7€‡b†ÑsÄöʑI!ê;º2:—^¤瑇"ªL'éÝ7ÒÃHyË/•G‡E²)Kv-ì¦$6ÁA–"K*’¨1JR+dc:Ö›Dpn–”Hç¬×"ÂHùêC²)-N(¯à £G~O¤KW¤¤Ë’©[²ÔåD.jC",%BüO$*õí?Ô'¤–Æ&X!Ôs}M„uJhÃSF¥´Mñð°BTOD$TFFÞºwȉĦ¾5G€:#èØÂeœ5\0QŒ.*fµÍ¼…@u|0üä±¶acŸ£¹Ð"Ø?™©•¹Õ‰J}ûE3¯¬æ…àâ‹`…8P·eÑ#´uJh Âô?¤„W˜Ù­ÕI&GdÑ2£g݃òDâTß#€‚`¶x™¬¡…Z 8H"ž@–\Š”X‚’U„¡ŸÂ™îÄ/Ù™ &r%÷òW] Ë0¯E–{rBêu[¯ç''ÝI™Y_ŠC%2ŸH¬Ë5¹ÊËJ+ËËÙ×ÁüÕÑž°¬‘µs˜^øË½åª V]RhÔ=î­ë—Ð4V®Š±¤«6LÉ Õ†I+¬3]$i‰À+‹Æ­$;H"›ËYr)Rb JVFH :@¿Jö”&¤eDÆSý ÌÄ¢‹šJ”ð—{ùF"7KÁ¢› ¤KÊQä¦Y8Z†¯Žxy‚òµ•ÇH×úRjmƒôZd\—:<»ÍJh\;\Bsd‡PÚ¦qS´r™[#úIH ìÄøÃ£åWza©|‹0ü#!=uÁDbå'a 7eQI9›<✒øÇM@dzmµ¹|B i®G|UUŸ–—–]PƒÀªÃ;²jV媂]˜Ø}«Ã•„‰„È&»­s`Û‚ ØŠÎÚÚJÕÜRŒ¬¡X´h”°˜k“ÙråDHR"y¡sc% »“a{£)Â<–-[Æ9pìÁ[¨ {¾±§>'»¼€ÕsçÎe]T†beu:›¡ux•kíØÄR¼xð€§5-\¸à„—´GÒLjS‘’ö §NJ  ^™˜¹:ØÞ%Ý’¨qî—oõ,È/©¬ÐÇ®s&¤R€Ò½ä­¥Ö„ Zà;x‘_\JîÁ½ÕÙ9…ñ©9 i¹èxXvAþ¥eåǧæB´ê^W“œÃϬÜBô:Î)ðœ¼ÂÄ´<Â÷åìœå ÀÄ5A-ô½ïëµC—˜ï} ¡ª²¢43§ .5'5+ŸÀȰ¯¶2*);!-/5#}ÕªÑ#—ùG%æTU–ÕTU,Ù1pÏ_‹ýþœïëœ ­É+(NHÍ%†œü"èÄ÷˜¸”œØ”œ‚Â>á'÷ éy…EÅ{«\“ÿZìÿÖàmŸŽvùs¾Ïj—¨Æ½ÕÀ›¬E’_T,$¬é«´Üœ¼"ä¼È÷ïõ!Åæ“I'¹Y[_r椄'¨öü½âŠ+èi3-VÅvÍ–±„({4Œä§Ÿ~úì³Ïzöìùî»ï2øÆѱBš `BJ  ,f~ÿý÷¸GãÇ—ã^­JæV¢ )‚ð„ÍK.¾øböwGeÒÑ‘ÍO?ý”,øá‡ì©J˜ß~û'Ÿþy¯^½ hPÞ~øŸï½÷6CHJ‡hÜVe¿½“ê´›mpÿøã©óݺucœ“OÝ)éxÑ“Fóùù¥ýÝíÒmH™5Í»Ãþš >ë—mvÙ[»·Å1½9)©ª*{þ×Í"ö€Eþ+]¢°Ìß6v…ÿØ9ª«Êí=âF,õŸ±!dôrÿ ètX‹dúðÅ~˜¹1453?)=w²mÐÔõ!SÖcyêǃø¸§ ÚÖ6î¯î>Ê™Ã&Ô`•ˆHÈž¶>dÌrÿÉk‚‚c2ª½v§_â;j™?ücomÅ„Õwâ羆ê›ÃˆYû¶±.3¯xwlVCMEptƸ•£–ûÏßíÀn³Ò)ŠÌó‰KÎ…a¬pŠäóq+×íŒ),*aqÿÇ'Ž m@*¨k@ÒÈ%~|E¹ùE»Ê9НÈ8ò@ÃzŽÙñé(—-^ñÜÜNö£½û°ˆßÜAåAƒŽ7îᇶµµµ6R‚<¿üò˼yó¤ž3uv·¶ R‘š}út÷cÆŒajª*¶íû]‹c4‘y†:cÆ FŠÜ_pÁˆjý¤döìÙƒ B`†¼_ýµœQw’•ŠÅ·°ÙérÕÀ(ÂÈžûÛn»MŽœ3gÎĉ9†æí·ßæ–-¦u~ýõWŽžéÞ½û /¼Ð¯_¿ï¾ûâòÚk¯a5á­‘¶d*nYÊN„”0—Ê™5¿ÿþ»Êøì³ÏÊù—'"EJ:ž@´‡:)©ª¨HKß3ië¼51“÷¬H÷-®È‹M ý|Îíïͺmæj¿ÆÆƒ&«!Lš˜9)ÁÉì¢7ÿ¯ßæ^\™OÁ°xKøS}ì^ùcëÿ~ÛüøvLÊ,۹ƕ]ùjQçoÚFïú‚Ñp=–õ»bç;ìŽIÎÆ”WÀÐo–'ìD&zxˆJ·¡Û¡ þa¸§×Ú7:>øí†Ÿ¦¹ïk¨bRæ®/×}0b;„£qÍ6ßÄ…[Ã1®“D¯I;Cc2ë«+‹K4Ÿ|Z°Ó`ƒy}À–×þØvÿ×ëÖïŠÙWW5|‰ß]_­Ã‚U[ÎmŸÛ¾9Èñù~Ïÿê°+(¹K ¤Ä.tÍ”àFÂLÍ?m|å-o t¼â½å.~‰!ì@÷Þøó ŽÊÜG<ÓÖ‡®ÝÛ¸O›Èÿ÷uÍtÒæ*.rúé§_uÕUgœqÆ9çœs÷ÝwSIŽ]Ûµó?)‘…Š”´+øG‹ÜÜÑ•b¢8˜_`‹}Ùcãh¤÷HÉ?þHÜ#8«É8¬&O<ñ\]Õßx㎭r©q¢Š”´‡òUq6€NJê*ë×ìÚùçŽÆ¹àé(¡ŸÙ£ÛÄÛ¿^}Ï“=Ÿl¨g=رfÊ›ó))ÿïÏ›˜Ý°÷N¿2Y’Ñ+v$5Ü·w_}rzvŽeŽŽ„ÁX²ï@CLZé{‘©zˆÎ<‡0Ø4hâšÀ¹ö¡$ÄsZ fßpfŽ| Ky{p³gÜ;v¯7ükì;ÓÇ;,Í% 鯅ÞüÜ·¯.¿°(=§÷&%¸Ðb é6”´ˆvoRf!Äko êª~ÿ†è¤¬ÏǺðjäRÿÕ;ã`ðíð>ÇŠ0™¾Á/«'Çÿý÷¨ \:ÖûÁœ”0}ÃŒ€4™Î2}3iÒ$ <LýëzÓ7dJv»jÈQJ\—]v™ÜÈô 4úô gòÉ'¼b¸Ïß/¾ø; EÉ=ïÜsÏå¦yp‡·Oó鼃ñ)<™¾aÇw5}#h¨ëDR¢ù…åW}½ü›É Oÿºå±7‡ß8iÅÀÝÑ yâí‘·uï+ý¯íõëÄc·LSR²šò²»¾\‹ê…$lõM„‘ø„§axè?Û«ßLÏaK|il³íw¿1`ë ù>}¦º-uŒ‚¸ÌÝ´#~áÁb–Àèô?æx—hó5xb½øaÊ.8D ^¨{žýuÓÁMoÑ 9û%ö›åAøŸ¦º/wޤKùe†Ço³½úÏöħîÂ<ÑÄÕ?Lq+(,F°I¶A?Mqûm–gïÉ»¶zÇï)Ù3em?‡.öýßoK·‡ç–|;i'jsLéyLá´ûûlOMþž1IÙ8±BqƯ\²-²Wö.Ó™“š¡‰Á·,ÏIËÌÿqšÛï³½Ì÷ò Mƒ~ùF¤ý4Í ¶„Ñux¯c5˜û”P¬ÔOê^‡Þ;\=˜;ºâ É ãi¦°öÓ¦¬ÜÑU–Þ¼ùæ›ï¼óbã¯Ã¼†¬’µšŠÐ:AÌ]És4‹;ï¼?VªÍßÿÍt Y~ë­·8Ë ²Ë4 Pj0NÌ¡àˆ§oß¾¬(!|Ÿ>}ä-®Ãk]ëàhëÐæŽ®8 zàÉ_p)G×UÆê{A@'%ÅEÝç¿õóö;¿]óà;ny¬÷¥÷¼êéo¯zùûë^øúš‡>8ÿóïz¶Š”Ð.ÐÐQIY˜7°Xì­­dõMCmËRv%í J.-+ÅKtŽýnÈJ`TÆ®àd¼D±|ྊ¯ÆŽÀ¤ÈÄlÂcÃмAqõ(+å ¾¢hz\@dê#.9Çàï¢Mß°¦&,.ËÅ?)(2õºûë+w&ï Ná|Gˆ1pXq J*.Ñl¤åä§¥ŸÍZ›ºêr|WÝCSðñ OÅô‚¯«‹"¦gTU–òyvn¡“"XæÃÜ ÆRÏÈÆ"ÂV¤šD,o†©8¾JËÎgÖ)/¿È5 yW`RHLfãþZf‹È8>4AQé˜zÔeb(6Ùzáî/¼þá3/¾÷ø³/·Ø2M,%ÓE)š¾Ékb¶ûqE—ó%»üž¿%ÜÞ3I½4Èîgè~Ô6.3¬¶qˆ,QÑ8HYi}u…¶Û¡Q~/¬… ›¡iÛŠÐzê Qi‘k3%Zä69œ–AN}O6M<þÁ6ˆE„©Ò„iúœŸ¼%‘A¼[``"‘fy:â«=,`–k«+IÂÔV•“¨ZzcÂÉLT¾þĬÄÔ\BžÈ¦[²±µ104!%"![„!3nžÖ)s«Èº¹£«ìG¹ð‘ÉÙà:"mŒË ]ËWT31tÉ¡à#[%O lBJ„”ÀÛQ›Ü(RÒ YÒϾ¡ÛÚgLí¢û",À–œ}ÃÖ#r4§îøE¦…Æf°¿ˆñi9z€–Òlþ½É¹;Ç>†§Ù´Œš°D<“0–|r|™íb_¡]d²F†¿V˜;]B”–±„Ô«=YFt6úÃOk–¹UE¯Ÿ}ìñ‡’A½\L~òØt|Z¦y`V ³ž:¯Î¾é𤄆JÙYAö=<Ú%aŽq€ñ"¤DðØáåíÞúšö,k)rK¢RaºT?YÀI^¸·Âé2@´N ÍAƒ?É)ÁÒÌ­Õ‰‚ ¸ì F¥>?ÀKÛ´ž:$²%—:ûÆ”T…€B@! P(ÚEJÚâ¶J€ñ[å´Å…6ö4,%˜R¹o‹(Uÿ8pš“™8ƒÞ:kRÑ™ë”мҰ 8vÚfW­O’A …=XÛªCëªXG¾¨ç  ¼ÌãPÿ#†öøIdRÉ’K‘KP²Š0Ø–úVx :@®4þKIóŒZ嘒œšž®¿iᆺB”@M¸—ÐD¬ÿ³4¢c†Ó%EbãÈrp¬ïçÓbñ@@‹ÜäË#9I è´ $]*´¦t4 y“““ U舫Ãs‹„Ôp$äŒY‘ÐDÈ—Ð\” :R‚Àzc7†Õ en•HdPV‡ÂNŒ?”<êOô,­ÔÌ´JŒ®Xê9ðb/¡þ[Xç›E¾ÙêgÒr ‘„ƒ$-T¢Š”XTÇ3!%PˆôÔtvQÝçjŸ¹l•s`Vz–è…ëŠ9)IKK-ÈM/ÈÑþegšöÝ©¹Ê1(øÃƒI€ìÌt¢åaFZZ^¶!rCù9ØuL¯C¬èðóŒô´LH†!]ÞæJ 9éÜ©–&QEÝ$dV&ZR2tøBž¼,-’Bƒ$Heðˆ0æ’¤§¥f‚‰!X‹Øþs˜À‘ YÁÊL5sò‘i–”ÐYËšŒ(.a‹¤ ŠÐ¡#0SQÖ)s«JÖ„”èmŠrÑsG–•#Ì rO^É æ/åÈ_ù ?†zZa¶ œÜ,)‘ùzË"|p–¯@- DÇ–Ïeõ‘ÈŠ”tp¾} ÝŽÝ¢“ WI47;ÃÕ7jÈš=9®~QQ±‰P"!º„„KHZ±-dá¦À[BmZ²)8>1‰Li2rj’/$áYl|’{@ "ñÚx[Ä¿k0&%Ô(z. eKMv2eÊðáÃééώʯ1)‹ +{p;–sw9nMfmjÌÄRBÛCI¬_¿~Ĉ f…2·ª|›µ”àô³mÛ6¶Jƒ‚pÁnÇ?jÔ(+@ËR‘xE©q¸›¤±ljÂÁÂd¿Wðá ûª±õ­ÐšVÉÓÅ›“УaN˜0aذa;vì þè½7T0ÅòåËåC¤¥ <˜Ýýi)EÃŽv€O»fã]6¯ãakAV¤¤=(AÇÇ©“­ÍÁgÓ3ƒ£“lÃìw䯛6"´`çj'ŸØX˜ÄS<Í69R‚®ÍÍJ¿øíeóì&¬ôé?s—»ÔžÂ,T{`X\@X²ÒÓ¨µŒ°¨xŽîÍËÊ@ŒÂÜ ßXDÆ&¢Ô±7“xTlR{µ¦§u¼u³[8ü;$"núZ¿ÑK¼ïürÍ´5~Ãzæefd¤ED'øïŽÛ¯ñClÞÁ1¤¸;2¡8?sÎÆ€?ç¸ûÇì)ÈZº%hÀ÷ +|ƯðáfS(ÉÅ%ЊH1b‘˜ ‘‚ë”d~9Îež]@tL"‘æ5I“H£ã§Úú-°8÷µ%‹‚Æ-÷ŽMHÊÉL#§HB¾ˆ‹HÑ¡¯Ã̦]á_Opv ˆ†£hØw±nìx³cBJW9::þüóÏìù=`Àl°tv2Ì=ÞNô;R‚¥}QÙÈœSÜ8 äÑGÕâ'šRÛ}oBJ zkÖ¬awpNŸgƒ|Èew×N­zMH 5„bBeRaØ3^lBœÌÅæèï¿ÿþ¼yóУGJ}å{öìÉΤœ’ë?ÿüóå—_æ0???Çá¡0¶¶+Γ1)jðÀüá‡8+øé§Ÿæ¤*•pqèE``à_ýø€ÌOZÄK/½D5|Ž5°³³Có=õÔSÜóü9Q>o4Š”tÊiå¶à’‚̲¬²‚¬†9¨Î+-€±¤zÅ ˜íöÝÄýfîÚiˆÍaWØc¾™à2r‘S<Ìvû_¿M_s®*Îþx¸£ÿîØÆÚ‚†ò\X,Ä30fì2¯ÄÄèË¢M˜avÇý5Ïôö ­ü¶È‚âM ½'í8×Ý'$^õa+꺯â/är¦‰$½'¹:yE ÉN¿(2õõ—Q‹=uì2ïg~¶{wðVu)Rr¨72Ÿ¾—ˆ#g—0ÒbüÚÚΫU=]‹MH »ò Ø°7°!Br 1¶hkSð&¤¥2zôhH£oºwïΨWŒð-fß:˜Fê䋽ÿÿûßÿ®\¹’¬QLW\q•‡,s‚Ò Aƒ¼¼¼þ÷¿ÿÉî&‹/FÅBÔ`'üä„BFÿ_|1ÞÁ|hm¥yò‹À„”ÀðæÎËPAö9|üñÇÙŒæ!¤ðñ쉉‰¹ä’KÄoV)ýűšØ«ä«Ý»9ñ´‘"8FŠ”´%èø8¦oR2R3·z/Þ=Ç%kÅd·<â8»·ïÊÿ~<¡G¼fÅhaxÚ )ÉLâÇÌ’ ì'®òešcÌRïùv¨àøÄ䣜BÂãÆ/÷F»ÃN²2R_îïи¿ð–ÏÖÔ–eWg-Ùô÷jßÈøûmró‹68Ždô™â/$°(Ö½=pkq^&Ö´ûØå>‹7r㎰¾Óvî­Èƒ(Tg3WRQœŸ±Î%tÆ:™»±s ½Ä +ˤ•>+¶†0˳Ë?;JBbJYQÏ é÷õx¤úcŽû6Ϭ&5y·õ\ƒóÇ܃æ¹#LRrJcuþµ­ä/÷?f®óŸ¸Ò_“踤çÙÔØPðÀ7ë1˜$$&‘Þ'žAÑXw˜ "p§Õmß=6ëèŠVà9ãW¯(ÔŽÕ&¤ÿJ $ô³²hèüóÏçÆÚÔ˜9)ÁfÎȕر ƒ™¤èÔösŸ* ÅÉ`²FŽ‹»é¦›$³Ì2šÇ"ãø™3grž0%Û»woæàPœ°–?þ˜ù '¢Y;¶Öµ}KkMŒæ¤„S‚1^‚ sJ0 é¤D€âùþó¨ ÐAS0(rÕø"Ç q¾&ç 2Y†¡Qw4iPŠ”t<h tR‚#çîðäQS–…(®ÎÊô/®Èósê1óæ÷fÝ>j¶m]y©¾ÖÀÂ雼œô›?µ¹Þ»Èv¯ÈÆú‚É«|ÑñX#°—ü:cš9[§ÐŠâì”ä”7li<P‡’›o¾YÈY³¤DNÆb„ ‰)-¨ S9ç¸AwÂÞ:¼â„º}´$ŽAJXÒ%¤7Ù[R"ë‡ÿýïc¬¢]0›†q…úöé§Ÿ:880®Àcï+ †öÁ‰uNÓª<*KI»p‚TH ‡Œ”ì™öGø~%™éôÞ€’vò޽Ôës(ó6q§ÔŸ³ÝÈHvFËþ:­j«:°9)¡~ÒÙ=öØcøcZÀÕ|ú6mÚ4iËÌ£Ó[¹¥„)¦™¾áí»sçή4}#“2YÀAÁÜÀE.¸àº;î™zÀ¸ÅÂÏ<óŒ”Äåí·ß†ÄÈAÁÌgш(Jy{ÆgðW‘©-;(ÅôéÓ™µd>üðø¯âì…_ާ§'T¬†·ß~;x‚9?q1Á@BžC9«GW—‰3 ²°®U}—"%ÎÚE€&RÂÀ"1£ïÆï&Å?ý§óSO¼sȼoœ¼íº{ü½Q·÷˜xß«ý¯ýüû_몫Ñ2ÍI s*÷³®±®6ƒúÞ/$¶ïô]¯þîÀL sE9ã—ùÜýÕÚW~w`ŽÃÑ#¼¼0ËÑ3â±6<û‹ý§£œB#âp1é7cW¢æîª‘Ì /ýæÀ´ŽXG’“’ŸûÅ¡(7ƒÚ GY>æ:X•÷Ü/ö¯þ±ùÍ[6¸îÆAÉÈÅžOÿlËÁõÍ›Ÿëkÿl_»#¶{Ç0=4ÅÖ÷…_6½5pËðEžX;xøùh'Ø @ŸŒÜþé¨í•ÅY;|¢žûÅî¥þ_Œuö ŠU)9÷õ%X_¸gfÇ7$æë ;^ìïðÒo›±‘ì«Èë1Âñ…~›º Þ²ts°aUNꌵþw~±†™,2ÒºæØª¶Û©›“túè#&Âà>œHÃ!¥ dýꫯ¾þúëÏ=÷\|w°}2;FY\uÕU_}õ•,k-Š”´ 'èðHuR’ššýé¬îïÌú÷[ïxªßu·~xá /ŸsÇ<Ðí¢»_»ðúÿÚôÿkpUEU2û©å2_,ûuhk`X–‘ƆèïÔÖÛ¤$%Ög¤c/aÅJANVì,-hnVÓ:„á[4wÓŠYmu°1°'%”B¢5¤`Pꆷ¬âoRih'$JLDE£‚Ðhb'0iÅ1ˆ¤½MJÁXÁôa/DGÛ›„©"ÃRdM½ð ŸÓf´Ù–´Ôƒ„¤‚qFR䕘j/MK¶S!LRb2bLËS¦d)ÃÚc&$$ËîtŠ”HµjvúF¸Ÿ5({R‚`˜¬éUe£I†’V¨ÝÍ7OC€'ÓàUÖÀöNDÑš/ –R:Ã[ò‹Ö¤ìȲ˜²Ä™ìˆrºK ?eÆAÂóóø<N$;Öö­ )`¥þpQ¸×«=Љ£±Ø5ea¿äˆ‡@Ê[½Éð„o%¤"%άBݧ$/7—Õ/_öñë ÉýLìûǘŸÿÑ·ßð>ýþúéçÁß|ÿ+N¯­ò)‘Zh  McFF ¹QášVNM·Ôk¶]€¬1¨œ&n¡…1<á’õKÜGô¨LOQÿV¸‚ÑOí+ÙEÒ20ƒ#”Ȧ¥{(uÙ0‡ÆìÇXBQ–²»š±œ’Ó¦·†´ôlj’bQÖÖu <Í’­"Y¾µp;KoLJ¤EŠ>]ºi+d$HØìŽ®V.s«Š±Ù}Jô ÊÈž¥Œ¤.ÉþDo¹ú[=¼n•<],°ù>%Æè™ÐÁJ_QÔz9ñê§,%VÁ!Ú\ˆÃgß$&r._MEyuyYueYMeEMUeM5ÿªj1eVV¶xfý‚l3/k%,9»KXd|Dt|ZkÙ±$f¦“" '(QÏ­öd$”)szÕNqö E?ûư-PW»$ƒ²Ípžwz: ‡¦:ì{ë+ÔWÖVk$$Ñ÷u5n!)½§ìÂ^’’•?`žwdBÖÁ½UõÕ{ë*˜O!Œ´ö7Tòso-±hr쯫âaH¶Q]UÑØ =ÙW[™[PÔc”KãA̵³6ì>ëå…Åå¥|QŽÉ8åùy¾a©ûkøÉç1ª´6Y]Ùx°†ÜÕTkéî­©”´Ê+JÓ³ £2þ˜ç“‘WXRR\WSi,!täÐW|RA$äúž/×560‹LV'Þu` Í’𠻀£-82CÆ^V"¡°¥qãÆM˜0 £°å°‘¹8‰w¬&ø˜”ÄüùóùåƯ>>>ß}÷¼D4G{"I›ðgI9ç%Qg¶lÙ"3;>ø ,„( ­*ZÞu|ì‰|eNJŒ2ææT؉õ“NsK “]ÏR"žaäîË/¿Üºu« î#<ç7ˆñãÇCsß|óMñuÅRÂ7hGoooî¡)<òHhh(G‹cDV¹©®mòm³¤„I1vz…Ø‘„Txˆ™¾éÓ§XJ ¼´Yn˜Çyê©§0A1³páBQd¾¾¾;w0YvŽ;Š”´9°Šõ™¼ª²Ú[Wñz{øŽ×;+,Ö†?Lz»Û¸;¾ZrïS½îŒ)i¨;Ö¬³¹¥·[—hœ?ð‡(*ÞÓ–gÁž²7lÍË/.**Y¶=ò£áNø¢Ž]íØ_ãè›0t±oCuEfnQ@dzZV¶–_fx†Çk¤ä¢7— RïÉ;#pL©ÁVÝ"#§s‚³_baq‰WX*Ú†±Ý/qÖÆPœja™9¬†)&*¸Qv^ÑÄÕA>aiD»Ñ-vÄ?ñ£ýÞÍ[uÔŠ§ Ô9á«]¢°å@ ŸÙ 9œT +„ï7Ë+(:g‘éë‚]ƒRæm‰\ì9¸¯úÆO˜\8 “’¿×{A,ªÊ6{ÆÿµÐÂ)Ö`4Ò\\+´õ; wNLË+*.ÎÈ-töO¬«)‡¥ågç}8t»¶Æg_õÃßmÜ¿·ŠçM¾ÀmÒÍXk$æÓ7bx è¡#œ)ϨœŽÊ9)=zô¤I“O3Ótá…Z?)As ˜1›sˆ= ‹ù”H a%Ô;ï¼³téR9!åÞ{ïÅ:B]ÂLBy¡/!%Þ˜ƒÃv„£°yyïÞ½y(Ó7c”¯H‰»ÓˆÙ?"rƒÓ,ÜÅ3455»`ú†fj˜”±se 1¬ŸuÁÇvWp2y·RËlDb6n¼dÉ,»P\I˜¾®ÇeM² "¹†'€õÏÈC޶ù'"9]æIùäG}“£Ú3íµqãF c¡>:R»Æl*Ý»wç'&~âk‚'–€Ó1¯â¸ÓªŒ+K‰5Pˆ¶—Aú·¦²öûY?ÞöÍ¥÷}}ó o]~Ñ#ç^tß¹ßwöåuÉݧŸ}½Ízûõ¸˜X>}CõÂü€òöKÅ´•^Rª-9Æê€^ç'Ëk¡ iPùP£¤yâžÆtON~?y›–,¦ m6§¦<%3¿¸X Œ—(Ꟙ}ÂS™¬!p~aqZvIh|¢´49#ÿÞjV»0í›Áli™£—lôˆËŒNÎaQ !˜Xü"Ò°©0¯„0yù8“Ö±Ú§¬i‰ÁpÑÒeQ +ÝÃBb2aî Дƒ{Ðï+«¬~sà–ÆýÕŽHÈòH‹NÎn¨kòQ…P3AzˆJÁT°£Œl1œ@P¾B :x)i{B` 1ê>%˜Ècâ6lsÜæºk«ËÎÍNΛ¶mÛ´u»Ã6ÇM[¶m°ÛÔPßÂøÏÜR‚EB µTTÙ,DÛåL{‚j—Æ„FˆÏO$¼lS¦õ¨fÇÌeHÖ"†Àåe²6˜Z±¹È¡íÈô{Ò"ß2eƒÅeøR?ŒØ3d‘³l%‚‘F‹Äð-é"Ž0v~"31ØÏ› 1'„©ªÔÄÐÖýV–ßñÅšWlÛêÏâm}oU¹¶¶Ù ¹¡aó-¿‡6‹3äË aµfåB0AÀ @Óf'‡Ð;™QǤeNJD ç*ø`ǯ?j–6ÑÓ±ÒÕZƒ„æ%gNJ/AfTu‡ó¼¯jÍîè*ä’ýÓH…Ìò“çR£(, `¼šj&†.Ѿ/Ήƒsâ14ëS½úJ2Ô×óΧ#¯ƒÉCÁVš³€Ü$^‘k m/žç­ìfˆ’­®¬®®’55Õ5Õ‡ÿiãþcŸz@¿@…ú.¶S"Ôb6Dn¸´û¦‡úÃ#ã“b gÜ4…?Xÿªõhcc‹G~î1rd¢‡SÔ>$çai ¯gM—P)ÛS’™“Ÿ—Ϭ“¶¤!ï’#bl&~£0:Æß£w¤t]í—Ô"qÑk‘qµéð 7+á¡jfVØ.®A9†ˆq]´r™[…#uó³oÌ3¨?9²#:¢ÔÌ!j•$]2°´DZ%4îpßn„¯y 5ÚÐåšâl¦U詳oÚžXCŒôSŒçÉŽFF´¦—æ7aÙ×Ù’À'? Yª­5ä°Ý®†ºÚú:-vK¡ëG,'Zs>EBþZ³Æ²1eøAÛìª5S2(ž˜¥P:—œRç­­o&jɥξ±%k £÷ÐVµy„m%˜ŠG!ðG Ë·Í.ŸÁŽªÀXEJ:ªæ´:]¦ôØh™=pŒ¯ä䤔ääTþãβ‹øúá‡HÝÅq‰{Ë¿µ,ªë#@Áû2+‹àÚŽVX‹DBj8â©g…š×df)&“b¸vÉ:DÙtD»ÁeUõBN“Ø iY‘mréñœ`FŽ!Ì¡˜ ²#¹er›™eu‚P¨yj‘úAC: ‰5äZÈ·ë”м˜é¾uR"6Õ6£›NP9Ž."R‚Éĸ÷гi^‘L^ÉOcpŒŸtjpN\x©çÀËŠ_ê‹­Ro§æÕ̤úWÅÖʉ$ÊRÒæ” ã#4!% HKŠŒÙ½}SƪyŽÛr23a%–hÊæHIJ^vzI~&¬‚¿9™éMUð0_q¸ùÝk·™i´‡‰+|Îqÿk¾GYQVòQ§fe¦•e•NËùrÊ‹,t ;* &¤D$dHÈ:“.»£ä4Nׄ”hÍ<#C[To8ß•žÝ ennÍ’fÙ˜´‚ãJJÂÌX‰ÊÂ.l]ÄÏ)-²)PPˆ ÏXÐAê? @±²ëµ²VaK`sRVTu©ó d\j—ÅÕ”OO0žÐ„ ,Pó-øùÀØ )éxÑ“­{MK‹‹O³ tsÊÞ蔿|¶ß”5Û|ó³³-i–æ¤$;3ÝÑ+¢ûðíßMÚñõ—­îáé©ù9p¨@zZjn ¦¢†¹)ÊËàqNfô…{?¡Ó×ø-Û²Î%ÔÎ5¬ W{NøÂ¼ ¢â†„ÏÎHËÌHõŒé6xË÷“wôšàâì™ÅP;…ÅùE¹†– }¥à«‚œ&b‘‘–J Z$™ihy¢¢7*ÌÏ€Ž`²·Ü»ª$§´0sµcÈ·\¾›¸ããáÛüBc5‚•–J$|XK–ª—œ çi4Ž„$ZW­ä+?CK%9…·Üðy}yÎïøn’K¯ñ.@Ôgª«³w¯r³Ó‹ Ÿ³€ü,ÌEº”UyŸŽÚÞX§½¶¤h,iáVƘ”P£¤/ãè¸gŸ}öàWá%(­1) éU9Áø™gžAB[[Û—ÐR‚Æ%llúØc½þúëìjŸSósRB%!ì+JîЋp ÜM^xáv eŸVvñ‚ˆ¬_¿žzÅÑ6¿ÇO8Ê”)Sî¾ûnŽâC ão÷矲‰0¤­c«\ÖvIÚœ”PÉçÏŸžœô÷ßëõG‰——‡UqØ Gi‚‚rÕO‘’ö ç‘–’”ôÔ ¯ð¸ qësm'úôM) sô ö ˆÉÉÒ Çnæ¤ÕûÚ›#bÜü£\ý¢¦¯õ‹OJvôŒHO…8§â¶²Ó? …—ä3ß.°(?Ó?4–` 7…ÅU–dïôzsÀæ +}à7Î>‘…9~!1ñ‰Is7&$&‡„Ç/´œnëe³[ø'#£bIî÷ÙnP‡ÆÚüyvs6,ÝÀY‹´¼ƒcæm ܸc7T )™bë;c½¿OpliA–OH ¶8yGnqüû kœBaæzÌ^àŸôL_û²Â¬„¤d¨ÒÌu~¶N¡Dá@€¬ÌÔ©¶~é)aQ dF·§03("~úßùö~¡qExˆœ+¶„ÅyņÇ}2|û*Çÿݱ‘±I5{²·yFÌÝð÷*èšð0"Ÿ±ÎoÙ–` bwTÂeï.·Û±y4öÖRÑtx§f¹&¤„q<»Ë£$8ß‹½#¯¸â zCtjfÙ„”0ì7n{f#!ç·qj ]0ÝnJØ")A…pJ0çðqì§³í:b[•Ì–×BšñA1bî‹/F2d‡Žp8 »»²¿>EFa½ýöÛlÂëîî§ä JCká+ݺusttäÌB¶E‡tvl}kíؘ”,,œ£mØ$žÃÙ¹`Ù›•J%8pö L¨9¬êå—_FÏÁ`x‚ÇÞ??Žþ†”°,˜shâš5kˆ³µÕO‘’Ž'í!NJ´ú”–Ÿ˜½Ìo‹]Öìe±£—ç¼ù.“F/[\SrÄÜ~suß„”@;°ÜùåZ¶œhÜ[ظ·ýÚP–óT;NNF:LâËqÎЂ/Æ85Îiæzÿ€°Ø! <§­ñ›¸Ògò*Ôö.ÿ¨×ÿÜòÛÌ]ù¹×¼ºñ@ág£>²m‰CJz­rÆZÿþ3wÆ'$»øDþ>k׾ʼê=Ù½'¹îŽC…O\éý·­ïøÞ³Öû“Ç/ǹ|9Öyúÿa ½6º„Vgÿ2c×´5¾Sm}‡-ôŒˆNXº9øÙ¾öc—yov°Û¹û©Ÿ6.° LJN<ßÃÑ#Kã¾ÂÛz®­(ÎJHLZ¼9ˆøG/õZ亱ûêþ3wAƒüvÇžïN*Ãy†FƇGÅYàA™´Êã’Èã‹¿mâ­{@L~NZEQöÏSw¢°Ž` Úâ>a…÷d¨ÒZ¿ßfîÄ@b¿+ ñ&¯ö…‘ Ÿà˜?Y½À>Ð=0:ÔuI ûj0®E=0¥þŸzê©’ŽUù&¤4ÃqL Ï>ûlÆåb²n' qÑšXJPÒ“ËI%ñé§Ÿ²_¸LsGäÖðI³–ŠæÃ?ä`9Zåºë®cÔŽ·ï´iÓ† ±p/½ô35¼âθŸÉÔ%ò‰{SçE¦MJÇ„”'ý‚˜¸qÀªJÔ|Üz ¹œ·Ç&XP–[o½•0€ w¹çž{f̘A”õA/g2Si>­Y‘’ö §‘¥$%7#g¥£÷°)ÛSý¾ñ-ÇðeÈ×kñm/z%=)?;³…ÁŸ¹¥²`Sà™//ºòƒW¾¿r—_tã¢Çܘ›™ ) ‰Œƒà¯1x®䣡"w¥cð¨¥^læYW–=eïêíÁ$°y„FÄóáÕ¬h ®ŒVQúý¤;|£Ücð;áç¤U>³6ø7Ö>ñÓFæGë Ðôsd>è¯y;|¢÷•ç¢æ¶ó@uÞ}߬kl( ØÈÅ^]Ã0½Œ]î½§0 ËJ\|â磜ªJ²köäôŸå¶Ë?Z‹­±ôªV•dåegh©7ÄÆ'œë±¿2÷߯Â(RYœ½Ù-¬çX'CFr ë]Bá4{öVæÎXïg¿3læú€É«|Ë ˜ÜÑÈSE?þ½Cc™é˜| V–k9¨¹ò¶/laB£–x­ß±»ñ@qe‰6ãE¢7}j =’¹ØÖ6æ6é§Ú)K La¦#“m.¸à+$%üñ½ª,É9ÿüó¹±~R2qâD¸{„sJðçŸÎi®]‰”Ð"dþ…CàV¬XæqÓM7 wá8L#‹óÊ+¯PXÔ¨Y³fq¶œÖÝõê…ú0`Àµ×^‹ÉDÖ‘ÊÑÁ]©•µ¶ñš“L !° N:)Áòí·ß25†™c D„0gœqÜëÍ È| O;í4ॲñš¾éx6`%è¤Îáæ7tûŸ«"†rðžö¯±qÍŽÙݧÞÑsõ Ÿ œR_QulýgBJsáQYœÕ¸¯HûWŸÿ…‚<û‹=ú'ˆèįÇ;'%'a–Ð&5гœ¼#®ùpåÃßm¸ç«µ u ‹ÏÍÎøeÚ.&\÷]÷ÑÊÆýE½'ïÀÄR^˜µÕ#âé>ïéµîþ¯×=ðÍ:–û È/zkéÍŸ®0ǃøkòa÷|µž÷ôZûû,7Öîà#ÂIMiö†a`Vç?Ò{}cMLbäbO·°YëüW:†dg§g¥§FÄ&|4̱´0*ð÷jß{‰ç«µç¿±”ÈqUqõzõ÷Íw}¹îæOm¿ž¸£±®àúî+¡ ‰Ix¡fnرûâ·—õíD{f‚¾òpo-_oÜ—ˆm†¥’|͇ ˆðÇ¿]ñ‰ÁU6u/T龯×ÝÛkíó¿Ø×–åæe§A¼®ï¾ ¾¯hhÔáSÙ¥ “‰£«ôzx鼤 C©tìÈÕÜR‚s:û3¢žsÎ9‚”L˜0±x÷îÝÌYàÐÅH U‡ /HÉ 7܉‡©à8„ 3VÌ,ðŠ ¸9sæ|ñÅl*û–~üñÇ8 ˆ¥„儨ç¸ÅüϼÌIÉ¢E‹ %p5!%XJ¨ÿâ>)áዞ0¿;0Xu»ÈÔ©S1–PòCmT–+¡/†t[zrîØ s†¼>Èé…I~IÏIA¸¯Æ½ôÎØÛ¿XøÀ¿¹iûÎøÂücxÍ-%ÄÌÔKÜ#cwGÅÿ2}¾¯ØŒVÆ#dÂ*ŸwocH3l¡‡WP4Êx­sȸ¥ÞLô”e2—ÁÄhkÏ hͥݖa/ùj¬3“Æ“cᦀ=ù™x}î`ª'>ÉÉ+rè •ÎÞç¹ãúæÀ͸‰Ô–æäç¦oóŠK¹ÄËÉ+1–m <Ï}_eîS?Úa¨ƒ¡ =ñw™fë·`Sþ¶ø›DÆ&~:r;s7x ¼oplcC! ©ð»Ì`½Ø[?h®ÇÁÊüËß[ÒFiªAùm¶Çp'ïpfjøYQ”°;޼[î3×.€u7:)ùf‚‹[@4¤B3l§‹od}Yîš¼å[‚s³Ó’“’q§­.ÉÆºƒ» F NþÃüCTHÞ•Æpæ«oP˜‹­2rÅ,Œ9>_ý¶R'&¤„á ßã¾€ÁŸŽõâ‹/ÆLbmk“é¦ÿQÌœÏ<áöìÙ“mWò)‘²¦ª¼ùæ›ÌýáÊÛÀƒ"BÑà>‚C&¢W_}•Ù+ÀS‚f9Þrr2 ¨ásÏ=—Ñ?6$>”-^Úª uºxLH vŽåË—ƒ>IÜ3}ƒw®¬X4©NŒS 78àL*aî 0É8ŒeË–qz0öÀçÄf¬SK—.%žÖöcjú¦ã D{Hpˆ”¤&ÆgôZýɸ˜G~ÝöÈ›c®ýzüË3VçÏ»ßþë¦÷†ÜþRß+ÞìÑkomÝ1Zf3Ž®éixrôãÔ{ÒŽo&ì°ÛÆ aü[¿ï“¿WùB ø ? ¬,9ü½ÚëÂ7]f®õGµc½ÄË?4æ{éÁšü¿æ»ã›“¥1)|c¿¸ƒð£–xCvúE1ÍÁªZæ;6íb"&(>1™%3Ìøl»WDbRò»~<Ü‘Õ@ÎvÃé:b»=ä³QNL$M]ãÇO5Ö¹ìÆLBüÌ­àV]€vàâèÉ’YˆË R ˜ëNäø¨â2ÒP–ûü¯›pšÉÈH ØûéH',CVøÄ'$±Ìçäk‚Ë”Õ~yYéøØ:…äg7Ù„y2|§/^«¬ýÑHF2sI¬Çé1rûâMA…¹™+¶…àÃûÕxç5N!¸þ°ÌÇ;$æÝÁ[1ik³5÷‰æ¤„AÕàÁƒqògÔ‹šéð™R‚<à‰ï$ë8è™°ÂUÁ&¤ÕΕ1.ŠyõêÕä¢c©Þ ÖÉf]1±ÜãÑGýàƒèèvîÜùüóÏ?ýôÓ0¨Z½øÜsϱ%ŠØŠð‡Àg7L Ôº_|/Îø“Õ7° ªŽ«²š‰Ù.~ÂtþùgÈ .òþûï5dLÙ@Ö×­[÷ÐC±ÜûŠì%Ó¯_?Ðj ˆT¿ã0*RÒ” ããl"%š–Íé·è·W‡ÝÿÖ§Ÿÿñ¡ûÞ¿ùŽW®}à­›}ç–_½ñ¶g._¼bÙžâcù"5c)IMÍÍLg± ÆMŸ—“ÎøžG t?:æ!Šì“†²×Þ&kZ_–Ãâ Ë?î´-|S`Þòžc ϲ[-0‹zšú6ÖÜjìåMº¤•ÈÚàÜ̈x,ø¯ÉÁcˆ?7+ Fäš„iM‘È¢e¨o‰yô]äÄDy·°BòKË‹¶ÜYË RñН´‡ò•¤… ±v,$u-:Õ¥Ý"6IÃ9 ÏÙéYûOBxÃòãôX¶{N‘¯N°K·¢Ï›Ý§„>Q6w·†M#Ì÷)ÁÆ Ë=0\£½¬P»›ïS’(¦ÙŠüšÚ6»O %%ù¢òp£%÷d_ö'åâ‰,dÈ%ê“·â-aE䤋bBJ´ÎÓà8Âà)ËÍ e»±ºµKÐ|*O) YN#!†ãn׊”tª›\zŠ„7æÐ[MÃäÒ¸ˆäΛFç¢)æù2xÛ˜Æfœ®ð!‰Y>×êÁ3—ÖLÆNö Ù]¥#³ÅÙ쎮"¡XM¬ðÒI‰®\µ1€AfþvjÔ,)Ñ EŸMÓ³L—R3žn“mÓäîòg$à “8·¾£«ŽžŽOôº¤C­£'PK`r£?9>„)iJÐñq2UOÑÂa¹P¬y¹¹9y9ùy‡þåäsÏ R|Œ‹‰[*"¤„ÚÖbàcGÕo#ÅÆÆ‡EGÇ@ØÛ#g µˆ†ǵÂZD‘P|ôè[­SBóbÀßwNÚ&¯hémPNVdÖ€BaZÊÊDë âˆÅx¡¸[I–D|°äRòY‚’U„a)9~éú%Û7{köž¯ØU0¦c¹o1üÉP]]UW‹t'?e•¢¥°í4µˆ¶Á²)¸µ]HEBBþZ§„æˆá˪Ú¦µÙVòAŒ¾Šìn®®¶E@ê9ðâ/l=u-#«¥,¹)±%F! P( vG@‘’v‡X% P( …€%(Rb J*ŒB@! P(펀"%í±J@! P( KP¤Ä”T…€B@! P(ÚEJÚb•€B@! P(–  H‰%(©0 …€B@! P´;Š”´;Ä*…€B@! P(,A@‘KPRa …€B@! hw)iwˆU …€B@! PX‚€"%– ¤Â( …€B@!Ðî(RÒî« …€B@! °EJ,AI…Q( …€B ÝP¤¤Ý!V ( …€B@!` Š”X‚’µ„9pàÀ~u) …€B s"pðàÁc+TEJ¬…p´(Gee¥···¯º …€B@!ÐÙðóósqqÉÉÉQ¤¤Euß9äååmܸ1 P] …€B@! èT„……ÙÚÚÆÆÆ*RÒ98G‹RæççïØ±#===S] …€B@! è<ddd¸ºº&&&*RÒ¢ºï %ؾ’““SSSSÔ¥P( ΃7ÎÎΊ”tÂa‰”Ƥ^¢.…€B@! Pt àNŠ”X¢è;SsRb E>ñúj’ŠEù †‹¾R …€B +" HIgbÊjBJ(ãÔ´´´ÌÌcüKMOׂÀe’ )¶¡Žh ¦§‹`ÜèóM' ˆúT! P(:+Š”X¨è;S0ŸáI±±É ÍþÓ^%%ì¸ ÂHR’“µ¨âãù×ôä(DGì#é¹¹i¹¹)iišTññii99é99-šÎÚÜ”Ü …€B@!p,)éLlÃBYMHIF^^¤›ÛºgŸÝôÎ;æÿÞygý /ø/]šQXØdº0šRiž¦  ½5Ðd¯Zµöùçíß|só‡F89eäç7k,‘‡$çï´|¹ûÀ[Þ}×á½÷<† \´(ÆÓS£G ÿäÒÓ2­Î&ÒšÓ  ú…€B@! 8)(Rb¡¢ïLÁLHIVIIàÚµÃllÆÛØŒ³±™fc3óÐ?~òWŽ¿ÿžU^Þ¤þSSÓ˜RÉÊÂtÑd´Ð5ý¡9ͪ‘•%.oHNΩ©ñ;–Ø¦ÛØÌ=ãŒ+²«ªšÈ„QUF’YTµk׺Ç[ô¯Ͷ±™hÁæžyæò›nŠööÆ^ÒìäÎÔ业´2•1ÈÓ”`sxw˜*Iv˜Û";Ä`Èï1œ”F¨Q( A@‘’ÎÄ6,”Õ„”Àâ##½fÎô]¸0tãÆå7Ü0ׯfÍœ³Ïupð[¸ÐkΜHx@v6µâéiÙÙ¢ªÓ 1xˆÇ‰vášRX˜ž—§1deað`Î%5##kÏïÉ“!óll_rÉîµk3KJtr ·7âHÏÏtv^ýÐC³ â=k–ÿ²en£G¯ºûnxRˆƒbh‘#L^ž–!-ã[ ‰ò”­ @0óa„ €" qÑh? $;D¨=9”_î%ÅãžÉR=‹B@! P7Š”X¨è;S0sGW4zvyyViiyc£ícaœ˜±äüó˳ËÊx…òÖ %%1^^^£GÛ¿ðÂÒ»îZóì³î„oÞœj°šhβ{ö„®[çÚ§ÏÚÇ'35 ¸±qéý÷/½öZè1Ï?í´7ß<ÿ¦›"ÝÝÛ<ĆÁžnyyŽŒ ü[tþù¸¡dUTdWTz¬ÏÊ[o Ù°³M”‹‹û AÛ?ûŒ„–ßsÏÆ7ÞØõûï¡6ÒÈM^^R|¼÷ĉÌþ¬ºï¾åwÞéÒ»·×È‘øÇ@A`$0Œø  ßÉ“7¿þúŠûî[vÇn/]š–Ÿß”’’ˆmÛ܇ ÙðØcKï¹gÍã{ ²j•fiQ¼ä¸;õ¡B@! 8^)éLlÃBYº$81±°±lKÉÌsÏ-hldæEûg˜R^,»æš9§6É0Ñ3…ù”ÓN[xá…~Ó§cKÈ,.ö›={î)§Ì9唩† ¦]f÷Ö[# ó/ 1c,áÛAØ<6o6ö,&ãë»â®»æØØümc¸`An]f´`«7L3EE۷LJ†æîÛçüÕWD.3;üaº¸p¡fÌÈÌLŒŽÞôÖ[³N9‹ Œ¿£mlb==qp!L¬·÷Ú'Ÿ$Âðv²-Í9÷\×~€Ÿa# Y½zÉ7Î9õT 6’ÿV>õTRTù=<Ës¼­K}§P(­B@‘ }g v´ÍÓR’’LH ?egØ¥×]‡‚‡²ì^·.a÷îíß|@ao|ñE™ Yùïó[Èöž=ãCB .ß¿£OøJ´‡‡ëo¿F²è ½'LˆÜ¹3).®i2åÐdaVYYÐÒ¥¸’l‚ ¦è…¨ùËÞøü_vm­ÓW_Ù½ürøöíQîîa7nxúix ©¯{䑬¢"¬ ~3fðÿ˜7ݸlY¬¯/bÛÞ?á3JJ`6ëžzŠð N;ÍcÄ$q>ÚDî–Ür æÒÚô¿ÿñ“ì_y%!,,ÒÕÕý¯¿ÈZBd$Æ!EJZÕ•¨À …€BàÄP¤¤3± em-)àlá9jÔܳÎBÍ/<í´¼ÆÆäÄÄàµkÑâ¢øãƒƒ#¶nÅ䙘{ú鑌âb¶–œ†hDÞ¾Ó§K€%—\noŸ»w¯‰Ÿ,æÜúz§~ýĦ)É®¬4ž(†¤Ñ“¤¤œÚÚf—ÊË!LÜïüóOÄÀ 3 *S\œYV¶á¿ÿ…!ÞÊ;îˆÜ¾~ƒ³-I˜@Ò³²‚W®\|á…p¬å×]íæFv˜²ÁX‚x|â3iR¬—×¢K/•ÜméÖ¼à“àásãĘŠA! P(,G@‘ }g ÖjR‚ŸG~¾ý믣¡Ñúø…ÈD†Æ0Î;oþyçqîáÁüκ€"_tÞyŸ{ÎùûﱑˆÏŠ×ĉBJ]tQˆ­-,ÁDµk‹tª«=‡ #Ì-¼IŒ÷mÓÂVôhŽ#©©» °ùeÛÛoG±Á•”`) ^¾QÅÔÁßU·ß¾ù­·¼ÆŒaÂ(-/oןÂH4^Ã<Y`r‡xÈá¾ý6§¾~ë{ï†h™ZtÆc˜3Úmo)Ñ-7–·%R! P(NEJ:Û°PÖV“VÙäæ®yñE4´,ÌIŒŒ [¿>lÆÝ60u‚shRt4¶„H—¥×\³ð²Ëd&íŽ:ßøä“ ° H ? %†Cõ‹ÚŸÀseÉu× ¢×ÑœZd5Ì!O‚íüùgÈ6Û[n µµuüüsq…á+Þ²VˆE¼®ü±àŠ+ðzArä!0ÿü¦Mc5²Ó?h‹“ml–^ziÐâÅ‘[¶#²£ý[·w|icp:yþù…—_¾àì³e¥4Wüç?‘;v`žQÓ7'ع¨Ï …@kP¤ÄBEß™‚µš”ªìüõ×yøX32yûö1¼ îÜhK]¢£“bbða—‘ Ï<3ÿ”SÐúèòµkó<ÇKÉâ‹/F÷ãÁj²7«ÐTW?ø Ðˆ-ï¿ÅÛ†¶š—Õ¹LÓÄøù%†‡/¼ôRX"yŽYÝØè>z4á±”)ÑÖ9‡„ÀKX_ÃLÍÎAƒ–\vÖmEÏå—3©ä?g΂3Î •%_Ìž(LÊ-G55ÙÕÕÄ@^’ãâ‰É€9s¶|öYÓ¢$›]C†4™yZÛžTx…€B@! 8)éLlÃBY[KJ4G×üüÝ7.ü׿Ðâð’mݻǸ¹Å²éjÔÎ,ÍÅ34ÜÁÁö"QçYÅÅAóç/8ýtóIèúõ8‹øüýw“£ëyçÁZ‚‚ðä8bm­a§2Òr<6Ã?,n’J\PÓ@îþ ­ suÙ¹SŒ.óN=Õå»ï ,Û¾ø‚„šHII ¬bÛGíèÝR’’˜ˆ†UÊ–ÝrK~c#~»«n»Ÿ<Üôâ‹Ø{₃ã£wí ˜;—ÌâÖºùÕWçÏOŒˆÀ»–#›¬Šû˜1į,%'б¨O …Àñ  H‰…о3k‘”ˆïȬsÏÕWßhÛ¡¦¤ìê×oÑÀÐå+o»ÅÃ+ï»oñþÃrÙHô:N¦ þïÿ–ß}÷šGYvýõ2ß'&l-Ñîî'„—à^:ïÚkÃÝ܎اİÄõÏa7¸Êb™ -þÚÞwߪ\zóÍĆ/j„á«õ?Ì[äIJêþûñZŸ\C0cà²êÎ; ¼ô¦›VßwßÚÇ›wæ™|Nê!+Wf––Ò IK/»Œ‡˜X–ýûß¶=¤¥rÓMˆ½½W/X IÏ:óÌwÜaûàƒüã[¯}è!L5&bOÛRß( …@+P¤¤3± e=))jl\` L‚Œµ±RÒ´;*KN’’¶tï¾ôê«Ñýc ê|ÍCÙ½÷^BL Ó7N}ú¬ê)tùHŸXûðÃ;ÿø#Öϯiƒ×ÌLß©Sa¨vÙY$b×.¼UŽ09~h¾#ÉɾӦ9~ùåü3΀ëà¾ÊÞk›?ú&!‡9— /½„ ¼ÂuíÓOËN$lÂv&Lô,YâðÑGË®»Ž‡ì’ÂRšÍï¿ï;s&î&šy†¥Åiia›7㊠}Á=…-Lø»êž{6u놥ÜGŒØøòËóN?Tø·þÑG]~þ™uÎ’µú¦•‰ ®P(NEJ,Tô)ØQI K³³ã£¢Øuž¿±áá²µ¼¾k»l·Êέì”F0ü?´mÍ8\†E1†9Âó0>""!*J[gkp8Õª¡,œ!@b¢DN¬Í%cXj«5÷Ä'±%$h;ʳi½aŽ&[jj\x8^´B›âÃÃ5±wï–µ9rø_‘1h"loø¼‰‘ÃøZ˜ˆ¤b3ÄÓ6­7œ•#Çå@¶D`rªmfhÇØm[ê{…€B@! h%Š”t&¶a¡¬G#%æ‚&FßkÿLvã0¬Ñêá|; Ót,Ÿ¼§ÃÙuhn^(ÅaÚ!ô½þ­‰£ëáÊiœ–!6YM£Ñ¶?´‘švøŽ¼"ÑC÷š!D?TÏXTù\ÕlvôTeÊ"Ù‘TŽˆ¡•mIW( D@‘ }g v R":[¿Ìg(ŒßšÜñe³‘4÷ñQ+èÑS©Ž!‰ðŸ£0NñØ‘Xà 60õ¹B@! PXŽ€"%‰mX(ë±I‰å•C…T( …ÀÉD@‘ }g fLJŽÏT ¾R( …@‡ ““ãì윘˜xl½k#WgRÎÿßÞyÀWQ¬? ¾äoo׆åÚ®]À®Å.¢(ˆ¢ˆ ^PzQQ@éJ‡@’¡¤Q’BB iFH?锓^y¿›I‡1Ws çðÌãîìì3ÏüöÌÌoŸçÙ™‹UWH‰——WJJ 6U’ ‚€ `>ä²¢7û¹ÆÆ )±“‘‘agg·k×.I‚€ ‚€ù €dïÞ½+W®ŒˆˆRb!¤¤¬¬ŒÇ&IA@0+ÂÃÃóòØ'þ\IÜ7BY¤‚€ ‚€¹# ¤ÄÜŸ è/‚€ XBJ,äAJ3A@sG@H‰¹?AÑ_A@°„”Xȃ”f‚€ 掀s‚¢¿ ‚€ `!)±)ÍA@Ì!%æþEA@AÀBRb!Rš!‚€ ˜;BJÌý Šþ‚€ ‚€… ¤ÄB¤4CA@0w„”˜ûýA@ A@H‰…qâÄð°Ð<}Õ­a(6ÉúpnAyKä%f ÿÝ·%%[R¦¶¶vÛþxCÉŒ¼’½!©¥åÕMîMÉÖG%„‘ïááñÅ_<ôÐCªÌìÙ³Ÿ}öÙ 6œ:U½`Ó±ÙÁ6;¢8[àÊ--ÑaÞè?*6Ã>hæ†àõ»O´DΟ–Ù´iÓÀ»téò§%¥€ m!%mó¹ü‰Vz½¾OŸ>êm>8&Çfg”G`²wpÊ‘¨¬¾Ý~ž›TWWGŸ}öÙ²eËTÕüªÔÁžàÔ¦z„ÄäŽÌ˜°â`^áŸó’ø´ÂÏ~õj­&TVÕ<:xÓŸJ;‘±; Y£9ÀkhÂÈ‘#gΜ©.y§P²ÿ/žëv8‘‘y²EÎýÖU¡s}¼“}BÒlwGM_ø§Jþiªª*ÊtìØñOKJA@Ú&BJÚæsù­Š‹‹!%8(·Á3zÓÞXã ‹+w õ L!“IôçuÚ„wc[Ï€”Þµ)(®˜lãÿ·ÛÒrKêNÕõŸî…%ãÒ—4>ñõïûzŽu-*­äØ~OÌ?û¬ý¿×­G/=È©gPò€_<ûü¸k•ûñç¿ÙŽ„ÌâÒª»>¶SU:tùòåêØ0£ï=š:qÅ!•ùÊ8]¦žƒ§¾ÞÒé5ëÇ¿Ü|äx&§1)O Ý|å›Ö7¾·†ÓÄŒÂÁs½9Øâ·Ü%ëEDBîå¯YßÐÛæíïw*Qó6½üuë;>\oõèÜZ:wo‡^+øÌ~§¿Î nïö•“!'4.wêÚ€¢’ MÉg^óöªžã\´Ûçù\ñƪëÞ]£Ë,âO¡ £FZ°`±Ì)küSs´†¨ôÉ ¯ëßµ±zqIx|§é'K{ÿ¸«Ã++º~µ99«h²í‘ö±½æm›ÍûÎxFo~ç—Vh,–ã%Ûî|kÕ¥=—Ûì8®.Xè÷WVük€ý–}qœ~1{ïuïhuEesš_úÁTêzâËÍ¡qZí¤N:5+§‚€ ˜ BJÌåI¡§"%IIIäžÐå¯Þiï³qo Œ}"'¬Ý"}j±A'²çm á௮ܜRZQ}ß'öûŽ¥ñÏvgù·õ]‘ÇÕÓ 2жû%ÌÛxÔ¸2g¿ø•îÇ„¥?=|kf^)—m UvwǪð!Cš“Ÿ£©#û©oLtOÉ:=—'¤þêœ]XkáX•·ü`na9!,!ÏÚýxa±Æ ))S?l/Ó3n•ùþOMY·ë¸ínÍERT\±`ó1ÌE†[ %OÛb8ÔåÍqÔZgõÂ"cɇgî I=}WU•1)™?¾Qẉև R*O“O=Τz¯åï ×Hwÿ3}îho\—:Æ€œß<_å¼<Æ¥ººv³Oìï[à%sô²˜jT›?Ðêâ);û5 *RòG¨J¾ ´}„”´ýgt I —cÒòí¼¢í<£öÆ~ýÛ>rV¹GúÓ&Ëð„<¬&ÜÑ= ƒøï%8Hpò‰#äó˹{9ÅæñÊxWöÀl"9€µü¸ÆÿWûà¦ìÞ”r(2óG›#UzŒræøª·­ 9@JÒ^üvûÜG'¬<ä´/®¶¶®¸¬r®ãÑ)¶#í»ì`euÍL»À°øÓ!±i9%½Æ»-ÝžyR#@¤ã‰y“VÂÞ3üw¿%Û#<“± ¨KoLÔtÞáŸøêx·ù›"pÊÚD ZAJž:ƒ”œD™òÊêáéãVüy} *ŒóËfçqÈœº?È9HÉ$ëC±¤dñ¶°ÿþæ;mmÀüÍÇ^øf÷Æ¥̲þ~ÕaïàÔšúˆÚÛ><‹ûævÆ¥ôÔ*­®u=˜HTÐÂ-aÿ`WVQ]ZQE£ÈÙàCk÷ˆ¯çûN[Hæsõu3‹@¢U‡=ST]$!%ƨʱ ˜BJÌëy5h«H‰Š)IÎÒ§åhΕîè¯ùSVºD0ïr°Þ3ú絚ûæúÞšsä¸îä _5²Õ/ÞÑ;¦ª¦öƒ)»8Õ—V=ó_Í¢`çyR¢ÃŒaŒØÊªêÅ[öù%ìK³ô€ª¢¦¶vÊš€-¾ñ_/Øg¨÷¬¤ÛÌWó÷éK+1-ÔÔ;Z~\s„PÓòªêÀY3íƒõeUÓl¢tZÄ(A©Ô’žWòñ /$ö@þÇÓ½p9è+Øu$iÉvf!öÑÁ9ؾ?޹™Y9)K¿!ß ¤§ËÐÓ¤üYÁùz-´…Öa«2OCÃ#@#%ª:Ò¹I 惥äçõÐ;t+*©ÜêÛQ[V^‘W:}]Á4H»é=[ƒ>†ƒÙŽ!ð?uŠÂ¡ñ¹ûC3pKåiº½1ÑM_¢µÖ9Õ¶Õ/aáÖP0 êÚæ×XWEuV~é » €Fû’æhKŽ ˜ BJÌåI¡'‘˜~øaAA¹‘‰y+\#°äˆ`»+j¹K™ûަal Üd̲ƒsêÝ1 rä/³é¨Å·Øq8i»_¸TêêðI¡ q3ÌÙD]ð m´Ù‰ªwöÓÌ?ÑÉ'—9‡ã½Z³ó¸£wlv~™A+œ HLkÝî(b\¨è×5;£Ù装z@ìÖyD/u7švíÚ)!£G^²d‰A A½D¥«rGfÚ슲÷ŠAÚ,ÍMv4.—ælðŠ^å Á"g…K¦Ø3í"ä[»iO yR;ý“ñÑnôŒv;”øâ·ÛÊ+ª ¤…Úï‰^½ãxDâÉ£±9kvEAeöÄB‘€l…K¸=u¹G¦6S!%†‡%‚€ `v)1»G¦)Œ¥„ïT§M›ªÙ bÓ `?Ö{4|\Š/À/,i;· ,£þ#Â;´˪T s?³;(Çâ4× fvšž[¢<Q"p‹oœÛa¯æùÅÆ1Gc³?úÙCaWTTäííÍ7´Æ_ß8;;''é Kª›7 ÅÙä‹]AHžA)pŽíû8ÆmÁ\ËÁ%ºŒ"<>oÜ«•w=”˜ž«Ù„RrŠ÷'p©×8µè‚ìð×qW“'ŠemAB\z¡ŠQݾ?ïîCa‚p|ã+ªOED„/^¼ØØ}Ó«W/ÿÊỂ”|ƒ£‡Û‰Ggè‚u<é$šcp?‘ kL6r**ÝìGILG*'1³PUAÁ#àRÀàÞ 8‘Å)ÔS•?‘œ¯êâ©qzèÐ![[ÛK/½´ r*‚€¹ ¤Ä\žÔzòyÓ¤„%Ë.DêF-ÙÏ»»ªƒ££ãäÉ“YaLåüðÃ‡ÆÆžñ½I+ê¹; éÛÅ~|™‚­(V‰ ˜>}:+¯¨S___š³sçN)iõ[Kàž={f̘±bÅŠÖ(rA@8Ï)9Ï€·Zuð’ÒÒRµ4ÅùOñßËP5æs+/?m¢@+l9¦[3Ö”Ðøì7­Þv¥<.J²j]EEëWÔêšC›XTW-#IsD@H‰9>5ÑYA@°@„”XàC•& ‚€ 戀s|j¢³ ‚€ `)±À‡*MA@Ì!%æøÔDgA@AÀRbUš$‚€ ˜#BJÌñ©‰Î‚€ ‚€" ¤Äª4IA@0G„”˜ãSA@ D@H‰>Ti’ ‚€ `Ž)1ǧ&: ‚€ ˆ€ |¨Ò$A@AÀRbŽOMtA@,!%øP¥I‚€ ‚€9" ¤ÄœžZEEE©$A@AÀ (++«©©9÷¤+¤ÄlH‰^¯?räHPPPHHH°$A@AÀ|8vìØ¾}û222„”˜ í8·¢999¾¾¾ÉÉÉ)’A@óA€™+++ R/¤ÄrHI@@@aaaQQ% ‚€ æ‚á˜ut:Ë!%¸oNž<™ŸŸÏ_I‚€ ‚€¹ @ L``  a$4÷ ¤Fbœšüa+M ´ú©ª±¡¢sö†VmqšvîÞÛRô¥´°RL‹FMH 1‘BJ,š”@ ò þq\oD1ݯ_®j4Ôd¨½ÉAAAK4i(S/ðtyÅ{H†Ö©«¯i§ë:«ÎõèýyJ$´¬¦{"YsA@H‰åpCKšZJgÇBLôúþ•”–•™n²l:©«¹¦^ßô_QQA ¦m%°@±'hlWQii!-¢]ÅÅ´‹‹—ÔWF](vV…5ÜÐáܼǘ*QXx‰¹Œˆ¢§ \P„”X:)QÓ¹^ÜÍÍsøp¯Q£uŠEp–ßu—ÝSO9ôè±ò†ÔkbÿÜs6?îóÕW•ȯ©ávn,,-U äëõÅÕÕdR‹¾ªª¤®.+.nN‡aŽŽµõªÂ{(¼d‰S×®Ž?¾þé§íŸxÂ¥gOÇ{îá*Ĺ]+YU¥(‚f).F”ªK_YÙ@ËhQU•ªKkBYYzD„SŸ>ëºtqxñÅÕ;ÏiTxõÃûÍœ 8J8å5ÔÈ€KÁ‚n £/*Zleµ»_?ÐÐÀ¡iÏ¯ÔÆGQO¿‰€’‹ƒ”TTì?~㦇†žÌÎ>™•µí駭ᄎÀüZTY™yhúôý&ÄìÚÅle%73óà¤I1îî™ 'OŽptdö¥0“:ówœ——ßĉAK–d%&2µk¦‹ü|aÃ2NœÈŒ÷Ÿ5 F²õÉ'—ZYù}ù¥ß¨Q>ãÇ䤦–”—ï9rõÕW§ÌÉÉÖé4™%%'œ÷²tiNZšæ‚)-E‡Äǽ‡ ˜5 [Ü(pÉ’EíÛ»½ýöÑ£÷Ž•š¸áî»|ÿ}FTTnzz_¸‡„Ì›gÊŒ‹ _¿ÞwäHl ~~PÍSV–—›åêªÕµdI*hœ<É¥¢ª*]@€÷!GfÌH‹ˆP$iüƒI]ºtþ%—¤‡…Á•°Ö f›h77ï#‚æÍËJJ*†š””@Úâ÷îõûî»CS§&<ˆaÖÖ °ñÞ{ý'Nô:4ùèQZúçÁ(³OËí‚€ ˜-BJ.Râ5v¬ãóÏë «ê[¼ûý÷­o¼¦‚ ß~sø×¿Vvè°ò²ËV]vYЂ¼ÖgÇÇ3¡Úß{¯Ûk¯­¼ôÒU—\rð‡˜­a0ž¬¹æëË.[}ÅŽ÷ÝŽ{£EAÁVV}ûnǴб#·¬´²Zfeeݡà ++ ÔÅ” ò›0aÕUWå$$`WÀ0ƒ£ó†íu×-·²Zõ8ÿç?11X¼>ÿÜîÖ[‘`sùå¶7ݲzõ®>úíÚY_rÉ+«ÈM›ü&MÚöŸÿPÅ´°‚Kê”âȯ¿Útê´ºC$ÛÝy'DIvjªëk¯­½ñFê²½êªÕ×^›pàtgÏàÁën¾YÓö²Ë6>üð „h‘7%%@¶nÝÜöísRR è µÚÑ»÷ºoŸÕ—_¾¥kW˜ øM›¶®sç•ÿïÿ­êÐCÔÁŸ~ò0á7+«íÚ‘3…·lÁ #¤ÄlGKQ\LŽ€’‹…”±æöÛC—-;±u+– fßH;;| Ñ;v¸öìãêZZPPŠ+'/‰?'==?52áþî»éÑÑ9:&ø f ¬!ظ‘L|»?üpk·nX)°7L³²òþì3ÝÁƒY11…™™¾_MÉ̃±.¤GFª@æø}ãÇ[_ye&eÊÊp‚x ä1`@Anny>ÞýŽ·Þ‚@d&&ââ!@çPv\Ó9F‘Ôàà%W^¸xqžN‡+''&αwÐ ¼?g„¤à£)*Ò¬ññé11‰~~n¯¼+RE¥ø]»Jrs3££­Y““™´p¡S·nyYY(PRT8gŽëë¯g%'kޤ¼<ìF¡«WÏm×Ó LEs„}òɾQ£Ð¡¼ 9óç;÷èÑeÝ-·øOŸ^RX˜—”³cÇq'§‚¤¤•—\âñöÛúœ°ÊËÎÖ¢tŃcòaM*sE@HÉÅBJü&O&Âc†•ÕÏ$:t8áêÊK?–ß1cVuêäѯߞO?õìßÿ˜1s­¬Mž\œ—‡9aÿ¨QØ6´‰òòùVV'ÜÜ\_}³ f(6Q¥Ë:vŒÙ¹cÉT+«(''hb¹ëÐ÷ß/²²*ÊË+ÆŒQNA2&%š…£¼ò±íÉ'qxõëç3l˜ã]waÁI„…[KØêÕðï’µèškBׯ§^”ÏMN^heµoÈl?Mâd©.ÞÇƪK/…c¡9­æ®ô'0‡ØÝ~;¤êdn.7"vím·ÙÝr U£€÷ A.Ý»ÓðhggªhBJ¼þyÆûóϽú÷÷8Ð¥W¯Õ7Ý„ãfÛ»ï®èÔ gSjD͇oñ±F¯O>!•T\‹¹¢· ¦G@HÉÅBJ¼Æ·ïÒ…0ŽÔ£Gñ)˜Ç ADq’Ã_õxØÝ}û–07û €"0yÃiB׬Yså•›~Ô˜°™¶±7ÌïØ1ÌÁ¡¤¶V#%72s·Á]&L€”äähŸù4~³s)éõ?Õ;w`BÔKí¸98.ÌÊbRtrÚÙ¯¶õ÷ߟŸ»ðª«Ž­]K¸hå1p Û»ïjѦz½ÖY°C¡q!¸~0ièüý9 _·n:ô¨¢Bãùù¡¶¶®½zÑd—wÞ)*.^vóÍê5(€a«VáîiBJ¨(ÎÃÃææ›a9¸ÐvyÇŽä~Ÿ=C†À{(P\WÇš*+Ûµóüøc65~æcúN-5‚€ `®)¹hHɸqö]»æ¦¦2AFlÜÈÄçí­LØÚº¿ñ¬Á‚'r“’pßøNy&cL ÖVVy99D¤6ÒÀ¿#sælºÿ~‚a±yH F$ï;–‰7Å4;AýZR’Ëw:\r~î¹À¹sk§ ý Ï õ’ôÙÙDÍš›’²ðŠ+,€NÃA< Ê¿É@„ƒL81¾¾óÛ·O>p‹\!dáBH T&'#» òI©‡ïë»ôhœPÆ `ç($ø…•ûÆÆ÷ #}m-ѲD±„mØ`\^™j2u:®«¿ÅÁìTY] †0<ÍÚD8°bNb,1×ÑRô“# ¤äâ %åå»GŽ´ý÷¿™YqÄ0O™=CHrhhnF†ç§ŸÚßsÛ[o¹¾÷á›yÄoüøâÜÜ•íÛÛuîìññÇnï¼C*Ñ ð€¼¼<ûÎíï¸Ãýý÷]ßxƒˆW¾ÙA&³õ÷DÔûV4#Jm-¤ÇæÖ[7ñ™î¸õêE¥*¦Ä{ôèe—\’yâ„”ZYµ};V­Ï<ƒ@—7ßt~é¥>ˆóÅþ®»JuûàƒíÝ»”¶f µà[Y{õÕî|àü꫺˜é½¿þš«×>}h‚ûk¯á÷A,‘.vwÝåÞ§­ã; ‚pQ€ØØõ7Ýäúæ›î}ûâܱ½öÚ”ŒØXjÜü裚ï¾KÔ­Ã}÷Eᾩ®V¤$dùrÜ^ZLe%ì'zçN‡{ïÝöì³n½{»¼ÿ>½¸´ˆvyùeçîÝ]z÷öèßÛßìP£ÇçŸ[_}µë[omyá…D__œ )1ù°&‚€¹" ¤ä¢ %8P.]êþÅÚ'¸¼¯2×ú ¾³OŽY† ¿ 3úš®]·¿ôRÀܹLÀy©©„t8¿øâžáÃyÄæLJ¬Š„ï~ùÔvýcm{ï=<#ØE˜ªù»ü±ÇbÜÜ´•NêVhH†u—.|°ƒA›ãëêV¬ØÒ³'_+·Ñ£¦ì7Îá™g6tëFTÇñ-[p[¹rç{ïÙtéSa¶“lz\] ð5ʦk×MÏ?Ÿ†ñƒz©Åý£Ötëæðøã„©Æzxà:ÑíßïÚ·ï¦=Ž._~lÉ’UݺaGáæ#¿üâüæ›¶O<±{À> „dét4pËsÏÙvíJ¥TœÌ%ZAsÐǶgOÂfµÈ˜‚L2)ÁÁXn6=óÌê'Ÿäëâã[·b+ ß°¯ra ]¹R[s¥¬Œ@ZŸ#X”…ÖÑÌ!%æ:TŠÞ‚€ p>Rb餤Ñ_@ð©fÏh\âL ËÐT/)áXsÇÔÔH“Bûð51×ÃÁñãñGhž‘š «õÇø…YŸÂZ>Bê'oWT¨KÔš¯Úšl••¤$2ò¹½´”|µ›f6¨_º¹Ÿ¦ðWÉÔÔ¨«Ó2Q‰òD‰²Z=ª’IÕuuZ]Ô«×CVÔ ·×;qh¬jˆX\/&h2ëÅòWû@·Þ©¤µˆ4¶¾Qj—*-./?½vœA¸B9õ‘¼j…7Mæi¥056*¦­e"f’ó1¬I‚€ `®)¹H‰!ŽÁè{Ô†Ï@Ô:§êDíiW?I3}fÇÆ²çË/UZi˜ ‚€ `^)1¯ç%Ú ‚€ ‹€³y´µµµåm •••¡IQ¦ à!*‚€ pv-«ªª˜c ÊÊÊεBJZÔ…/V]]ŸŸ²Y*(((*(8Ë…æE[#'77—nVSSÃAkÈ‚€ X& ’%%%L–Ù¼·*//O¯×·pRÒB .|1HÉYI~AvöÉ”´œ¢¢ÂóCLrrrЄÄA‹“RP‹HIqq1“ÇEþ Gó…”\xÑê`œP}{‰f2ÉÏ/,(HNÍv>²Á.û#á‰ú‚¢“Z¶i?/EJ8P–C}êØxàiPµ1K]Å´c(CNac2´Îøêéö6¶Ûëm2Î5Wà ÐŒ41-L"].z°(RÂa04 zg?ß ƒ¤*Ü|Ð3–ÖöaKI«ó6!И”¨©Z_Xt$êøöè­>E~Ùj[”¯Ç^bÌLñcmBJ45ôz<¦ü5pºq/R§ª›ÑÁ***Tᢢ¢ÒÒR:-‰òg0.O1ìŸÈWÔE¹fÕíê^UQó~kPÀp`Lac¦b ”D¦ ƤD9†AŒLE†‘“†;ÈÊUB18%“K(!¨ü&´¦Í.¤¤MpˆVWÂ@JÔO¸¸°(6!cáž™NÛWÚ½ÄÑ»¼¤T…—˜î×iLJ¨Š0dȸ¸8úýª¡ÇZ¼KQŠ4€—!1bD»ví:vìHfPPÑ*†ÂJ%7lØ0`ÀuËÀï¾ûîÌÌLNÇŽ»xñb¨Œ’¬jä.XUzŠýpU]â@“¢d:üE² ˜ MH ããƒ#ÞÂ… Õk•‹”ììì:uêÔ¾}û¾}û&''3ÊM›6’—_~ùàÁƒ)ÌðAá;ƒGyÄßߟñÍ,Æ1!%­ÎÚ„@cR¼š—Sä¼9n­Kòš9¾ß”×轂}vúW–—i\Úd½¶‰¥„²nݺ‡~xÊ”)111¸ugÍš5{öìÇÃÒÒÒèi3fÌøõ×_)O[³fMxxøÌ™3Çg·K—.'%%ÑW¹dcc£ÓéÈ¡7Ò­­­ëêê(ÿè£zyy‘Ï1¤„ØÌ?þ8gÎwwwNÝÜÜöïß?wîÜ]»v¥¤¤LŸ>ÝÃÃCõ^{{{Ôøé§Ÿ,¼Äd¿,MH /Kxâ‰'Ô ÷ÔSOy{{+ 1c#Cb=Ô¥áǯ_¿ž‘íP9‹-š4i‰‰‰ nŒ¢ÇŽRÒ&ææ‹V‰Ó¤„_°¾(82i…ßÚ­I‹çüÆÎ°Lß2ôëù?U—ÕªW ƤޝHÉc=-ÈÈÈ€‘@íW­ZµtéÒ¡C‡Â à_|ñ ÒÓ§ãÑ(¼cÇŽÿþ÷¿NNNÜ¥èöû￟7ož­­-ïZœÇœ>‰Åò÷ßǸ2räHØÏäÉ“—-[Æ]‘‘‘ÜB£ƒ~ùå—¯¾úê‚ >ýôÓÏ?ÿœz)#ùæ›oÐgíÚµÏ<ó 7½&ÂJÄ ‚ÀÅŒ@sR‚]ù…^P³XÏž=á(ŠX0òR×»woFQ.1dmݺ5,,Œ¡Of0üí·ßrçϟψ÷þûïÃNÌeK‰eò)á;›ìL½µÇv»°ß‹"œ—D¥ååç|aýà;³žÜs@W[©QoMÜ7Ð|z‚|p‡Ë÷éÓgâĉtª{ï½7""bûöíýúõƒ|@8(Lå¾ÁSƒ­FQÀæ1fÌ äó®‰pÐuy] Õ<¾úê+Õý(ƒ7‹ÖØ •|Ì”¤Ò7Þx†„@ ù~ø!˜ƒ©S§nÚ´‰{»uëöÃ?üüóÏJ!%&ú‘ˆXA@8«¥ä¬¤DÅÕEGGCJ”ošñ“W5$¼÷Þ{ žÃ† cpcèûå—_°Œ?þæ›of\ÅdBaÓö­õ…”X8))/.õò?6iÇ׋ ÓeDŸªÕÚûÛÆúÎÿ÷ »ßùæ NÕ.­õ“2–Óœ”àÚÄ8ÁÂÔ ;5jÛ£ƒƒ…1oàLÁƒEÀ•c %ägee©¨•QàíÛ÷bùðóó#žñÉ'Ÿp€4È }•ãÑ£G÷êÕ ã&ÌpnšƒeeÞzë-^Dð¿BGœ¹—¾yófÔÃdÙOPd ‚ÀùA ¹¥„ѯñxïÚ·oï]ø¬yI;~ü8ÌC-2Æ(ºzõjÖÄêaÜ]±b/{Œ¢QQQ¼‰1ÊÝÿýؤÖÔRç§9¹!%–LJˆ=™S:Î~ÊŒ£/w}þëE¯îÞ¿-¿ pÀÔÿôžþÀ'‹{iÄ Wyœ:U—gš_jR¢¬Žt!¦ùììl €>£ÒÓÓy3À•ƒ)òÅ_äTuEúQú'æ•õ ¢ðàƒ*ZƒcãÆ@50®@,>øàÊpÌ ý“b>>>W_}5î8Ç}÷ÝGç¤Ò>úˆb°z/ež}öYØ }ž» I¨„žÈ$áÙKÉ_bäFA@h MH £%ÆãîÝ»3Á9Ö " D—]v¡&¼P1úá_fsuueì¢ÀòåËèxU£F( ™&Œµ¹ bBJ,™”ðõHfVÁG6¯/HxòG¿gZß×oæ£ßÌ«ïO|üË}ý§=ðú¨»¿ý¦é~¬Í? Æ/Ãøî»ïŽ=J½„ƒàŽ!A&`ñŽàOÁI¢ON×âÔÓÓ“ÂÛ¶mÃæA ¶õÕ Ì†ÐT2 IHHÀªI'DøPžUXbñ¼bù  2‰#Á•¿QÁ¶tf¥ D„.“ˆ»¹ ë ¤gPjj*’ÛþFK>)#m&¤%ùB4¯Iß~ûí‘#GÔz¯˜xùË1†R®òŠÅèÁZ SáÓŽÕ…LÞÄËã£õ‘pÛl»±VBJ,™”𬭪ºèw«k.owWg«›o´ú¿Ví­¬Ú·ÓþÖ'í÷­/1Ñõ¬‹§Ñ[0?ªÞ°g@#`°~—ô4NIpjøÈžS ÃBÔU’ê`üUËØ«ñU+(†@W«z&~ƒL*R(ÃU £ eÔá.ƒn†ºÚ~g AÀ|h²xša43!ÉdÄS—¾ĸÊ(ª–0Qoe †Æ+š¨µÔêf‘„”X&)1,3Ï>w ‹ ‹òNâ½1I’eæM«‹C@–™WT–™·LR_VËì( ù’I»6¤^¯–™7iE"\³FÀ°!#¶Y7äo*o g-™›eC¾– ÔVÊÀKð&^؄Ą“Ú‚2 ©]s  IæA‰)£…ó¨’uá‹ñûV‹µv°S†bšä›èʬ¼žø2MT…ˆAÀ`$âÉð†4ê/4A¶pRÒB .|1bbccO4Kq11 ñ±,¼Óü’)røˆ†nFß¶™B¾ÈAÀ2`T+´òYe´è¯µ‚%hùà±…“¨’uá‹ÉÁºÂ|Ƈ²Æ)$ìÄÞCበ‰ügúÄ’¯Z`HР¿V[“&pªR ¥Ê·ü–æ’ÿ§[¨˜AÀV(`&Þ'ó/¶ñ9kIRÒ”ÚD™f¤$Ž¿+ì€ÃQ'ÏÇ“uI -ÚÿòØÑ„”лPƒeZ(ò¬ëªøÙ “+‹ªñ—µ ÏÊXEùª³™Ž*¯nQùZ5HÆ•ªÛ ™*A ‚€ ð¿"À››”ÆF-Ÿ‹jüRÒ&8D«+aLJêçáøÄØ„}!Ûc¶zç9LsY“”Ø0õþ¯§åå›e¼a2ƒn¡ÒYsè¡¡¡° °Ìùä“×]w{scÒ ÒQíÛ·ç/”ÚAyV”g{`B,áèÔ©ÓwÜù`¡Cò!1°–K.¹$((£5²»»óÀHØ× +‹ªtË–-˜^ˆA£b»E·hþ¡á‘ö¨8yÓGÃMJÕåëtš)ÅD¿Æ&–lô+¶Rþv¼›9s&æ&röûeWˆ›Ô0Ù³?–ZEP~6ÏcÓ¼9ìÌuà‹ú'<€Ýõ8˜={6è@;.\Èî¾ÜKR–xϼyó 8¼yðs‡ñ`± Ð7¶¹BæâÅ‹Ñ3$$D`Èa{?>fvqq!‘@µ “c´…¯ ¡Ú AïŒx­Á¾Ê>ðšÅZññ»aÁEМÏ}l"ðE¬ ˜ÍI ã$…2 ²‡{”îÙ³‡!ÔtÃuÁJHI›à­®„”$é£O$ÍÙ¶ÆöØÌļ°­Ë£RƒâR¢>^rG¯™:¸ìÏÏÎ&4ÃD?Ç&¤„y ¶ÓcRgñ,ýû÷g#_hïÌâlÿËþRlqÉFzP5åãa.ç˜Ýû0?° 7öLv&§G왇!dàÀ`aËß~ýúqI¹f >’ùóçC2HB 6ß~ûíã?æF4ˆÝÝÝá4pö¸b_bÖ/‚î@J”mƒ¿è-¢ 6çD&ö*¢ §ìÌIð ÔçÍ7ߤ ˜vØë‰'ž ™ì+By˜´F ð1à&zŽ"VLÀ‘µK—’³Î’òõM«“S 4’T]ª£‡ÏOÞC–pä”¶`à©Yvc?œÿïÁþýÆ7SSJ’Lf,in)a^‚3É`ûß¾}û.Z´NÀDŽ!¾·sçN¦s 'œ*RÂ_(ñ­˜+ x©|¨ 7.]º3 <€˜Ž‘É% 7'%Ð n„‹@)ˆ8vP‹§/½ôѬ¼ˆà$‚@Opf,|ÒŒ£:Ũù€ôÀ¢à÷Þ{¯Š–g§bœDÜHŒ7ľ,Y²ã ürC£0½À°¡•¸oL=¸‹|AÀhNJvïÞͧ½çž{ŽS±”4™2…”˜ŠC´º\EJ´—ò˜” NßÏŽè9q× Ã÷Øäi–™ôéôîïÍxàÓ…¿2ªó”¹kõùù&2–4!%Ø ðzàµ!,»‚““Óˆ#~øá&ïiÓ¦Á!4!‚+1"Ìß°ì”!â; lÌM‚ˆíh”„ `êÀèâè蘙™‰gçwÞ£¦ŠAïÉgŸ}'€¯ÖŒ+S¦L¡Æ©S§â²A2|‚œ—_~™ \B@ ½{÷F7v¼9'¼<$ìŠDËzFyÔ¾âŠ+ÐaÒ¤I¸pÐù—_~á:ØØØ d„ hˆ-Ú(sœ0DgAÀÔ4!%Øe h{å•Wîú>ÿüs^ Áõ¦VæÊ÷M«ó6!Ð@JâbRÚô±ã߃Ö=ÖkÊí/~}ç[#º>ÿÅ-=¾ºµûà[º|ØéÓ¡CÊKÊϺìÇßÿ]6_§Z@à'¦‘LjêààÀ1VìP OOO¢L2%¤”îÇüÍ›Ó<¯¸fð°0¯S˜®" µ1´ÉôKï B°µ`¥€^¨/_ ÛP™Óýû÷S·@€‰×°‚]¸EÅkâææFa˜ ¼ çÎËGŧFr¸l3¸‡°pŠ…š…"KÈGZÁí`Ë¡Ö.AËÄwó÷W"A°<š¯SÂpÄÅèÄ`A!´îbpþ )i¢Õ•0¸oÒÓÒW8®uð‡ï3ø½¯>}mÀûÝû¼Þ«ï»¯÷}÷•Þo¼ðZwK1ÙLÙœ”Щ °Å˜Å±aàQý À)I}‘¯‚L9U „’¢®ÂfTP*EÓ¿šïIPªcED ß÷«S%„bœ"™Â†S%“ÐånÐÊpŠ>ê{fU«µLÔ±jjp»*@‹àUêTEÚ #±¼¹DZ$´ Í×)A¬aÐScàÅ0€)iu>Ð&H “¢.!):*!.F“˜Güÿããtü‹‰Ž3©“²ù2ó®Ð’õZðG©ùÕ&9j¤hÒ“Ï]¯±„s×Þý›—i•ÁK„‚€å!pÖ]›Œ!–×êæ-ú+¤¤!´Dþ'‚€ ‚À…Càÿ TѤó¿hIEND®B`‚surefire-2.10/maven-surefire-report-plugin/src/site/resources/images/xref.PNG0000644000175000017500000014547010461030155026113 0ustar tonytony‰PNG  IHDRéî­KygAMA± üaÊïIDATx^ìxTG†S7Úþu¨ÐÒÒZZh‘âVŠ»»»»»»»»kp‡œà‚»ßÿ½™p»]64Ab|óì³½;;w佡óí93g¼¼”D@D@D@D z°”D@D@D@D :‘XÑ¡«ê£ˆ€ˆ€ˆ€XÒ.ú#ˆN¤]¢ÓÓR_E@D@D@¤]ô7 " " "H»D§§¥¾Š€ˆ€ˆ€H»èo@D@D@D :v‰NOK}vÑ߀ˆ€ˆ€ˆ@t" íž–Ó×;wîܾ};Zv]‡#àA»\¾l9c nEääxæÌ™ž={Ž7îá†óï¾ —p¦‹/†óް¿p႟Ÿ_XK«œˆ€ˆ€Ä ´ËæÍV¿~­³®^}ÀnÚ´iùòåwîœÇîÞºu‹o—,YBhÅT2}útzâããÃG*<~ü¸¿¿?×¾¾¾+!¿\¹rsçÎ¥-S€æ,X0yòd§oôdÒ¤IŒˆ±£-‚‚‚ªU«6~üø‰'òÑcµ³gÏ>œ-Zdê\¶lÙÕ«WW®\9vìX*$“o!%:i*a,lݺµS'HW­ZõêÊc¯”)" " Q™€írâ„…ÞxæëÚµì9sü›o¾™&Mš¢E‹¦M›ÖÌî;vìèÕ«W‹-²eËvþüy”ùòåëØ±ã_|Afú×^{™ûÙgŸm×®9—.]0`À˜1c>ÿüóÍ›7ã%©Q£FâĉK—.MN¥J•˜Ý³fÍÚ´iÓ ”-[ã[@#GŽ,Y²dÍš5éOçÎ)@á*UªÔ«W–.]Ú¬Y³)R MêÔ©S°`ÁæÍ›ß;lº©V­Z•/_žoÑ"C† A=ôíÛ·zõê7n$“átíÚµOŸ> jذa¯¿þzÕªUK•*åÈ·šiëçŸ¦Ê §®]»V¨P¡¿ÿþ›Î/^œY… ®]»6]mÒ¤ 9ÔCúœ.]:œ©Féˆðé6ˆ>B]ïòüóÖ•+>êýñÇGÍüm„F—üùó31óF‚ &pá¯>ýôS¬#(r(“;wnc¨@ßT¬X½B~… °ÓpÁìŽâ[ÈÎ;¹@4$Ožü­·ÞÚ°aƒ[1EäÌ™û V¡C‡bb¡@œ8qÈGÖÐ%VÔ©S£ExÇdl?÷¦xñâݸqÃØ60&¡ÉþüóOTQ¬X±°‚ICY²dÉ“'c\¼x19ܲmÛ6É}8ÒÜÖ­[.©R¥¢2Ø«®ÓÇXF.àÃÀ±¾pmú@C¦G6«’’ˆ€ˆ€Äl¡j—W^y¨?õÔSLíØ 00­â‘Á¦‚ÃeÍš54ÉZ ´ËóÏ?o,½{÷æ³_ýú믑õëד“#G&rüGäתU+00‹öíÛc,1S>Z„ ã¦!“)ß­ÓXnþúë/D™þQ0H–O>ùÄ£æ\¹rá÷éß¿?]ŬB¦Ñ.7oÞ¤ZÇáEÎgŸ}fîµgÏLJ8ƒpñàî1ö_ѓƣ®ÈA$áñ1·˜{ÑdÆEåôówÞá,I’$áûabÒîÝ»1̘k´М¯0Ìà<2é-:k–ó­.D@D@D ¦ð ]–/·*W¶×»¤Nm­]û€úé§ß}÷ÝŒ3b–`vG7 R¦LY¤HšDO0ý“?~üÌ™3—)S†¦+øŒ²gÏnL2uëÖ}õÕW1Eðñ…^Ø»w/Šá7Þ Zcw¡s\dÊ” ‰S¹re#\n&\-É’%Ã(’4iRÜO|›>}zj@µðŽG©D‰}ôË„ñs±âÄhT ÅŠsjË! 1\Nt-…•…ä³<ÅôW#úÏ’rpKQžV°è˜zÐIÃÅãTËGD r ßJ+A‚ßÿ=u⥢̉'¾úê+4Ĩ;“s#&ä1ÃäÍ›÷÷ßÍ3õ€P·‰€ˆ€ˆ@”$àA»`¤`.Æý‚± (è{M½ÌÙÜl–h0N`“À[Äò³Höèѣ̾Ló8;p‘`E0+6˜ƒ‘;|˵±©e±+Põ›™c …±Ü+\L»ÔL£˜%°go =á#ÍQ¢ŠU#4AhQ‚Ûˆ2ׯ_§iWC²†»h Ë [Hndq ƒ–î®X±‚j1–8Ô¨“åÆÎB†@Ž)o’‘JkƒE"]ÅDµØij¦ãZ¸p!M NB±Ü˜è!–ò˜n+‰€ˆ€ˆ@Œ'ªÏèaFŽ)ÅÔûÁ°àãaªr»—Ý7¦æ#F<Âj#«*3ü†½ 0w5lØ0ìw©¤ˆ€ˆ€ÄîÚeÒ$«jU‹i±AûU¥ ˆ3X DD@D@D Úp×.lÄaǪ́QÖÈ‘ö‹E7oFûAj" " " 1†ÀcñÅ:ˆˆ€ˆ€ˆ@T#àA»Èž…º¡˜jýWD@D@D@ž,îÚ…ED’«^Ý"~ì´iO VD@D@D êð ].´öì±ØrûÑGQ¿ÿꡈ€ˆ€ˆÀ“EÀ]»Ç.±ÓW_qHá“ÅB£ˆú<¬w9rÄ" ýªUQ¿óꡈ€ˆ€ˆÀGÀ]»@õ_D@D@D FÐz—õ85ˆñºá?+yøÆ +[¶ì7B« ±’9sæÍ›7ó°<È{X]·nÝŠ+ÂRReD@D@D " xöñ~Ê+eÊ7vìØ{öì)Z´hH3wÿÃTj.“$IÂûÊ•+MK&u2{öl>þöÛo|ìܹ3ï\Ÿ¦I“ÆØ]FŒátxÈ!÷¶²ÿþï¾ûÎ)c„S§Nm2HN¼xñÌÇÆŸ8q‚‹Ÿ~ú)Ož<ˆžøñã3oooSà•W^A[lÚ´éã?æãÖ­[!`×1×Å‹§Î%Jpm˜|øá‡ä,Z´hÒ¤Iýõ—)6}úôЛaBâ¡|óÍ7¦<¦#rvíÚå kJ(Q¢D&'V¬Xæ®Ë—/çË—/A‚rü/CwŠ€ˆ€ˆÀÙ°Ü*騑y×êÜù¡êf2~çwðòPK²dɦM›–1cF¦[~úþùçóæÍ£í>}úT«VÍÌ©H‡—_~™ tIòäÉ™>Q}ô•Ù½{wÞ±»¼ôÒK7nüÏž½ÿþû¦ :¥ÂÅÌ™3{ö쉚9~ü¸iqÇŽ)R¤0ÅN:…cåôéÓæ#×÷±d˜2(TŽÓ /¾ø¢óqÖ¬Y-[¶œ:u*ù¦9<;Ù²e«Q£FÚ´i+T¨€Uƒ|äËüùókÖ¬‰î¡Lýúõýüü¶oßÞ®];]E$™:‘€cƌႻ¨Ùiå—#G 5kÖìþXíB·üñG:0~üx2/\¸PµjÕzõêáüjݺu›6m¨ù8qâD· q«¡u®^½zÿ†ô­ˆ€ˆ€<>îڻñc!ͽûîCµ‹V@©˜µ)¿üò º!qâÄÿûßÿ.\øý÷ß/]º¥²víZG»,Xðù矧p™2e˜Ý¹8tè†Þ~Œ7Ž/_¾<00ð»¡BOX2Ì—6lÀtÁêÇ ¹sçši;«@L±-[¶ *̬|ýúõ¬Y³îÞ½›ëcÇŽ™†Èôññq4ô¼wïÞNFÝ­[7ç#ßbÁ #0á TXt‚tÀÏ}Ü*ræÌ‰‚~÷S¦E‹fÎ&1Ñ~ûí·Øð:¡<îÓ?Ì3æ[ì.,PeQÎ#.˜}iú÷ßç+jF%`‰ašÇ’ñ÷ßqÃÜŒ ËY4h€ýƒLãÇ1‚†JP )S¦Do±.K™h‹ìÙ³Óg;vìHýX/ C:`YÁè‚,À׃˜›3gí‚0â.l3£3è-ˆ¤@»}ƒšÁàtôèQº1eÊÂ^Â-ýúõCŠá“ „QW™mÛ¶……D>nÄC–ž¼yó¢á MÈÁ½E&½¥éºuë’ƒ ¦R¥JZ `–÷ÒD–,Y .|îܹÿËÐ" " "ðp<øŒ˜yYYQ°àCU\¬X1&9fAÞYáQ²dI옼>ÌôüÃ? TP!LäÎîæ{fGæu¶Ï˜ [H¡àäôC¾'&o×¥µÎ·,Å@`ìq´ _á·b™ IÄWXDp²°Æ–5"( ì:èS¹rå2dÈ`ªºrå ºÊÈ“ÃÌRÁÂ5«d ¥J•b tfÙ²edfÊ”‰õ4 –³˜[¢ PÈnÇNÃGÔ¢e¸E…™dî"Ÿ®ÁDš1cý$™V0‡À„ÞâB‚ð¢9_Á-]ºt¸F©ÐC#nLBˆðA\cC⺠†@=ä#ä‰`Ó2·€%W®\4g>"¿ð¾…w+–Ó]ˆ€ˆ€ˆÀ#!ày½Ë#©úþ•têÔ ÇPÅŠÑâQ%̵h”&Mš<ª:U!€bsœGb"" " ‘Eà_Ú…e ,ØH”ÈJžÜ~%Mj¿ßwUÉv³ ®Ì8kÌNŸG•°Ž`·ÀТõ¤ ©ê(EÀÝîÂrŽùóCb\¸Ð⥳£ÔSgD@D@Dà 'i>£'œ»†/" " "ð`¤]Œ›îˆ¡j"­V&±ÉTÅï°T¢2" " "ðÈ xÐ.Ä!¨.ûdþùÁ›c¿ÑçÌ:\¶³¥™6Ù’¸ t,[…‘ „0a×®³)—Y–ÍÃì6!±+˜hi„$!–š ¡F´zܨQ#ÖùzÜ#MÚ]µj­˜ÞˆÅœ•ÈÙfÿ0u²˜—½ôÁDocy/=t¢¡°š84ìÐ&kˆñ]€I0B‡sˆ‡K瑹‹Ê&| R²-1çëëKÓŒˆÞä 8h—[è!ë—"hbÝ"iè©QE‡Ù®Lå|䯨wÜHádOÌ0ÙM¶3ñ]\ý9O?ý4ïУiª%¾ Ãøg75×0á¯Èa'9ÑiË(EžÛÝ9‹€ëæÍ››­ãDæ%$ w™ýGT|ze Cg @Cÿu6lÓU‚â¸uRE@D@D ŒøàÌt—©—‚Â}òÉ'&6ÑíÈ!l?°.C\r Ç„švAßÖ‰!KÔNâ^ŽéaK6Ä\áÈ$® p†cö#w(G"qÎDÏó˜&ȸ/¾ø‚G@ë„ì#‘é?f•/¿ü’Ø<ÜN…„ $† öøˆB"~kµ@ 8/££ÏDå!`ñ{3ÈÖwê4mV‡±›'Nds;­¸žÆ¿TCÀ]»0w׫gGÔe–gö ŽÂú€‰åL‡ì‚æ~æcLÌjÌß?˜™>Ÿzê)”!ÔÌ6Çë˜_öX87Àh…û'd„)€MÅ„%†0nÌÓDÈEýƒ ÃH"êM&b,ŠÀtŽÿ(´†ãæê-BN!†œÂ¨"bØpJv3ÀáÇ# ™¯P䓉1ƒ¦MìZD jÍDT_ @aê$ˆ.¸Ë„Ç5 G$"øÌ–÷IŽvÁìÁ1Iˆ Ø‚» ¥Ho‘t8N7Gmð‘ÎÑØµr,+(T†ÉÑKÄă3ψ{†T…¿ú꫆ ‘°xލ€æ”+%xîÚ…/ׯ3y[~~ÖG=@…!·à•àW8ÊÃ8 ˜ö˜±g12“Ñ6S63§b±0{5çáa!„sd4“.9F…Ü?NNÓŒ(('|L*ÌI=¨(Œ%\P–S ÷QtûFÔö ˜LòbŠ ‡ks ÆÆÃµYb$Ää哉•‹Ï”ƒåü \6Ä´ÅËc‚ô“H†1®ÑCñˆwƒ b§¦òñRas2Ž0s&"cyÂh„ÐA1`žÁ/c2é<™nþ#G»à½2¡ŠñŽ™Þê—ˆUè C ë^-ÈpÍâ‰o©ŸxÁ€bì•+W¦$Þ+L/HR,@˜… ÍÉ´…aMrWêÕ«—1€)‰€ˆ€ˆÀðà32µTªdqóÝÀôá®™Õø$HÀ4ÌD…vaó%“gâG ŸãqvàXáà§?ß"ÐøÈaÇ/ÃÙËÔfz@è9v|Fg„–žyæós3õc™@L`nAˆ b°0cÝÁtÀœƒ#ƒo͉Ó$Åpq¯q$a¤–ñÈp ùœ…„Ñ‚ˆþf5 "ƒ ™à9;‰¸„0 1LœAx…#eD™dd Ú&˜jàƒlBêq‚Œ8¤ ƒALp#J‹Î°þ†± ä>ûì3€p 4¸CŽq±!ír¶C)º.ÖÁ‚”4ˆÕÂdô†žç3 \Xrdƈ̢iœ\æ. âN¢Ã< ?¬S$î/&%ĆQctAîp ¤ç0Ç'‘ƒ¨£ùVID@D@€@¨Ú…U­ì:sæê´oÁÚk†™˜•8†˜øùáΙ̸føýÍdovèàÁá´Á·L“Ì‘&‡Û™eùAïºè„zð_„—Ú˜G™×?r±a´ \ؘþé ì%œ|ıAä`•!‡å·ø¹œÎÐFáœV퇱ã¦$uRc1Þ%zEý(3çàkŽ;À½… “mQåDaîEv˜š¹¦¹Ë¸M¢?X)Œ†ÄH©™ÆŸE 0ÁšE2§>ÑŠ±Qƒ³$½=ןqÓÐ=ÇÙ„òµé÷ÒCšà#e+¤ŒC&q;M`%2)}ã±Òa®ÉçIÑ1W§£#Ç–icÒСC u!" " á%ªv oEá*ÏÜJÀÅ€ÁÝ®{ï_˜©—õ%,ÅpÎ2|„•«ª‡'àx޾*Õ " "ðdø—vÁ¦P €½D×õõÀ¦—'¨F-" " "ðX DŽÝå±I•‹€ˆ€ˆ€Ä`Ò.1øájh" " " xÐ.lß™3Çb¯ÉøñÖìEaý& 3ï«þpR'[¬ÿ3ò «}õ¤al…²,Ju‹‚ÿ{YÓÊT6{{Œ½Æv²ËGXPÌzØÐ"õQ?kiÙãà бˆhÅÖ(‹Ù7Ä’^¢ß/KŽÂ ÿÁú£»D@D@žL´KóæVªTV¾|û…]¶Ý„:€X DIa? ›i÷'¶¢°#†U´Hä…ÙkC¾S5³,3±³ù™4f“ {dLDyv&Ócv #‰B›­QlEv¢Î»nÃAúP ˆx§3Ά&vÙ0µwÄìý¡-⯰ņmÛfw[¢ÿt•òìC~ï½÷XqL# ØìCýf[5eØÅÃæ†±°ã‰ÄWÌî¦ÿH¶/™X5è'zÅ`¹€’é'U±y‡2FÇãF*¤Ù±™†`ËŽgc”Óç‘#G-†½Ü cSwâĉùЇB‡Í~+S’vi…w³‡ ‚,£Z³-œvÙ€M%DÏ#ä ˆ]NN)COHÀçX(ä‹S'»Á XÌö%†Ï#v}Êdr×êÑðýý©´ˆ€ˆ@Ì%àA»4kFd[‹³t|||ÜF#l Ï È‡J„É'„P#¦ïÄ!–+_q-1½^…˜³DUÁ<@J%I’$D¾gÛ3åÉἃ‡ë`׎… vb2 }K .ðJ .OB,âÔÎ̲&0ßšÉ̵Äü%´ cÍôì–ÐX èB¼8TŽQÄÓ#>ÕÐ…»˜ª37è3ý_ý„ 1Á£¨„ˆv„¯åWÌë„B¡NjCd˜Ð´°B4…à~`‹2B„òh!F¸‘p)è'Âó34G9}FÓ°?œæ<#újb±@†Ž™S“xFDsášþ›£ Qyhšt|DÆq€ÅOœ¯Œƒ mñÜÍ–o%¸?Ú…°.̉ݻsx1K Ó3ÁИ)1c0É¡cˆÇôÉTýá‡ò-móÎŒnæT”„‰vO¤]îÖœÀ¼H7æœ&Í…#AL>·c†A"ecݾWÄ87R60ÜCXqxL¦<׸·0‡8´„¥ÇÔfÀ sŽZ4Ar‘€¼c/!°¯c BBåÏÜH¦ë ŽX€^Ì`y¦ü˜z$ 6N,>gºܵ ‡àœa &ÚmÆŒörÝKÄ·Å„@í˜:¸F”à8ˆ;69Ø3ÐÆûƒ‰ÛçÒ :€Òc 0~~Ⓝ‰ÂY¼Âïx~ëcºÀ1áñ„g§·ŽvA”àŠÂ–Ài…Ì£LÃTÈŠ JáÞ̬ÌâH •190‘Ó=¦p+Dß7†1Ç3±ô„,ÁÞ@·ì`FG¢1X£pè D/ÔÀ£ˆ ˜jp¡`à@ë8S¸…wÒ?ÇÐ 6˜p°î@G V 3(!cRÂCDÔ£¥pláŠÂÅ —ØELøZÔ •»ù„ÚàFs ç"-…ÁÑHb*äšQ›Xï‚°£?Æ›†ÃâECt9e"çRk:šãE‚QC̱‘ÜEaÎoø´KIt$ƒ2ñÑp˜å…ÂÖ=Ø¿5Ý%" O>#fg³ä%x2zÀ„`Ù3(³5+g¹ÆÀÀÏ}fz\ Ì…dò«)À”FŽi†oYÞÁ$j~è3ç±:„{™é~`@0ûÞªs5N MpO 6°‹ÐubÕÀ¸Â$Í‚f},x¬X£ƒÍÀ4„‰!ÐI„Éaá‚Æ,ÂEÐU¾¥Bæi£¢p?µjÕ c s ¦ nA”àbáÓ<ƒ¥ÿ fV{ ¤Èç.”„¹ £ Àœ¿AÍA?1lkGQa"¢Bº„ÌBmGµh ³ÞÃ×u»< Ž}6 —‚‰:i×95šE¸,ÐÁ³æœÀÙIàFnÁ„ÄpÄ ä,”†­Ó+sŠ‹x^t-b†ƒé…[x”Oœ:iˆÎ ZÈ9òHÂÅàRøO´ËÞóðp$±ÜÁ´Eáá+tj`"4ÕËRÔ' oQÔFꡈ€D)îÚ…ƒù°ßeölû…?áîÚ(ÕmuFD@D@Dà %ð/íBÀŽøegn©R!¯lùøX›7[›6Ù¯õëu£þJD@D@D@¢g…†º"" " "ðŸ"B»œöñ¹tèÐvED@D@D@Dà? ¸k¨SÇJœØúýw{´ŸßÖðNx{¯-Tè¼KEG'O>>w®ëm늻ÁÁJ" " " "ð_ܵËÂ…VÖ¬–··uõªU£Æ#ˆM·¡zõ--Z¸vcÞ?º~\[¸ð‘3þ«Ÿú^D@D@D@l÷ó!bØvô0iOϞ늹uù²©d᯿vðòéå5ãË/o^ºt5 `z„½½¼†{y-þã‡iH÷Š€ˆ€ˆ€TKºYD@D@Dà‰!ªv‰ÇZ³æÁ1ܾ~}Kݺ»:w¾}ã†S˱ٳ¹¾âï™­Ø–uãÂ…‹û÷sqrÙ²[ #óà°u§ˆ€ˆ€àͺMD@D@D@B!ð¸â»¹,s|xTþ¥]88ºn]ëÅ­7ß´_ÿûŸõöÛÖùóª-Õ#" " " KÀÝî‚Rá(éÀÀ×ñãÛ€îGHàqùŒaU•ˆ€ˆ€ˆ€8¢¥v!0 ¡íîܹS$;̯s:ƒ’ˆ€ˆ€ˆÀ=úhÞwß™¯.>L@a§'ßCO\=q‚Wh};·cÇŽ{¡v% ÀéÆí[·.ìÙséàAF@¡E*¡þ›/Ò1§XÀôé‹Ó§íååj­¡üù;(æ±]âÚ"E†xy õò2ªÈ êú™3WƒW9ÁÓÔÏ9š¥Gù× ºD@D@Dà¸k—­[­ªU­aì•+­%¬Aƒ¨ÖPn"®î”øñ§½öÚ=qo) “ßz‹ü]íÛïîÒ…‹õ%JìhÝzCÅŠ;Ûµcþ& ÇŠ¿ÿ>pÍn<2iÖˆÓ¾¾f²¼71w’yÆÇí‚#‡Ñ†²eñì‰â ™˜/_ÞѼ9jÀ¹}|ð]$Îò1ó`BàÂ,9>{öÂt阌fÎ X¸™rvÏÿ©Swwê43cFSSû¤I͵«ʵÏÆŒÙÖ¢…“ƒ’@²ð¹ƒ‹êôÚµ\{'JrŒv(+‹÷Nœè?vìŠ|ù¶vëæTµ*gΓK—òñæ… +³g?>oÞ–† YCýfaÍÄçŸçýØœ9¨sצ† 1#™ëËÇŽM|å•ÀeË kƒŒÈ-mo×nêG-Nž|ú{ï—ôæ}û-x6שÃŪ¼y/íÛÇ ‰ªl7oÞ¹~=Æ®‘¾“rD@D@¢wíâçg•-kᯘ:ÕÊšÕ=:B»<ûë¯1Éà…Ù\³& ûµi3ó³Ï¸À?‚@aÊ<:cÆŽ–-±Il©_ßY„1÷»ïvuë¶©fM–zìî±¹sÿù'ÿÁƒ)pzÍšeiÓ2ñ1¯ æ‡uE‹RæÐðác_yÅÔ€giúô;ZµÚÚ¸±90Ò5aàAšÌýí·5%J3 ß6mYúôœ•íS¾ü¾\G§N¥ÛG&LØ×¯ŸÇŽzë­Ó+W2iµ¶tiDRÀ´iG&Nëå…7‡[v´h1ýÓOéêÒ4i°î,üõ×s~~,a •¯Ê‘ƒ¦Ñ‚4=ñ­·v´iÃÂaîBöÍùê+îÂýIDkëXŒP9Ë3gÞÙ¡ÃÅ={ƽöš‚G¦L÷ÔS˜|Ћf™Ñ¼~ðkÙÔ¸Ïøˆ›iUíÚssçÆð¡jLD@D@\xØg„é¥I«F «W¯ˆF…=fC¹rH– Á¶–ýà1áˆi–blmØðì–-;;vÜZ¯Þö¦M}Ê•»|èéß•ÀÀ •+#>Bë.“. ƒjY jÊ`‰Áÿ‚H œ?Ÿ5ª;š5c†¦•.ž‘³7n©UËøƒÜëj Àê“mÍša"2š å±àÀMU«ÒO­Y³­qãm òî‹ÎSÚÖ¼ùÖ p íîÖ ÷†%´Õ2@8ܸx‘k¿öíO­]ËÀé jƒj&¿ò 9èóÑÒ$d=ÙT£×vOîÜ9:}:$ãÖ2fʰœÈxж·n}hÜ8.LAkÖì4ÝÆÇ +6”)sdòd„£©ÕH‡'MÚÛ¿¿ã­‹è¿µ'" " –-ã»<ÉncÙ²]½¼†{ya y„X¸ÓÑËkâ3Ϙ-`7Ξ?~?/¯wýq°-U%" " CÀ]»`ïÀô@p—eËì×¼yΞâ‡iE÷Š€ˆ€ˆ€ˆÀ£!ð/íÂrR~ÌgÈ`åÉcåÎm¿Ò¥³B‰™òhšW-" " " ".ò… — ‹€ˆ€ˆ€D2¨¢]IÉ$Ô¼ˆ€ˆ€ˆ@t àA»…•­FD¥ ÞÅòè“ÛÞ©šxnNhÚGßžjˆAܵËÙ³vp—jÕ,"Ô.loU~ÄisõênL—=½¸U'" " " ¸k—5k,BªúúZÄÁ'd|ÇŽrÐþ·äÏ?9{hqêÔDH3UÂdM±b²Õ%" " "s ¸k—õë­’%íƒIÍšYíÛ?Ê¡sˆ4!C–gÊÄꞟèsÄO#*ÿ£lFu‰€ˆ€ˆ€Ä\ֻ̚eqHNòäÄ­³‚O?|diIš4ÔupèPèá‚t8{€C«•D@D@D@D lܵ ÖÛ·CnEi9¶j¨ÔÎví8öÏ`”D@D@D@D ,ܵ˞=VŠÖÓO[ÏÓˆ¶-((¬½cúôVÑ¢VÁ‚ö…Ë(ÃZƒÊ‰€ˆ€ˆ€xÐ.ØQéx™Uºì”ŽÛÚ±ÃÚ¸ÑʘÑb~$©OŸ>Ï>ûìJÁ78:tÈ××—µA7¹$ôÇ·Hð˜cÇŽ 0€jÇ÷Àõx¼1 ÀŠßZ±"LµrNv… öú¡Úµ­.]¬B…ì³Â’V¯¶,KA•'‚@¨v——^²˜nIÇ'N‹,Y¬‰ÿ›K®\¹¨÷é§ŸÆŽ?~ü   Ä‰“söìYÓÞ´iÓfΜùÔSO¥I“†SîFy9sæ »ÝÝ;(Q"SÞiràÀ!=öòZ¶lÙ½]9~üøW_}å”1fÍšEÎTÖ!§7š/¿ü²É)R¤ˆë-ׯ_óÍ7MÎ{ï½·ÍWžZ$kVÛŽrì˜ý5Ýüé'ûý»ïìuBÅu™2ö{þüÿÜ_³æ?§D "ŸzÊZ´È.ƒ¦1‘ל9ÖéÓÿ|lÛö¿É«„ˆ€ˆ€Äx¡j—çž Ñ.»wÿK»°}:, Y/^¼ùóçþùç:uB ¼øâ‹ëÖ­ žã½V¯^3ˆ‹AƒÕ¨Qƒ‹ÓÌÒ–uòäIWíBÎäÉ“í²iÓ&®›qÌ’e/^|=g/Ý“ÈGm\ –]Ï_/8™¶í‚–9räÒ¥Kɬ^½:*Š |U5Êž=;å‡ òöÛowéÒ¥B… ;w¾p÷ØH·Öê×·ªW·š6 q­]k½óŽ]_ù$¼leˆÈç^¾êÐ!ä› LŽÖ‰öEß¾ÖüùVΜÖöív1¾0!,ÈUFD@D@ž¡j—^?«D>û,ä:sfküø0q¡ÞÔ©SoÞ¼ùÃ?ÄŽ²k×.röµ7X»lÙ²eîܹøŒ/^\¥Jr.^¼ÈW—.]âº/³÷Ýd -æÓŽ;¸®ÓŲfÏžxoWÊ”)óÆo`}á«-Z˜ ,àÆyÁ‡(‘^yåì=Æú‚®º}û6=dMÌ·ß~ûå—_RàÔ©SåË—gM’$I*V¬xôèÑ{bCV£FVâÄL‚[³ðµ™ãŸú÷·5$ 0ŽIÆ©îwíò‰‘mÝjMŸnÍk¿€“ÎÏÏ¢›Ø`R¥²Œ] ûM÷îöq£$" " O8Ú'áé˜V›7g ŠmTH™ÒêÝÛž˜‹³6m ±^x!vìØ•*Uúù矗/_ŽÎÀm„a£ÿþ4Y§N¢E‹rÁû7ß|“,Y²}ûöuíÚµAfŽ9¸Þ¶mÛ¢E‹¸&§gÏžxˆp9%NƒÆ@âqíí¤I“ÐèÖÓä΃:)Q¢•ðÎ5– S- ‰L¼E&L@Í”*UŠòx©Þĉ%†[þþûï{µËµk¶e%aB[j`/ÁsDš6Íâ(tW•*ö5‰Ê1Z „@æŸZwΟ·sÐ=|‹ÖéÕË^7ÃâŸråìÕ0Où÷ß–±+±J§pa 7.ª-[Â_…D@D@D ð ]||lÏ«+J—Q*ìˆ)UÊ*Y2d6ýO'Nœ Þï¿ÿ~Ô¨QÓ±*§àªZµ*F´K­ZµøEÂ> k×®>|¸téÒÕªUCµ J–,¹jÕ*|7”ìÞ½;V±cÇR oñò 3ðF…vˆ#ò_¢„ò,UÁ‹T¯^=\?¼+VŒ†È§zÒ±cÇ=z°^¡S¿~}L,çÎã[¬D¦é¶mÛŽ[:sÆÖ(µjQ¿mnaÉKp‹„È$1 #Ê_XiÓÚè‚Û´8ŒA-[Zþþ!9Å‹[•*ÙËbaŒí “LùòöGga1Qvh ÕÈsQÕgô0hX‹ÃóƘ1cÌÒ“'!¡Z†ýg è W¡,ó}xhŒ" " "ðXüK»Ü¾m›>ùÄŠ×ó‹ÍÒ¹sÿwDòê?Ñ‘#GX¥ûX:y•²Ò÷ÙÇÿ Q¼xÖ‡ZŸnq½o¾±8ó"6Mh0ÛOå¬üE)‰€ˆ€ˆÀ“LÀÝîÂÚRU°ÃÅã‹…¥„{yˆx+1õ;öšÙÍ›ÿ…hÛ6ÛÄR!Ã,…qÍ iØóy.,?zÂáÇ„? AD@Dàá<ŸÑÃuIw‹€ˆ€ˆ€ˆ@¨BÕ.X¢Kb“ótõ¦ ædÊä7¼7ºµÀíYC˜»¬‚" " " xÐ.Db;uÊŠË>PÚ$¶º°›†˜p‘r¬´#MÜ6™ì2`\¿½w Ò½9DsáF·óB{Â?ýô“!E,`BÞÕ$8np‹n²‰® ¸å°µêµ×^£ÂÉDØ4çV 5¸õÖ­’øg¨!‰€ˆ€ˆ@˜ xÐ.ljN’ÄŽï¢T“f̰?²eÚÉ sýUÕ¾l&*.ap©ˆ81ì—&îËùóç9œÈdšs–,YBä:>²Ýš]Ùœ9@ø–«W¯²§š]ÐT2|øp2‰CV³ÛlänÒ¤ 9ü?~<‚Xº{̆jòË•+G…\´nÝ]B…ìÇ&ð!õÈdS7½"sôèÑDá£'ȘìׯŸÙzMؘ|ùò¥2bÄ:Ã&, ÐavfQɦnNH Ô/#¥‡”\±b7’+ü0G;=Ô“ÐÍ" " "e„ê3rÎ32]%š?³|pðÛˆKeË–ÅÈaB0©Š—¨tÈ‘X±bÄ…¹ÿ»ï¾ã[´s<=CÐðñ¯¿þâ’ìxââwÞ!,~MÄ^Bá½ûî»X\øª]»vœeMBÞa\á<û /gΜ ƒÏ¢D¬*†[2fÌøÖ[o!,ÈŒ'Îo¿ý–6mZ‚ã!•8Zòý÷ß'f ýD…ܸqƒh1œ éZ?Åh1S¦L?üðqn/ˆÔX–,Yèçis]¥NN†J˜0ah'+EÜ#QK" " "ÙBÕ.Ï? ãŸÞ¨žø®9Ðóßÿ°¼XD0{ Žb"ÞrÊ#ZÄt€wÆgdB·±æˆ,Çiäp0$s?¸iˆ8Ç·c Á.Â:tð÷÷'þ/âíB¼ÝûŒ aa’ŸŸò‚> >©ÇÉdŸ—`w½{÷¦6Ž, ‡s(Q0¦BšÃZãzÜ™´È½ ­iÓ¦éÓ§'‡£"Là`>îÝ»ÑCÌ_u Cà¾íæˆ#%x‚ xÐ.F <ý´…£ÃÙ‘‹e¡bÅÓy" S;6 %œ=ÄäÍô•…³*W®Œ1g kŒvA`Aá+´‹98)oÞ¼¼ÿòË/)R¤à%D|^.(O1Ö¬Ÿ‘v±ÐW—3\eнÃDOà$"ÿ’»ÈåË—9üÈ”,P ï¶A6!b¸æ4JŽ5àÂñˆcˆxÁôÍÇÇbzÂ;‡±ß ›ˆá‹ßÊA@Ž··7µ1d>ÒŠ9òIID@D@žp´ –¦øøñ1TXœL"‡#‘“'·òå³C˜DXb S8š [¶l¬öà4¢×_}ذah„H† |Çš˜T©R!;ZµjÅìÎz -8w°²pp4‡>~üñÇÐHŸqßàÖ9xð ç |ñÅ,‚Á¹ÃJx£IÔ€2’Âc‚ÅÈ 6 a B,X»Œ1”h#êÁc–ªpÚ@žR-1W'™@¨ë]žd(»ˆ€ˆ€ˆ@”%ð/íÂêÖl°ã>/N; ˆ²ÃQÇD@D@D@b8Ù]bøÖðD@D@D †v‰aTÃNÀƒv1çüŒ²AGÛhzô`SŒ½h7ì‰]?DÂe±mØoQI¸?ÚeËkð`{ÉË•+ö½ìö͘o»ƒÇOB›dÍš•Èoá¸GEE@D@D@Dà¾X™5ëÍ«WMvÐêÕý¼¶7k S“" " " K Tíòâ‹ÖíÛv_x7kd5²ìFp:±x±÷/¿üÓè;G§N=¿k×¾¾}/ìÞmò×àÍ·5mÚ)c Rˆ¹ÛgD:,.¸²g·ví² ¶úô‰PçvìXš6í•€€mU‰€ˆ€ˆ€Da´ ’%M+mZ+^7rô‹/l÷úÙ³þ“'Ÿññ98iÒ•'Ì-óç›3çÜöíw‚ÏË&ŠÌ‰%KŽÍ{˜ñ§]ݺÍûé§s;wrУÉ9»eKÀŒ'—-óØ.‚Ö®E¬.\x™,ƒÓÜxñ.ìÙshäÈwZâ`¦£Ó§Ÿ\±âf(ûµÎïØ19V¬ÃãÇÓmSÉÕ',86oÞ•ãÇùxóÂ…#S¦Ð“£³f9ßõí·;»v=»m[hOèÆÙ³‡FâFÿ™3Cª=y’®2åtðY€µ¿<ùäêÕ!•ܹsbéR:¹gˆGþz " "…„ê3âØf³ŸˆªVµŠµåKåÊÿšÈÄζm9½hò{ï­+ZôÖÝ#\;ã[¹rÀ”)®9LÀž~ziêÔ“¾ù&píZ¾âÐéYqâ`«X”4éi__rÎøú®üûoŸ’%»Ÿtíôé%éÒÍùé§½}ú È9¹téÌO>Y–.Ýüï¿ßŠ-g{‹“Þ[£F§7l0˜øâ‹ëK–äµ4sf>[°`a²d‹“%›ñᇇƌñÈpK½zÓ?þxM—¢Àeÿµ ,H˜p^üøtœ…éÒyÿü³O¹rÞ9r˜P6ÓãÆ]™+—ÿرë¼vê”OéÒëŠñ©Xqf’$”A±!eVfË6/^¼ù?ýDά¯¿^òçŸ+òæÝÀ¡áÁiGÛ¶sãÇgȳ>ûŒÇ‘õÄÕ®ˆ€ˆ€¸¸ßYŒæ#Ž ÌnÅŠV²dv°ÝÀÀHÈ G˜1v¶isžÝ“˜’WfÏŽÄõ›ÀE‹VåÉs娱+GŽ`_± ¯¼²½yó];n®S»È©Õ«7V©²·W/Žx\±“–uéðan¹~ê”Só7'!eÐ ò,;êÖ=2y²ó^'ûhëK—N,Zä!Ã7V)²"gν½{¯+U ;ŠÇJÖ)0mšù ‹'7ÍþòK¿öí‘D~mÚ¹¼X1¿Ö­w¶o`ÀSl_ÿþHºû<˜õÅ‹ïîÑÃÀÃ;¶ŸMÕ«ïëÓÿU‘ã1ã®v´n}lölû¹¯^=ÿ·ß6תe÷¶Hçô¨H~üj^D@Dà‰'êz—§Ÿ¶ðr˜pü/ÚïµkGþzærã¯á=´³Vå̉+„’œ8mfåǯ6QÜ Þá0}úŠ,Y¸¸rô¨ÿ„ —ó-_~G“&äLzáÉ÷üöíÞ¿ý†Íãð˜1¼“3ãý÷o]¿~ãâE|FþãÆÝû—Cå«såÂ0k† ÌŒ÷̦M\Œóò¢Ú‹¬/Q=?2aBP('Gbê@7ì0àÜ–-Œbg§Næˆl†ƒnÛѼùÕ#Gð7¡cfÅŽmº±©F}ýú^·ãñOzqòäK–Ðîå#GvµoóÊ•Íuëî vN{ï=Þ·Ö«‡ÆÂ´¾T©Õyó’späÈMÕªÑmò©öâÞ½Oü?ˆ¬“'­B…,Ö¡û1¢t:4zôÚÂ…qÓ`DAC >–e̸8eÊ5… ™85À2XfeL(‰m_?sæÌ† Èìs¿ûŽ|[]»¶¯wo$æŠçΑƒŸh]¡B>eË®+Q•àžÕ9snªZw‹HP!~íÚ±Àeò«¯î ^ç|hìØuÅŠáúY[´hhKkO,\¸&~|FŠlÉâëëSª”}K¡B,ÇÙP¦Ìê|ÿ%)°™lÚdŒOÜ‹ˆ¤ÕÕãÇYlFGŸ•ÈèŒ=4­S¥¢ò¼ú&" OÅwyÒž¸Æ+" " Ñ›À¿´ ?È °wGßçõÉ'V°YAID@D@D@"€ì.‘]MŠ€ˆ€ˆ€<0i—F§E@D@D@"@Xµ “9+€WðR×ÈO,85«n•D@D@D@ž(´ {‹´7þ'„.;oØ5ݹ³Õ¡ƒuäH”àsxÜ8ö6G‰®¨" " " HÀƒváìš~ýìåºNÀý!C¬ôé­¹s­‘##?®.{Œ·7iB`þ­ „v®PTS" " " JÀƒv!gŸýG»ÿw,BÑ:‡ôEhÿÝXà¼y#ž{n^Ò¤{{ö$Ðm$öDM‹€ˆ€ˆ€D<ûgdÎb$áE∛ŋ­üù­•+#¾“ÿjɲ¹Y³åÙ²™Ó•D@D@D@ž(¡j—X±B8pªÑÂ…!ט^B9ü8â –˜°ÄHØþˆkU-‰€ˆ€ˆ€D ´ ëZÐ(¬w‰ÇZ¶Ìö}ñ…/žõÍ7öÒûöEŽ«" " " O$Ú…%º¶ƒÃèÀ–¼°óˆ—’ˆ€ˆ€ˆ€D.w홋¬ÕåýÒ%ûýÂû#ï\óÂĵâªDî3Së" " "ð$p×.“&YU«Z Z ¸¿È¬YÓêÕ+%ý$?Q]D@D@b6wí²e‹5mšÊeÎ÷™3fØûŒ´19fÿMht" " "• „õL€¨<õMD@D@DàÉ! íòä8|ø¥Ð7>ñõÝPºôúâÅ7V«vùСëñs现b(œéøüùWÌM'-⬙<¹bÅ–Zµ¶°ì(¦]:­+Vl]áÂÙ«æ)ùµjådû»³C‡,Oºuíډŋ¯;ž›¬ U«N¯_®[TXD@D ªð ]Ƴ>úÈŽïÂÙÑ&±Õ¨^=«ysËÛÛ:}:ò‡pÁÏϯuë;·o{ìÊÙÍ›WeÏ~Ú×÷ÎÍ›Û5Úݵk„õøj`બYÃÛÜÖºu¯š»èóÜD‰VdËÆõX//¦çðÖéår`ð`NÊ<µzõõPþ\Fðçu7\ºteŽ—Ãȧ_»v—öï×xýÚ·ß×·o¸nQa¨FÀƒv¹uËî$ç9g h*U–ènjÞ¼‡—×p//æ?´Â½@WfÏ~fóæ¿ýF™aÏ>{hĈÉï¼3÷·ßf~ÿýœŸv~©ÏþòK Lxûíc,K¶¬Ù™2Íúñǹqât½;­žXº”&yymïÕË;A‚^^½¼6–/OMxÜ)¾¦H‘^^^£½¼ö `:¶·oßQÁ]=µj 2ñ™g¨jVüø¦óÞÞ=½¼{y­ÈœÙÜâ<95p1ùÕWMΙ f¼ÿþÊä̹¡D‰þÏØ¨Šå+ÔÒ‚Ÿ~¢B;wîÌøè#>®Ì™3´?ÜÃ'ò8Æ>õÔ‘)S(?÷×_áÃyß‚àõ”Ö—,I[#½¼vwéÂ÷XP6V®¼àÇûyy\²ÄÜ%Ú³bÇ>½nÇJ67oÞ×Ë‹AùOj pFÜ&<õÔž=øx|Μ‰Ï=7ÆË«ÍÝz|î\å–U¹sß`»¿§¸x1eÀÛúî]À&=ÿ<”–eÏN(ç#ãÆ„C¿úÊTpûêUžÅP/¯¥©Ra0SxÜÂtžÑàÁÖSOY ZiÓZáü¡ûèûÏd¿"C†UÙ²Ý$Í=‰ÙÅ·bÅ%)ReO”e-øáÞæÍ›òþû7ÏŸ_‘5ëñ ìœY³ 0mÚú%ŽLœHΡáÃ)|ñÐ!ŸbÅøHadGàÂ…›«WçØjrþú+ïLZ¼omÜx÷]àÚ…c³fm®VÍÉ9:s&åNœxpÌTÔÍ3g%Mº­I“›/"en{I®­EÞM§Ö¬YS @à’%Ÿ}viêÔd߸xÑüx:¹¿¾"eÀûª9ÎïÙstÚ4Ÿ2eÖ)²$MšË–!qÙ䯆Y|k:dÎĪF»Ç5ŠÛ÷õì¹8bÄl‚.£6lX•7¯Ñsk ¸ròä}<&±%üáõÜ„ ··oOš†÷ÇþyÚ]–!ÃÆªU‘D÷ÖvÂÛÛ¯ysÇövùða$ѳ$U*F7%Q"ßàñbÖ2·_9~Ü}|F;8jÔá±c™ÿŽsš%”M›öõî´ÚÒ°á-[Öþ~ý6OŠfÉ Z! ¸äüDXØsäÀôíèÔ©sâÆ=6w®_›6¬&¹äï_ìâÁƒ«óçg*Å’AßüGF¸çÞ¿™mã>#O×®;pþYÖ¶–-}Ê–=6s&3îõ‹™˜÷rjݺ­õë™:q†tcÁÐá vhÌôÖ½ÕŽ¿kœ° ³*x€ëŠAÝçïvâ‹/ÚoßæP*.x^fùËŠ,Y3?ùÄܸÃcÆ8Ðy(nò€v{o3Ѳ|«T¡]l-ûFôpèÕ©+ †Â›‡èN»ºw_,Ly‚­SK3e:2y²)|íÄ Þ‘,Œ ÓÝ‚D‰P·®\9¹páþ–¤N½ª`A =zmþüè¼Ã£Fíë×)sŸë+GBÀƒvaù£¯¯½ÞeÂËÈ üzíZûé+I»«’M›n žƒV¯6S#iG³f¨–;²ú•98hùò•Y³âW:4z4ó%fÜ Ë2fÄ…qdÖ,Êß¾y7 ‹6Ð ›ªUcòƸX|ºoøð‹ûöÍûáÆ€;w6U¯¾§{÷-[2ßSÏÊüùŒ‰)åøâÅË3f<2}:zèì–-;Û·Gm˜î1ݮΗowŸ>¾*ðqMž<Û‚×çn¬QÃÌ£8z°= ØVåÊ…]7Êñyó0±,Ë’…ßús¾ÿžõ"Ør7?p¾`—rƒ{ûúõ9_}弈xaÒ¤œàŽV­X3„2˜ýõ×8S&½ðÂ…Ý»K»~:¬-ZcÃÖF0SÑßÊ•OñøïIо'Ÿ’%q÷`nÙT«Ö†ŠNŸ®Ðž1.&{Dؾ>}P0<š­ÁJùkuîÜÆN­_o“1Âã¦;o¬[ßVà¢Eܲ§W/dë)[)¾â¯¿v´n¿é¬ŸßÈ×^3= ˜3gMÙ²¬B*!nîíÞ¶V­¶·nõåäÊ•S^tr[³fü©`Ÿ \°Àû—_¼T0wî¬`ÕKëØrŽÍ›|D̹íÛ×_¶ê¸KÀƒva.`©h©RÖï¿[fâ—mÛ¶¶Ï(ØßÕÓ²´i·Ô©Ãº ÓQV0à.Áÿâ[©.“ɺ“¿ÿ¾,}zÄF…Õyò¬Î›we–,³X/\àÖ¥Kkòå[š6-_±…kLg||¤IsýÂü#g7n¼ÄÍ+WVå̉|q¾ZU¤ÈâäɦKG3׋ÿü›Ðå»‹ì ²mÛÕeËrqaÏžM5j,úýw–Â0ý£rÈÄÀƒ‘fa²dkòç_ñ÷ßX§HqûÖ­%Y³žÛ¶9í‚¥¯¼ÿ“̽½B™m(SfÑ`¢Xøûï>Á"éÊ‘#*UZ”<95À{ÚèâáÃ>U«ΟïS¼ø¥0~,I—Î;iRJhOEKÿúˬSÙ3hÐâôé×äÍ»8U*xÞçeiÊ”ÛÙ·Ævª¥K@Ø?hzzfÈKÓ§§]¶Y…¶Ú—U&¾uëúuéâXP0‰yÿñaWû÷ßôm~¢D×\Eš4ieÁ‚÷Ù´­E‹EÉ’ÍK”“é ºG"L,‡]š!Ã’?ÿ\þ÷ß7îªD½]$ ßFõꟈ€Ä10¾ kø¹ìì:Þ?lóÍÑI“°¯ÄˆG¦Aˆ€ˆ€ˆÀMà_Ú…MÇìÉÁ¶»x|±z¤vmË“¹=ŠBijÃ*NÖ `ø~×èEûªn‰€ˆ€ˆ€„€»ÝOþ¸x|±ÁbáBKëÃVED@D@D@ è3z,œT©ˆ€ˆ€ˆ@Ô í5žƒz!" " "61G»­XÁÆæ+á<à&l”TJD@D@D ªð ]ؽKð\⻘¸µ¾Èµóº»+ÒÀò[¶§Î—¨$N'ˆ…ê[®±="­[jXD@D@D BxÐ.«W[5jØbåúu» gÎüK—u.‚!B:xO#›õÝwDÙÖ´)qNÍ÷„G#²ê•£G#§OjUD@D@D ¢„ê3"n»s£é תT 1ÆDT÷<´³¿OŸIqâp°"¡ÙMÄU±Ozûm'Šn$öMM‹€ˆ€ˆ€hÙ2Nr¢Ïm¬VÃ¥ÿûN•ˆþ½ˆw+W¶¶m éGëp–_T‹JwéàÁ}t# Jªˆz~jGD@D@ž4´ ®"¢þ_½jqþ«ÛÈõ:Š`ºxbùò(ÒuCD@D@D ¸kv>l$…Î#6î°Ò…ì>tÈÎŒ‚"&H© ¨@à_ÚåΫiSëóÏ­ <¿¾úÊÊŸß:}:*ô\}x Äœ¸ºOâÓÓ˜E@D@DàÉ#Víró¦Å+ª¥Û÷¸¯È¹uë–[? Å{ýúuÞÃÕÿðºÆ¨Þ´|Oûájö¿ 3Æ›ô0€ðßµ?ήÆ\‡÷¡<ÎÞ©nèAÀƒv¹pÁ^ÚÒ¹sÈÌ,Éfénݬ.]¬ ¬7¢ÐÀºwïÞ¶mÛ«¬+¾›V®\Ù¹sg2÷s®ÁÝtâĉ¡C‡úûû‡½ëÄå:Ôš??ìwXµkÛ·tíjñ0À^–Ä‚è{S``à„ <Þ~îܹ~ýúuëÖmúôé#FŒ0e¨FŽ–.ݧÌ·x…a¨î K¨î¦1cÆ´lÙrÇŽdÔ«WoàÀçÏŸCÿ]dÑ¢E[Ø §$" "ðð¼Gº_?;¾‹‘¬Ïe™ ³s† ÖÊ•DeݺuãÆ;yòäŠ+–.]J«¼Ïš5kïÞ½ëׯç+~¸WªT‰œ>}zòäÉAÁ±h(\µjU2™&ͤNNóæÍ‹+¶iÓ&§ëãÇ>|8ú 4AÄ›*••)“uîœ}ÓìÙÖ† öšeÈ._¶eÍç',YRë·ßZíÚYo¿muè`•/o»v­5dˆÕ§OH%ÇàÁ’Ã××¾kút+kVkâDkêÔQe‚§ÃA—*UŠá 4¨U«VY¹Ù®dzíÚµÑS§N5Æ †%ÆÛ§O???r|}}GU™]ïÁéÀsæÌá}ìØ±ïî0G äðáÃÞÞÞ÷ê€K—.µk×®zõêÆ 3⃴jÕªŒ=š»LÎâÅ‹L™Õ ±ØW?©pá´²páB>öïߟG“Ÿ5S–•:uê?ÿü“ jCYöíÛ÷Ô©Sûì³Ìʇbyóæe:,R¤ˆ‘/XY^ýu&r®q¯0µ#q~ùå~š›®W«V-EŠÌë¥K—®S§ŽÇñ Ørç¶Z¶´ ²¿Gºýô“U¼¸U½ºÕºµC ßxñlR¸°µfCã'NXiÓ†Ô7gŽ-bˆéÇ«H;sÊã´iVãÆó,ÒYƒFdFîÙó_½ˆ?þîÝ»=v ÉR°`Á2eÊ*TÈLðØ™Å@zõêu#Ø,Æ55T©R¥~ýúkPÁ’‚ÿýwSçÆ!#GÈ€—–/_U„BU JÜZGâäÉ“çÇD%¬ 0zˆ†¦L™‚lâ¡\¸pÉ[ô Âñ•W^¡LïÞ½cÅŠÅ;ÊéÚµkTBç?üðC¾âš¦›6mÚ¦M›‰'¹–(Q¢¿ÿþ!R®\¹œ9s2Æ.]ºtíÚ•Š™­}ûö±`ÝáFúàñ[eŠ€ˆ€Ä$¡®wyþùóŒð´Äo¦?ÞÊ–ŸÚ7ü$I’¤I“†_Þô²bÅŠÌO\Ô­[—™• &`Ì\,[¶ SÁK/½dæif}&NæT§£ÈŠ1;š®1TpÁ¡ýXß³Çb¢G[8seìØ(Û‚òÜsv%Ç[3ZV£F¶‡È$ÎÜNš4äš[_|aaYH—Î($LV©SÛA ã} žâÝ=q_~ù%vŽÐ@O›6  ‚ùB4Y³fÍŽ=êxް‚¼ÿþû¼#eŒ%Ƽ3pSçÙ³gkÕªÕºuknùæ›oøöã?&“e4;vD4xlÚ‘æ[ì+hÄL™2%H€J°‘ð\Ò¥K—,Y2$Jˆ2Û·oÿî»ï¸0+“(ƒvÁlöÃ?,v!mxz„Ù D”ÕGP‘ªˆ#q¨LÀÃZ]+{v+kÖºíím%Nl¿%ÎíYžüßÓ•+W–-[Føœ‡¯J5ˆ€ˆ€ˆ@p×.«VY3Ú¡\Æ·R¦´;³w¯}&Ñu·l±¿BÇ(9P2d8ÊÞñ9r nÂ…«S§NÛ¶msn™:u*O¨OŸ>äüùçŸcX,ý(½*UªÔˆ#EeªCD@D@"”@¨{¤‡ ³• ‰çÕ5)K{ÿQôJ«W¯¤—W·nÝâÅ‹ÇG  $à"{öì™2eâ"cÆŒ¼—-[–Ñ]¿~ýí·ß6waö ç‡~à:qâį¼òÊSO=åH•*ÕÒ¥K=iß¾½Óîz¶oYÖâÅ‹_xá“Ù³gOrFŽ锡û÷ïÿüóÏMN¾|ù(pîܹرc7hÐààÁƒµkמ;w.™Î-41yòd>¾÷Þ{*ThÞ¼ùk¯½F† š2Ÿ|òÉÆ=vÏÛÛ»L™2´è|‹ á–V­ZE¯ç«ÞŠ€ˆ€Ah¿à„jÔ¨eùòåDÛËœ9óÕ«WóäɃˆA‘´nݺI“&«W¯žN»»éÀÉ’%Ã@2pà@´ 깃d™3gΰaÃ&¬Y³&]úõ×_¹(W®ÜŠ+èü’%K(“-[6TšÇF1ZM&ЧsçÎnc/R¤*!4 ˜LŒ0š Q²dI´ ªÂÒÄ·x…øk§Ãû¤I“¸Øµkíš/ùýõ²ÑC‹óçÏïØ±#¦#J¢~X¹‚G‰e1È£uëÖÑyna‰ §Ý£vóv"000z=_õVD@DàI#à®]6o¶]E Z]»Z¿ýfÓà£T©˜ ­nݬbÅ, D£tóæM&ûX±bµhтٽ?ºÌ²Š-š&Mš®]»2xd n——_~9gΜˆƒäÉ“S›Ä?þˆI *‡é ®"†4KOœT @yóæ…¤nݺ7F[`û¡Ì¸qã°‹Ðò…:0tèÐ~ýúQŒ’ƒºÂ|BÓ˜Lüüü°Ð €Îœ9ƒÑ…ÂX€Ú¶m‹ÑˆJ° }ûí·T…¸;v,¶¥víÚa¶Aoq/vºÚ¥K—Í¡<0Ýsµ»àiz饗p±E£ç«®Š€ˆ€<ܵ˹sÖ€VÕªVùò–ãZ»Ö*SÆ~¹x3¢«Û·oO›65+5jÔ˜8qâ­[·L¿kÕª…“ˆ©½oß¾ˆ(`„`ò6&Ö¾°ÐdÇŽ|Ä*ƒŽA4T«VÍuä8k.\ GË–-‹/@Ë—/£'ðË”/_·9È$HÅŠé‰S¢Ò¥K£¨ÈAëÐîÞ½{·lÙBŒQ„u-T‚}ÉR¹re‚}eúô騱µkײ2ÿvš*Uª°¢Å£YW•`BÛ9í>ýôÓ®îªèñ€ÕK'€‡õ.O„^½z± …™sKxÇ~èÐ!n$û–ÃÛôÔGlá3+ˆ$‹Ëà ս" " Fà_Ú…Uº8.>üÐúòKÏ/¾äÌi…²‚"Âúü(Âð€KèÔ©S¬üàâÎ;᪻֔ðÞ®&Ga:ÌJáQVèFÀÝîÂê‹øùy~á?9pÀºëx‰ncUE@D@D@¢?ùŒ¢ÿ3ÔD@D@DàI"àY»°S:*œ¹ˆG†ô$=UD@D@Dà?xÐ.„>‰Ëzá…ø.TÀñÑýúY˜}lçöxîåªU«(§ˆ#ú+p¸kâѱGš´k—õþû!Åfδž~Ú*]ÚŠøÅ¹sç&dœ˜ˆ€ˆ€ˆ€ž}Fƒ-^Ü Žï’Ö­³ˆYñbDs#ö¡Y"ºUµ'" " "U xÐ.˜^.Ó§ÿ«ËmÔ(ÁÌž=û7ßWID@D@D@îµ»°áÂaÑÒGh]'‘S±¢uìXD3#Ž-áí#ºUµ'" " "U ¸Û]ð(`åÎmŸj”'OH¯—/·’$±8ê‡ÖÁDX"t}úôéïsPs„õD ‰€ˆ€ˆ€DîÚ…-É„Í=xÐŽAçœÒÃ2—ýû-Îä!?"÷N>|xÔ¨Q#~•My8ꆈ€ˆ€ˆÀ=¢tlºhk_`" " " ›À¿´ ÁþqyyÝïõÉ'¶FID@D@D@"…@”¶»D 5*" " "• H»Då§£¾‰€ˆ€ˆ€¸ð ]|}­þý­^½¬óçíÒ8’–-³ºvµ#¾8«wRD@D@D@"…€»v ´7¶Š± ¶ 8aeÈ`U®lýù§¥èü‘òÔ¨ˆ€ˆ€ˆ€CÀ]»œ>míÛgÛ®•/Ÿ}Áù‹ë×Û%KZC†ˆ€ˆ€ˆ€D&Ïë]jÕ²x:õOÏš7·Z·¶”VH$àA»tè`uìøO—®^µZ¶´Ú´‰ÄNªi!à®]V¯¶~þÙ>2š“ÿ÷?»ÐîÝv¸ê¦Jeuî,p" " " "™ܵËåËÖ”)¶•¥Y3kéR»g¬waí ¯V­¬íÛ#³¯j[D@D@D@ßE" " " щ€»vY·Î:Ô7Î;ÖýEæðáÖܹzctb©¾Š€ˆ€ˆ€<~ÿÒ.wîX&X+Zuêx~U©buëfé\çÇÿ\Ô‚ˆ€ˆ€ˆ€gòé/CD@D@D :ˆNÚåÖµkÑ ­ú*" " "ðxÐ.AAöŽè3þi u,‚Ù¼ù1´æ*7U«´r¥Sü´¯ïõ3gœ·oݺtðà•cÇÂ\Ÿ Š€ˆ€ˆ€DKîÚåÐ!{½K¥JVñâöÒÒÑ£V‚VýúVÖ‚‘3È[7nLzñE§mTËÖÆoº¬»¹qþü6"Ò(‰€ˆ€ˆ€ÄtîÚ…“¢°ÏŽæÆçž³GÏ9k×Ú,à¬èºƒ½¼.ìÜižÅŽ–-GyyñòéåuíäIrfʼn3åõ×yy-ËÓ™Æ'" " O4Ïë]Ξµcé: G¦LÖk¯Y>>‘ QâÚê™g|ôÑÊlÙn]¿nòƒV¯áåµ£E‹H蜚ˆX´ §Fÿö›uófHGnß¶8Òˆ„O†ã#8.Zäýë¯ÿ4zçÎÑiÓÎïÞ½¿oß œVœÖ*ÄûÑéÓO‘’ˆ€ˆ€ˆ@Ì%à®]ví²²g·£¼þ?_>{ܬw!gÇ …зo„’8·}ûÒ´iµ7B¡«1ˆÚܵ˾}VùòÖX¿üb+f÷ÉmÛZß}gU¨`똈L;Ú´auË,?J" " " "L êÆw¹}óæþAƒ®Ÿ>­'%" " " wíÂqE¬yíÔÉó‹õ.#FXœ5­$" " " ‘BÀ]»,^luîl¯kéÓÇýEf×®öRvM+‰€ˆ€ˆ€ˆ@¤p×.¬-a‡ñ]<¾ÌWJ" " " "Y¢îz—È"¢vE@D@D@¢2i—¨ütÂ×·uEŠ\s9ã)|7LjÒgÖ¯ßTµjŒŠ!" "*Ú……ºD²åuøð?·q’9íÚE”KÓ¤ Zµ*´ÞloÚt´—×X//ÞLœ–NŸõõÝ\§Î " ?ÒD'×—(aª¼|äÈ̸q×–*õH[ø§²k§Oß¹ûéÊÑ£[48çç÷m]?ujh0Ɖ|౪›.Ìýê«ð¶B…a¿…s†yyíéÑã?oaošë ÿYþÞ7/]Z•3çsçÂuïÒté\ í^άûôÓáªY…E@D@î%à®]|}CŽ`ô÷·Þx#¤>ÇæÎ=,à8CûÈäÉÔéÄÂ9·uëÂĉw¶m{™œ€@% ùçm†’N­[wpĈ“K–ܾ~ýZPÐù;p’Ôž=ÔÚ-þ“'úé ~~ÎIRD ˜5 ¼æépûÑ©Sã)ò©öì¶m—ˆ&DÇΟ?±té±™3wl?‹{Óñ9s¶5hprÙ²cóçJ·._æ##:OÅàÄÇÃãÇŸ¿+×,8îíͳ;0dÏîÔS¦\>z”xÍG&Mº·¡Àyóf}öÙÁáÃ!`¾½pŒá,Xp%0W¦O硾{Òúík×f÷±ˆ.îßon¹uõê‰%KfÌ8|gþf¼÷^h$•/" "Fž}Fö9Ò#GÚ•›®J[¸˜ó¥=©…0¶õhŠ1szÑä÷Þ[_¬³Â½•®.P`W§N>¥Jm©[—#oߺÅoâ O?©fR¼xëÖq˶† gÅŽ½$EŠEüqzÃrÖ—*5÷ûïWçÎm*ÜÙ½ûÄ/¾àbmÉ’« ¦!&-Ú]‘1ã²L™|Ê•»}åÊì„ gÿøãæš5™nÉSòN”hÁ/¿øÂ.81c^üøô ÄDKÎá1c¦½ûî’?ÿ¤Ø½&"fòýC†LÿàƒõÅ‹óãž‘[vuíŠÂîsÅŠÓú‰‹SkÖÄÁ^ >œ’td„io½…‰ÌÄ‹2f\øë¯ “$Y”:µÇ®2/Ïœ™®êàÈ‘hĽ=z ÷òB4l(S沫Îå~Nl˜ùí·»;u2º*ÐÛ{a¢DKS§žññÇXJPx³¿ùfÅ_-LŸ~ï!æ>ªõ ;š6=µz5ýºu›;ö–5Æ~ñ†{ìÛÎöíg}ú)}[“/Ä(³¥Ij^’2åø·Þº,Mˆ´,}zoγN»:vä´NŒ^Ê•[‘'9Gn÷)QbE–,Ë3fÜR«Ö½mù”.=ëóÏWçËw=؇ðZž%‹÷/¿Ìýæ›Í5j3û·ßx¦kÖœ%‹¹ =#nÜ•¹r'À¨oÞÜÚ¨Ñì/¿5†ŽßÚÕ¾=ÇV¬-Xpoÿþ<}T¦ˆ€ˆ@Ø xÐ.{öXx9Æ ©$(ÈJ—Ϊ\ÙJžÜ¾¸k¶{¸$ó÷¡Q£P0×Nº·j ›ëÕcÞ¼±»oßyÄfB]´hUž<—øÊ÷M3âÄ1Ó< ±"kÖ•ÿ½§wofzÛzqëÖŠ|ùxÛš41‘´¶P!ìLN­¦N]]®Üžž=7W¯î±©[7oÎù·˜Á V››4é–fÍö÷é³ {Wñ0ºíwGÙƒ’ihkiŽ˜‘Ö(%*A}toZ]°`ÀݧÀŸŠ_ëÖó$ØÝµ«mÀëÕ‹ò‹K”À–Æ_Î'¤ tª:¿kפ_ÄkI¦_»v\l­_ß|»ð·ßø»º?O}+" "ðŸܵˑ#VéÒ¶Å… ·Aûv¬øœ#Mb–Œôõ.Ø!Œ'‚wg /öÏ1ø€6ÖªuxìXûzĈ9rØc v7`óç—7, ñ?þ\°aUŽ'—.Eñ0ñß¹y“sªù™¾oذùÉ“3SR5°2¸œ/¼ï8Ã<0ð„zæÇãôñ)S†ÉlÊôɯùÿm„ÆÞÑa¸!×’SbbGðdÌœ7݅(¼ooÑbJܸH(ÃaÞ/¿_¸Ðø¿&2¹À˜ÂÉÁ®ƒãñ„Ïkw°¸7™j±`j:¶h×KÓ§÷;‡KhV%Óª=0x0Î)Fu1é]Å¡ƒ‰…áãrZ’:µß]U1;Nœ »va¥ÀtríÚCS¦Pþ/l< i8¹&|ðF)ôÆ'4&–uÁ«ˆŽ›ªWg¼<”‹ûöMûøcç)ÏþöÛÓ7òÑœC~~Û¶U¹s#:/<ˆé%47ßü„ O,[†ì£$cʽýúq;¦;j›jׯ5†³E2õÿ3 1‰¡nm'Tðʪ uë0æqå[¶,¢uÅ`Ǿý6 íOEù" " a$à®]˜Ç9‚‡Q®\Ö]£¸]?È9‹1C+ôÅalññcâ\š1#‹6˜QLKûúôY–1ãâ?ÿäg7žævŒ›ªU[W´èºâÅYƒ3ˆb¬~X•+WÈ]wîP`eÖ¬ªU[–5+Ë5°‹àøX”4)>4•l¬^§À__nÁºãq© Õ²ÚdÄ s9Ó6+oÈœ'N q-ks­Z8¨„9˜ÝÓöäW_Å0C»üú7¦¦y ú–/ÏšžE™32„j×)â8ñÊœ9Ql¦ŒIȸuÅŠ¡EÌGš@B¡-¨Çã3@î`5Y[¸ð‘©S &"ÔҺ…ñ£¡B{lXƒð¿øµicÖ»1‚F7”.½:oÞ3›6­Ìž}Mþüøz0k9r.Á?šÆútïäÉ7Vª„ggkƒF{¹%Fº4gN@ÑñË û¶5jDW×.¼±Z5DÆòL™Ö—,97~|(«LX@3ç›oè.³I¯¿Î’îƒæÀ¯´6þëÁ½½7¡kWçÉCͬAæ[¼ZpÃñ„­ù²2wn{tåËÃ_ž¹ýâÞ½¾•*­ÊžÝ¸ç®=Ëx)F%»ºtA°bwáo~.Ë—Ïè]%‡!à®]0L°°aófkÓ&ëîÚ »~Îà#Ë"Cñ>tõj@Ó?=d,Ì Tâº*åÒþýÎB]j6gŒ÷9Û’®RÌt!…ûƒ1R¹ñ%…–迱E‘0œà’£·Pâ#Ö zE»ôÓµ]ºaú†Q©Á©ÄYQëÖØîÄÉV®œ‰ÿ޾™EµôœtqÏp”³h!¨é \Ûš6ÅþΦ]íÚÝÇ’D ®§hq/ ÙùsïØÙÍ›é-ï®dtðwrøëâÊ`s²!;†­ˆÇĪdþˆÿÜUˆ€’bœ«pøðá={ö„·6PC˜»;ˆExkPy;wíÂqE]T¹²Uª”5`@H=LF,s)TÈ^sð`Ø+ì%‹++V¬3.zjþüù%K–|ÿý÷çá⺛.\¸0hÐ ÿ‡éÐ?þاOŸûÔ°}ûö/¾øÂ­À!CÖ­[Æv,X>}úš5kƉ§oß¾<›°ÜÈðï/ªÂR‰)sãÆM›6™ëÀÀÀ'N„åÞ±cÇÖ®]›’åʕ۹sgXîRx0îÚ…DÛ·Û‹Ø+VH³fÙëLаMFÕªUC—Lž<ù¯¿þJ“& MçÎû믿îÙ³gùòåŸ{î¹ýû÷cŸ`̲¯¼ò 6ÊܺukË–-/¼ðÂ$VOÆ9sæäcÆŒ1œ8Œ^}õUn|ë­·Æç\×®]Ÿyæ™>úytñâÅ,Y²RÜhÊ£3PHä´ç€Êà‚ÒË‹ù›Ýºu£ÿÔÐûnˆbÌèS¬J•*—ÙÓõïÄ@vïÞMÃ}úO?ýÄEÑ¢EÿøãÓjøôÓO—>™ó¡.\H—.©6^¼x¦N B&§{÷îN+—.]úꫯ8`rêÖ­Û¹sg°{ì†2E@D@Dàá ¸kS#…ßü§O‡Ô?|¸ý‘W… ¨‡o4¬5dÈþásá=Ož<ü¬ç‚éÍš5\lܸ‘ÀÂ… _~ùå%ÁAêÐ4ˆœ5N3ãǧÌĉM%›7oÎÒ'eÊ”÷ö¹€6‚ çûï¿Ç“B™×^{­©sÂÓÝ{víÚõÞ{ïu‚šAR 9p¾ðÑ8Þ|óÍR˜°‚EUýúõ%J„‡…n,XÐTë1}ûí·h¾ÂƒóñÇsC*iÒ¤è3˜µÄW¿ÿþ;¨ äpBS Æ Ëš5+£p¶lÙV¯^MÉ6mÚL™2…lEÜË PMš41]š‚ s=xm6άøñ㛯~ûí7ǬÅpÞyçg@nÖ¬™é¼’ˆ€ˆ€<´ËæÍ¿´£ñرö±Ò$~çßýñÿ8:ã^g’$IZ´hA.½,]ºtPP5bE% ipOC4Fã9xð Úe¦9× 81ÑRÌÉyê©§ŒvA0Cß;’½{÷¦M›–['N¼uëV£B0íÔ©S‡ ³¼kõ$K–̱ˆ`éáÚHg óz¥J•ÈAÐ }p<]½zõÊ•+tsNh1u˜éÿÈ‘#Ô™)S&äB™2eŒoSè—_~©€–´Xœ4¹p‹™K»n5#J:¿þú+Ö|LTØYØÓ,ë‡~p|C#GŽlÕª•¹Å㘔øˆGŒž œx(©S§‘)†¸ùàƒœæh¨eË–Ò.¡=Yå‹€ˆ€<<wí‚Ë"OkáB+(ˆ92¤þQ£¬¢Eí uY²Xsæ<|£a­WýC‹ð^µjU´ ~œâÅ‹ãHB7ð“_áõ`ÊĄ݅ٳXM˜†™_™•™\qßP¬GfNÅRR£F d³>3ô½½Á28`æÎ›7/nÌ$”ùä“OÐ+X;ÈD àÖA”P!^¡Ž;RKí¢¨pîÐC ÅPTt˜¶(€,ÀSƒbîСC]W»ö:cÇŽ½oß>2±!!8OŒDÎ&ÆÅ p!;ÈBõêÕ5>Gy¸VˆNÂ&Äí´˜#GFÍrZ„TÿþýQ0è<3@??? -ÔodÞ4(Ñ[4N"Eý`°aP¬zÆŒdš NÈ»j,7Ò.aýW9ðp×.»vÙ‡EstÑgŸYœ&m¿öså²ð tê„+$ü<èL–¸ŠÐ Lù¦üD¬®ÀyE„™û›o¾Á Á"–q  ÕSˆ#àA»~–€m)R„tâäI‹h‰Y ØÛ§ïP¸.²­7âSK" " " Q›€»vA¸°5zÅ ‹Ðn Ú}g×ÈûïÛ[£ R—6-a?"t@D¢cãq„6©ÆD@D@D@¢0P}F;H ×D|µœ9‰k¡£áÀâýGh“jLD@D@D ð ]ØÍ–"7áÂJ”°ú÷Сœ>}š3‰8¡­ª1(LÀ]»°ÿ™ .Á‡YË—ÿÓqÌ-%KZ[·FèPˆ…Ï)Юç?GhójLD@D@D êp×.[¶XiÒXeÊX;˜8ñ?ý>Ý"pü•+=Ž×!à}D·ªöD@D@D@¢*wíÂÙÆ'ZmÚØê¼½ÿéu@€ÅùÒy˜‘i{÷îÝœ¢Ué©_" " " M ÄwY¿~}DSQ{" " " Q•À¿´ g!תe=óŒõ꫞_/¼`‡~9q"ªŽFýˆéÜí.—.YAAÖéÓž_§NYçÎÙ^”D@D@D@D RDŸQ¤pQ£" " " Q“€íÂYŒ„¡ó÷ÿ§ÃD|9xÐ~q#Ó¥K—N:u'ê”è’¿¿@@ÀñãÇ:tæÌ™ãáÂn ºœB«äòåËç0¬…3±•ý"k¼CI×®]£ó·oßc­W®\9|ø0C>qâ<š0ÞÞb,LÂ{ãýËCãüùó¶NÕ&" "àJÀ]»pLtÛ¶ÖgŸYl-Yb—dî ² Ǽû®U»¶ú$EÁzœ5Ñ7\NÄ®Zµê«¯¾ºsçN3†[,ü åÂmNI·|ê7Jˆn`n Ô½]Epð„Þ~ûíW^yåÿû_úôé‰×ÇítÞµn$ǹù~Ó¦MÎ@.ÅŠûðà ô—7oÞ¥K—ò•)ìÚ4Í´iÓ `ºHëp-C+®ÜLÉ¡C‡6lØ0´AÍŸ?ŸžÏ;×)­>Î…ÓJ³fÍò[o½õÜsÏqѸqcSŒñº6ÍG’3ä}ûö;vÌmD÷vÉõ–o¿ý–‡N¨+SÒ`t{¦|tµ÷y‚T²víÚÌ™3ßû÷å‹€ˆ€„—€»váô¢Q£ìJ6n´>ÿܾسNJÛüŸÝâÿÉÓ¦…·‰È,ϬÃÜÙªU«É“'3+Ï›7ÞøùùuêÔi„ C† á#Ɔ\¹r‚ ø'‹H6u™¹îСØ1c°̘1£]»v¼>¼oß¾LêL±\tíÚuôèÑÔà6H~Í6¬}ûö4ѤI“íÛ·SÙ1räHr Ä\Þ«W¯Ž;Ž?ž¾µiÓ¦_¿~{÷îu«çäÉ“#FŒ :øjÖ¬Y”;v,Ò“Íl[·¬]»v5Š~öìÙsÒ¤Iä4hЀáŒ7ޱó±OŸ>•+WÆf³xñâdÉ’aYášÆÔ´dÉ.®ÛÓºwïNÇŽ=júP¦L™„ öèу¶øÈ¾bÅŠÁƒ3.:SŒ{©“šC{Ì{öìÉ!ýç,X@Wé3jéàÁƒ\£™x7O‡!Ð1__ß‚ "GÖ¬YÃ>y3ÀbŒ¡ ™< еnÝšÈùä“Oh¼tÒcO¸‘çsž) âÂU»lÛ¶Í`œ={¶©dæÌ™½{÷æF‚ mÄ9-Z´èJéýû÷§I“æÀ¿Ï,åïÍ…¡R¾ˆ€ˆ@ x^ï‚p)VÌ2?•‰ìòý÷v¸— ¬,YlM½s<ƒüþûïK–,É,Nçÿýw~ÓçË—ÏLðX)0H<ÿüóÄÁcâ¡@Š)(€†IèÓO?%sÑ¢E~÷Ýw+Þ±c“'OŽ*â·»cTpÈ`êÈ;7eP¿ýöÛ_|ÁWôäé§Ÿ¦ròÿøã7Þxƒ ô “.±cÇÆ…á‘-“eµjÕÌW-[¶Œ/¿ì%JDUätîÜ™*ùüóÏ#9¨¥÷Þ{IwΜ9|dÒe®­W¯ïÌ÷XPI“&E+pÞÂ3ÏB”+WtöìÙ_~ùõØ>øÀ±¬€ô¯¿þ2Õ"b$H@g~øá2é©R¥âÇÏu¬X±Œlr&Ë–-óØF÷Î;ïÀ$Ož<Ù³g71ylj†¨BÅ‚‘LZAq€K:5d Äã&‡ÃAù« ÿâFEä¹~K÷hô>”ô•ˆ€ˆ@Ø xÐ.kÖØÂÅ9‘Ù&+ø—|tJ‚_|±xñâtÚÌR/¼ðBÖ¬Y™¨øÕn¦: -8)ÌNâ×6R† &×ï¾ûÎ&ì"EŠpA1  æ:Ëb&Æ\q/~¾—¥Ìý\P iÓ¦¨f5fPÌÄ­!ŸL:C+Ó ]Jš8q"JÂ|‰`B‚ ¹øÏ|O‹B°êÔ©cºÄêke¸9˜8c¦1¢` Àê@43p Kh#s£i©¹óæ›o"D007k •†7*´ž“ÏQš µA?ùˆ€«T©Ø„0íp¨ÂÃ*ÊX€Ì·YPÊÁ éÓ¥KTÈ”DrI‡ÂCvcsò˜Dê‰á[–-[– ä‚9p«™N _¦I>²–“™ibÖÁ`‰1w‘ðñË× ó¢Ç8tܳ•°L•J̉‰åã?¦ZæN&cÓ¤CÅŠ1iÜ2¢P¡BfmGªT©¦NÊÏtÈäŠÑˆÝØPZH.hã˜d˜D™ÝS¦Li´‚1ÁÌþ@rñnæi¾âò5jÔ0=A !20«PÖ#¤¦œ>Ãùå,4Aœa@ ­óèì%Lù,¸Á„C1ã¹{5=D\c•“0ö8êó>Z_‰€ˆ€„…€»vÁÄP° •!ƒ•,™m}!ñ•¹&yr+iR‹ ÷îºÆ°Tùe˜bùüÍ7ß$Nœ˜ßÐfÂcùŽ~²ó;Ûø˜óJ”(A¦±[0MÖªU ÿÓ'«1˜´~ýõWrþüóO `{xÿý÷ h¦O~ˆ»­`eU >)\EÌô,gAI°À J 8 ÌJ\ Lüúwæé{‘Ñ7æø¯¿þÚ,Â`Ò¥E¾Œä`@á@Á+3‹:Ã\N&ͱb†ÙgÓ'ýwÌ*@Àù…“ïS8w¥K—Ž@0¶ c?@*a¢Qfw*ÁÓ„ú&S»é*j€ašÄn ø¬³ùñÇ‘MôÝÆŠZdF T}3{ˆ`KWéŒÑs$4 b /؎ײ,Ä£3Cæñ-#ňÂGê7OL\KôßH ¬YΪháÂ…)€¼Ã†ÄШŸJP'Àça¡]X×B+$È£¡ÜLüð¼ÌÒ(d†“˱<¹š§Ì‚hW×òˆ2ŽüꈀÄ|F¨öxòº»ÛÆFwö¬ýŠz›ˆÿû!ðû›_óL±Li®ÖT…ë[¦j× ˜’,Å`r%ñïTb~úÓ$v ì f¿ ×÷n]6·˜ú©Šk³o–éÂfr%Q€’üR¿wµ¯30DM3#:Ë2¸¾Q©“|¾u­–L꤫Æ3b6ÎÐtÝ#cnG~ aj 9Û’Moô„hËØ?œ²DåçñIËMÐIš3jÀX¡Œ‰›ÐË/¿Œ4Á”å:dZ¡ÃŽ"ä^3d³› ÍGg‹ 9®"’¦]ûiž”©ÁæšLÚ¢6ó·AC$ç™Rƒabú=Óô}vn³4 ÛŒ+ \„XÂþû/U%D@D@ÂFÀƒv Û*%! aŒ ƒúañÐÖ­[v lé m·y´£ì&‚£]ÿÕaˆúþ¥]ø-‚_Å÷y}÷‹U£þ¸ÔC˜I@v—˜ù\5*ˆ©¤]bê“Õ¸D@D@D fð ]–/·7ŠÝìÁ‘DÓñZ´(B—벘®ë1cæCШD@D@D@ÂLÀ]»Ù•mÂ5kÚ¯|ùìjˆÏÔ W³fµ||Â\÷Cdk.û`ÙÍûÐ5©BÀ]»°m6øH«~}Ëì{å„#s°‰hu&DèÈóçÏo‚)‰€ˆ€ˆ€ˆ<¯wAµà3 ŽúAÔ/ë短wÞ± û,ˆPnD{饗"´I5&" " "… xÐ.Y½zÙ]Ö’Î#˜˜o78ÞzÄ%"©J?âÚSK" " " Q›€»vY±Ââ?–åV­jGH¸U{íK§Nœ®lÑ£áøCbêGt«jOD@D@D ªp×.‘ç¤(D¬øúÚ½f þ#N¼ >q9B“ŸŸÑâ9'B[Uc" " " Q˜ÀÄwqu1 >ºå<Ö¡qŽsˆÏcmH•‹€ˆ€ˆ€DîÚãJÖÀž_¬ƒÁsõjtú)" " "Ó¸kÂбV·m[«M÷™M›ZƒsoL£ ñˆ€ˆ€ˆ€D: º<)õSD@D@DÀ&àY»œ=kñrM'OZAAz €žˆ€ˆ€ˆ€ÜKÀC\Ý-¬Œ­”)í G¤ ¬Ò¥­té¬Ô©­ÚµíPuJ" " " "Yܵ §±ä…˜.lôñÇv¯öì±bǶnܰcÓeÎѱé"‹‹Úˆš<ûŒ²g·Ãÿ»ËîÝVœ8!Ï’Åš4)jD½x"¸k—;wB†}ó¦õÞ{Ò.OÄ)" " ш€»vÁU4uªµu«µ~½}8iï^Ûîrú´ÅrÝL™l’’ˆ€ˆ€ˆ€DwíÂÊ\ÂÿçÈa»¸h‘Ý«‹­*U¬¿ÿ¶þúË>€¥0J" " " "Y<¯wáT£ë×ÿÕ¥K—,^J" " " "¹ܵ +s—,±V¯¶_œ)m^+WÚ׬±cܸÑÞs¤$" " " ‘BÀ]»°¨jU«aC«A÷™5kZi„IID@D@D@"…€»vaMîáÃQ^Žq‘éïoFèQÒ‘EŠ€ˆ€ˆ€DY:Ï(Ê>uLD@D@DÀh£]ÎíØqvóf=C'œ€í2y²•(‘• }’‘“X«;nœ},@¤¤;7nL{ï½Ëx³î¦Íµk_عÓùxëÒ¥½}úœ^»6Rº§FE@D@D@"Œ€»vÙ°Á*_ÞÚ¾Ý>àçŸCº1fŒ}D@á‘¶ÃÈüøÅ)R˜ÞܸtɯKŸ²eƒØœÐ4‡§M[ž6íÍË—ïܾaìÔˆ€ˆ€ˆ@Äðì3b§tÓ¦¶Xqš¦Y³ÈÙa´·_¿¹qã:=ÙÚºu_/¯1O=5;vìçΑ?ûë¯{{yMxá… •*ݺ|9â!ªE#àY»ÌžmU¬hUªôO7È©S'ÂÓÝ8{v46—trùòÍ›o­SçæÝ½Ú{zôØÕ¾ý¡CoE–O+—'ž€»v9tÈòö¡ò¿ÿýƒ‡ðtíÛG4­ëçÎmªVmÿ€® _9~üæ•+ø‰írÚLJWOœ¸Æo%MÀ]»œ=k5onf”2¥5lXÈÐ §ûÍ7Ö_X™3[;vDC£G¯-Zô6GZ+‰€ˆ€ˆ€ˆ@0>£ãÇ­9s¬™3ÿ!DœºéÓíÕ»3fØJGLºcYÛ7>‰nR»¢p|—;w®Ÿ>}çFID@D@D@BüK»Üºe*do‡¾Ïë³Ï¬€áÈ!…í.‘D­Š€ˆ€ˆ€DiÒ.Qúñ¨s" " " nžíBÈÝ »wß8^" " " Ñš€íBݾ}­îÝ­à µ‹`–,±:u²¦Nµ¢ÎÔlÎVòzDdÞ¼]}úìíÝ{O÷îÎ×N:»’¦Mw´isçÖ­[×®Íûî»u… ¯Êž}cõê|ÅéÊ—ßT³&Còñâ ûíêÉ“'–,YS°àeÿ£S¦ìîÒ…šÇ¹†(þ7ŸR¥ÈX”$ ï3g/8pþüÝ]»î8p[ýúd¢‡üZ·Þ۳璔)©Ùܽè?f~òÉÁƒC£|=(hqΜ+jÖ¼ÿcðN’$pñâÇõ¨T¯ˆ€ˆ€<ž×»øúZ5jئ'qc›6VT8/ˆ‰|I–,³ãÆ=:mšG §V®œ'ÎÜÜÙ¶-‚ƒ2˜@ŽÏŸìÀÒ`K™Ý»WdÊtaÿ~ÄǪ\¹ ´¯W¯­õêݾ14,øø¤37Î`;¸eííÕkcåÊ,—¹¸oß¼ï¿ß×·/b⸷7 iC… ÇæÏç«é|`l$Þ œÞ¸Õ‚vÁ#3;yrcÚÕ¡ƒ±ÇxLØ´§KL/|‹‡ 5öý÷'¾þúœ/¾èÜ“ímÛðòBc]صËq“Íøà:šÃÓ§ûß=ßawçÎsâÇŸûÝwp[œ=»Ó4ÐÉ¥KÃß•ªÇEÀ]»Ü¸a™õLúqâØLÊ-ZXmÛ>®„·ÞkAA}ùÐ!ÇâVƒO™2Ç,˜þÑGgY¹s7>|çÝ™ŽL˜°¾xq[Óܼ‰É$håJ ÞÛ¿¿);$X1¬+YòÄâŬíÝXµ*J…œSëÖùV®ìTˆ¦ÙR»¶ù8õí·y?2i&.XgCD`.®qúÒî¶m‡|úé}†¹¡lÙs~~¦×{æl¦+GŽœöøp2ö¥€tØŒ? Z½ÚÜIÜX÷£ì´2éÊÑ£¨1ûåë{ön[ä/H˜PÚå~ õˆ€ˆ@Ô#à®]vî´]E8Œ˜…‰SGbÕ%güù§½b7Š'ÇÄgŸõŸ0~vñòbqnà’%Lü§HaÖ`ñþõW,(+TX“??9~mڬΛwoXPP䰚ķ|ùÅÉ’õòÂfsbéÒ5yò ‡ÆÕ8¾`Áêܹwvì¸4]:t 9{z÷žýå—›kÕÂÖ²µQ#$Ôš¼y1êðšöÑG¡qÃE…e}°T¢ ëv×+F…û¨-N–ÚŒ|î¹€)Svuî¼"[6ô“©gÚ›oniØpiš4«e±‹o‹ýÞ}÷3ô´µ~}ünf]Ž’ˆ€ˆ€D|Fû÷ÛÅ‘)¬wéÐÁ>DŸ‘Ë/ö(:@²øµm‹° h¶#a5Á ¶#Jà¢EÖíÛ|Å:ÖÆ­)\xm±bf$þ“&!;p$™,°õkÙòÔêÕ'—,9åãsh̘]:±e{óæhSæÌ† [ê×g‘ŠùÈZ`¾=<~<>#ÞYù‹þ`­Ìæzõ®‡¾{È·Jªõk׎Ȧž€Y³4›ëÖÅÄ& |dTBÍøŒèØQX®ëœ¤}ïÃ8¿c‡ÿèÑÆeæ1Q`m8ž¢èƒT·D@D@D áŽïÎb£¦‘ɱby'Jtiöä¥ëçÎm®S'´ZOXD@D :p×.k×Ú›‰ÆŒñü6Ì>b:ôóÑiä꫈€ˆ€ˆ@t$ð/í‚MeâD‹©õêy~å¥Gë‰4UDLJ«>‹€ˆ€ˆ@ $nŸQ d !‰€ˆ€ˆ€D1J»°kš-6Ѿz*" " "n´KPEÔ76E;‰]2,‚Ù´)ܵ?¾NoØ`"ñ;‰ýD;;t RÜãkT5‹€ˆ€ˆ€D:wíÂÁ>Dv©TÉ"x[—.v÷8Ìç§Ÿ,ÂÓ eþüHï°ÝkgÎlmÜØu‡0am·5jD(ý(Ñ?uBD@D@Dà±p×./ZæÌŽŒ~ï=û‚¸ºë×ÛuêØ!^"=éd”—›œGxy]ã ÈàtlÖ,6<ß&*°’ˆ€ˆ€ˆ@Œ&ày½K¶lv,]ÇÊ‚ É”ÉzíµC#ˆ}ÒÐ'Ÿp â-sxê*(hØsÏEn¯Ôºˆ€ˆ€ˆ@Äp×.è'|Ë;ïØ} ­YCÂA­[GL¯BoåΣӧŸß½{¿~©hÊqVâv:§$" " "ðp×.ûöY;Ûku'O¶0"±Þ…ƒ‡·nµ ´úõ‹rH|«Vå$Å(×-uHD@D@Dàñðà3"x.ªå·ß,Öí’0Ãp˜Ñ?Ø xÑ1Q*±Õhþ?\;y2JõJx|¢w|vJ™4éñÑQÍ" " " Q€»vḢfÍ샣=¾Z¶´°Ê(„JT{Šêˆ€ˆ€<9ܵ˒%ARX×âñÕ½»}໦•D@D@D@D R¸kv±ÕèÖ­û½"¥£jTD@D@D@ ½×»èŠ€ˆ€ˆ€I’$>>>NæâÅ‹øá‡eË–=Ú§Û«W/Zß³gSíÙ³g³fÍš'OžU«V=Ú¶Üj{çw–.]Þ&öîÝÛ»woîºtéÒ´iÓ6oÞÞT^D@D@"€»vY»Ö*TÈ>vqÞ<+aÂîíßoU­j}ýµÅz—K(’“'O^½zõôéÓ§8 Ò>¦à|PPЕ+W˜zOŸ0nÜ8@1ò¯ÇÔ»qãÆÂ… Éä+ÓUôx¿…',8ݾ}›œÀÀ@*¡¶{G@[£ÚsçÎqaêá:cj8sæŒùÖ9¹š¦©mÅŠ´ÞÏS$œí۷ׯ_ÅÀpnÞ LÔCm¦ÔÀG ÐCZ!QU·nÝ(pÙet±bÅþúë/s  .^¼Hª29ÇŽ£ÿô>»Ž®yóæ9rä ‡ÂåË—7:FID@D@¢Ï>£Ã‡í˜.yóš™Þ¾®^Ý>̨U«ˆ]Ó¦MéÜ—_~™4iR.˜†™°¹ÀªQ±bE.°¬`óàAÀ{úôéMç>üꫯN:•k$BñâÅÍ ‡j 4hЀ|ðÁK/½”¸{÷$¾}å•W&MšÄ¦4ÁúõëŸzê©?þ˜œ7¢-ræÌiª]·n©YÀ]h2GŽéV+ ÂW¯½ö–!cóhÖ¬9ôö­·ÞBlÑÛ‚ >÷Üs|$Á‚H.^|ñEº:hÐ §N2«W¯NrÊ–-'NœxñâÅŠk̘1äÐU dÈá»ï¾s5ÏéÔ°hÑ¢ *0‡W)‰€ˆ€ˆ@ô!àY»°™¨pa«fM{UW´¨…6Àmqƒûûï¿cÇŽM{ô2[¶lXVžþù† úùù½üòË›6mÚ²e _¡ üýýŸyææc ïÞ½ 1eʧ£Ë—/§^“ÃuÏž=¹À2Q«V­{ÇCÍŸ~ú)w¡*V®\I¸q㢢¸øüóÏiÚÜÒºukTŶmÛœji´K—.µ eU¸´°$9-RröìÙ'N¬[·néÒ¥± tèÐW‹±c§¡$Ý6ŠÄ5Á킇L:9sfÞ1¥J•Š,LÿûßÿPK4Gͮ͹2iÒ¤ÉѨm0âþ¸Ô’ˆ€ˆ@t%à®]˜Ëœ¥o¾iŠ©ÿë]P3ž&úÇ8òäÉ“ÿúë¯Fm`nÁÂŽ;v`œ`õ†É™0a®]»Ð.«W¯¦0nl®«[ŒÉÛÛÛLê\3Ù>üÞà‚I—.]Ñ¢EæÛo¿ýö³Ï>ãk ‚ÆdÒtÌ!~8¸“cÇŽE|˜.Ý[-ZBŸ±¯Ð%s F H¨%„=ǨãëëËp0#̓»…Ñ«=⌠Ví0d.ú÷ïŸ?~ºG[|œ;w®ñþìܹÓh|a«¸À®síÒ¸qã#GŽ<Æç§ªE@D@Dà1p×.„×oÒÄÊŸßÊ™ó_«[Xp’"…õãC/B©2mÚ´?ýô“QÌÜ,(Á/ƒã&K–,¸EXð‘7o^¾Â…”:uj¼-3gÎä:wîÜÏ>ûl¦L™ *„4?~<~б€wÆŒ4Õ¢E ì(ø’H¡-àÍ•+·à2]ãFôP™2eŒ.Á„}…JèM›•¹ˆ‰üeè V܆…ˆ±P3 ã ßÖ«W¯dÉ’T‹; 7ž)H·i—þïãp©`iÂx (€¡…:§OŸNý}úô1£GÆ …”É—/¦©!C†p Ú mW¥Jî‚›Ó WŸÑœ9sj×®z‹¸Ç©–D@D@DàQðà3ÂŽÀj âçº&\E³fY#FXw׃>ŠÆï[VŒØ?êÔ©c¬$ŒÆ 5jÔ¬Y³˜ìGŒ1yòdœ#ÌÙ¬A9~ü8ß’ø–Iû–˜µk×’ƒk†õ.˜4L=hšZ° Q0ð8¨“[ŒA…ÅÂÜ‹•µ4pà@³ÕiE+mY(ƒÉÄm¬©‡NÒyŠ!/L&²ÐU\TH"ª¥BÖç # ëZÐ:ûY2mYäs;«XP6Œ·]b½ ‹~@anávž+pܶ;•*Uʘaè?²©S§Ný)ªxÔ<¯wyÔ­³Ë5árB‘Ö%D’³Rç‰A¥Š€ˆ€ÄÿÒ.l".[–E÷{á6:~<"F~=8aÌÀÕíEÛ6@„qv€³ èœmØ®#sÝ(îìCWÇE@D@žDQ×îò$> YD@D@Dà¿H»ü!}/" " "•xÐ.çÎY7Z6üÓMœ6ëׇ¼î®1¸A°8âSK" " " Q›€»v!î<Ás ªÂÁ‘iíÄž£§Ÿ¶’$±ó‘5™ˆžbÂÓ)‰€ˆ€ˆ€ˆܵ ÁÏfÎä@‹ƒ ãÇAD0ý2e8Ð'ˆÁ…°³‘аšˆ’<¯w™;×Ê;äLºM|×,Y8È>Òèž·qXÄÈçØ ´<Æ6Tµˆ€ˆ€ˆ@´"àY»°À…ƒÃʇ$⢂5cF;B]„%öúrR´K„WC" " "õ ¸k—­[­úõ­]»ˆßjýðƒÝNN™’è®ÄµÒ¤ùgLÄŒ¨kóçϘ¶ÔŠˆ€ˆ€ˆ@Ô'àÁî2j”}t+sÍÃH–.]ìµ/¼8„çÎaø9Õ(B›Tc" " " Q˜@4ˆïÒ¶mÛ( P]ˆPîÚåêU‹Å.—.Ù¯ B^Ätqr¸PÈ"à~žQõêöaF/¾èùE”—dÉ"t«QdqQ»" " " Q“@4ðEMpꕈ€ˆ€ˆ@¤v‰ìjTD@D@Dà xÐ.sç¯\yC™2>'N\ujݱã|Íš›Ê•óÙ»÷Â6Óo+Q¢DÕªUkÕªU¦L™Ö­[çA“¿¿Ÿ>}îs÷ܹsK•*Õ©S§ÐÊ,_¾¼U«V§OŸ~Ð.X«V­Z°`Á­[·¸Ý(" " ƒ€»vñ÷¿ÜºõŽîÝwuê´ûï¿W˜&¸Ô²å޾}÷ ´ÿر+£¯Î›7o2‘Ož<™w7Øðm«ææÔ©Sg̘±pá“'O’søðáiӦ͜9Ó‰%³eË–I“&ññÔ©S †½{÷"8 €kr†^¯^½Ù³gûúúÞ¾}›œ¯¿þº}ûöŸ}öYïÞ½ëׯ?}úô 6ܹsgΜ9TEj0qö6nܸuëV¾âzܸq”4u:©]»v… öÈÄÏÏoÙ²e¯¿þzêÔ©C™Ë—/£3¦L™²dÉçÊdÉ’…VLÇB1^ù Ÿœ;vÀ„d˜Ü›@”/_¾3gθ~µÿ~:`Æ«$" " ‘BÀ]»\ºt“ר±‡ \[½ú&Ó§‘#½ûî”%ÖoÝz.Rzù0.]º´hÑ¢Lí-Z´˜Çé–U²dI¬ˆ•òåËW«Vm×®]5jÔ;Z-RþdÕ¨ˆ€ˆÀNÀƒÏ(0ðê°a†?è ágöŠA¬Þ=t(úEÕÅ­ƒÅyqôèQ–°``“D Œ•ÀBrºuëæ*/={ödÖGܰœÅ@Ö—¸ÚcvîÜÉÊt€Š%·´eÞb\aI ¢Åã.Fމz`m fŠuìØ‘jYX³hÑ"§¼QÕ‰è)±,³·Ó=¤E+¸¨ëaÆQ9b YC&cÄQ…4áºÿþÜBŸM­«W¯æ#wÑÊßÛýÉ‘#zËùŠá„¶‚ø ÿW¤á‹€ˆ€D$wírëÖÛ·C<7oÞ¾qÃ~‘éô‰Ìˆìß“ÙÆ’råÊEîØÍJ^×]H¸Šä-ŠÜ‡¢ÖE@D@ à¦]îÌŸœUº]ºìöøjÛÖoäȃW®h©¦þxD@D@D@"‡€»vY¼øª¥oß}_Ý»ïž0Á_Ú%rž•Z¸Çî"$" " " "¥ xX«K‰%ëMžè$„ŸåJÌ‘Ç5B[„õõq5©zE@D@D@¢6wí‚L©[×úãë矉`f÷%Ï>keÉbeÊd}ò‰µxqÄ ˆHhìõ%ž}Ä5©–D@D@D@¢6wírô¨µp¡Ýe­½õ–}Á6ƒ… "mZB˜Dè€ ,ÈÖÜmR‰€ˆ€ˆ€Daž}FÙ³³ÉòöþWÇ›5³ªU³"ø\a¶ ›S{”D@D@D@D÷ÆwáA› G¿÷Þ?ˆˆPÏÁÆC‡F44Žq-p~DwE퉀ˆ€ˆ€DîÚ% €“-ÃΟo¹œ*hg•*ÑkuáÃyË&ľ’ˆ€ˆ€ˆ€x°»°“ˆàòE‹ZyòX«VýƒhÍ ×§Øñ#ç$s”1'&>Æ6Tµˆ€ˆ€ˆ@´"ày½ n£^×âÚþýû9…'´“£guVD@D@DàÑp×.Û¶Y³fÙ[x-X`{ŽÌ‹k–îâ½Ásýú£i[µˆ€ˆ€ˆ€ˆ@x ¸k—I“¬ªU­† ­ Ü_dÖ¬iõêÅÁÅámEåE@D@D@DàÑp×.è’  ;¨®Çñvϳîüsªô£é„j0ð¼Þ%Œ7«˜ˆ€ˆ€ˆ€D0ÚeË«E «yóz²v­í-âµ~}X»wöìÙÞlXRGJÀ]»ìÞm•)cµooÕ¯oåÎm7uð õÙgöQÆYéÒÙ¡_Â’Ð.Y³fÆ=J" " " "ðè¸kT÷ÈkÊëÏ?C´K¼xÖÎÖöíV¶lîܧ'³fÍ*[¶ì£ëªj{Î0H:t°&´ßI,ÝM”ÈÖ1É“[9rXûö…•š··w¡B…Ο?ÖTND@D@D@þ‹€»Ý¥²kWÈMæi??+v윿ÿÇ9Ò‹-*Z´è96&)‰€ˆ€ˆ€ˆÀ#"à®]Nž´ƒ»àJŸÞªWÏnäøqë‡8WÈ>% kVÛsÆ4f̘bÅŠ…±°Š‰€ˆ€ˆ€ˆ@XxØg´c‡}òâÈ‘!1è8PÚÇÇ1Â~mÝ–:í2¿ýöÛ¡C‡ÂzƒÊ‰€ˆ€ˆ€ˆ@<®ø.ׯ_߯ùJ" " " "ðH üK»0·m[ÛCIJÜdÉÜ_d²€·dIëÌ™GÚU&" " " a&ànw9vÌv ±#š%ºn/2±¤ìß%Ž˜óUPD@D@D Fx\>£Iƒˆ2¤]¢Ì£PGD@D@D@Â@@Ú% TDD@D@D Êv‰2Bi—0@R(C@Ú%Ê< uDD@D@D ¤]ÂIED@D@D@¢ i—(ó(Ô0p×.GݰaÃ&%ˆ2Ö¯_ðàÁ›7o¢mþ¥]nß¾=yòäöíÛ:t’ˆ€ˆ€ˆ€D }úô™8qâ¹sçܵKì4*"" " " ‘I@ë]"“¾Ú/i—ðSyÈ$ í™ôÕ¶ˆ€ˆ€ˆ@x H»„—˜Ê‹€ˆ€ˆ€D&i—Ȥ¯¶E@D@D@ÂK@Ú%¼ÄT^D@D@D 2 H»D&}µ-" " "^Ò.á%¦òјÀ72gÎòG÷?_ýõ˜1cjÔ¨á:0¾ŒÆã C×/]ºD„Ê0 S‘-[¶PnݺuÕ«W?pà@˜î ŽŒIÉÚµkwìØ1Œ·<¾b.\Ø·o_XêÿðÃW¯^í”ìСCîܹÃr#e¼¼ÜGzëÖ-/¯Ç_ c *&"üO)8‰…}åŠ=kÒª¢W¦ÀÕ«W™Ëé6·›ÎÐ×?~œvßR0ÏŸ?Ï-®} :tˆÚœªÈ¡6 ']ºt|åt˜(äUªT£“Éã ˜)@?áãöòêœ#Ç?º‡ü)xy¹xÑ~FÁC8¿{÷…“'í>\¸pãÖ­z.]ºyõªýøÎž½Î¸ùhÊŸ:e—ä®Ã‡/;…]aêZb$i—ùX5¨ÿ&àh¦æ­´iÓV¬Xñ¯¿þš1c7ÇŽÛLo˜dr§¢E‹ºÎXÌÊiÒ¤©_¿~êÔ©[·nMIÓdãÆ©„ârPälܸ1W®\Y²diÙ²eÞ¼yɹxñb§N²eËÆÇµk×:}]´hQ:uÌG¾2s*ÝûóÏ?¹˜={vþüùóäÉS°`Arºté’)S&*/S¦ ÊÃu̘@räÈA%… ž5k_aa>žíN/^œ!¿òÊ+LºLöØŠ)Bé3³5ÂeðàÁ%K–¤!ÒøñãË–-›={v !Bå… ¢rnY±bÅš5k€Y¡B"v3‘;vŒ2åÊ•ã.úfÔhÅÜeºôþûïóN´qò v“Þ}÷]çšáœc0kÕªUÓ¦Mù ÉHs2d¨\¹²i®R¥JäYPÿرc dÌ9<88ÐCrx|øpg¨Tˆ~2úû Ó*6¦m£o°j|ÿý÷ –)–\0OÏ›7ë† –/_ž‹ªU«ñ4wîÜÏ>û Y@&Ó6j‰1ý/X°€zõñÇsñÖ[oñÎIiÜHë!Š+Æ]ô 5ƒR¡$ˆÚ(†¬1Ì;=Ϙ1#¢ÁØ™¦M›–4iRg,Ü‚ÒÚ¶möÅãà«jÕªÑ.¨œÑÑJÊ”)Ó§OÏ0é#å«^½z5oÞÈ@ã+l!XY^|ñEÓ¥c¯BâÔ«WaÎG¸1v£SiÛ¶mMà`¶A_¾öÚk®Úeذaß|ó wa_áiR ^¼x¦5Àޗר+‚Š]Gf•R¥||}Ïĉ3;ÊĉþÙ³¯D¬òUíÚ›[´ØQ¥ÊÆ1clÙwåʭĉz{Ö¯¿iÀ€ýÁýÙU¿þf.’&]œ7WoϘPº´ÏåË!šÉiQ"# H»ÄÈǪAý7G»`ià—16îÁä`&0ó-³1 ¬ZµÊü¾w²ã?þ0ù‘8qbóCׯœ9s:wî̯ðnݺµhÑ©aŠÑ:­ƒ•ÜʌþÅ_Ìœ9Ó©–)Ó Ê1ñ¿ÿý· ¢ …Ÿhܸq&<,ˆ!fDÓÉ­[·¢¨\½HäÓÔ ‚‰‚]bæ1n&Ô_~ù…¹Ùh‘n;þ©çž{ŽLÌBFP‰³-ÂDŽô5jG fŒþ0æo¯ 2¸+_¾|Ží¯ð¶`Ÿà.83:cY1÷öíÛ—æÑâÅ‹ùH éiÓ¦ ÍGìCˆ3pZá¡ ¼Ða4÷óÏ?›2ˆ†¬Y³"#a2wa¡ÏP2”Ä3òöö¦:Cy‚ C_!1¤Q'ÖÔmQlóf[+°¾à®rzÈóeÔæ#^6šX¶l™ùÛà)`¾ru<±´…üT©–lÚtzîÜc¨œK}4í2f̡͛Ï"PúôÙ›8ñ‚®]ýV­ Ê›×v0uë¶»X±u{÷^øê«™þþ—W® :~üª—×hîúùç…¦éåËOV®¼Ññ%9ÝÓ…ÄHÒ.1ò±jPÿMÀÑ.LÛLŸ¬wáÖO¸jf_,+µjÕÂ7TªT)gö¢$Ú`šAñ`9ÀØ€·‚_êÆX‚èAÁ _˜5µOÇG}ÄÓ*S;S2Öæ6WU„4agÂÆ•Ã/x®™JÍ¢ 4טø–©”zPØ9°ðÎ4ìŒsΔºuë2“˜YYÃÁ m´ fzÎìkV˜R!*ÄY²óÉ'ŸIÆZÀ0¸Y‚쀕c 'ŒµaFôÞ{ïñn´ ‹ZPTôÜu“:ú€^¡“¸‹å®”7Ú¥k×®S§NEÁ ±è¨3€ËiåÊ•Žvá‘Qžž`\á ²vÇ`dŒŒ”‡™ ‡)€zCcªBòX1_M™2¥}ûötÛÑ.Ã1פI,g< \Ex‘€ì<ý)R¸jzŽÇÊTËSC³r–]²d &cs>#®G:T¤ÈÚñãýûöµW¿ÿþ @¨–2e64h°uÈyó®jÓÆ–G2,çýùç'^¿~{Ë–sŸ|2«k×ÝõëoiÖl{ýú[ù*Aï#Gl¿~(iWÔºŽÙ¤]böóÕèB%àª]úõëg¶º ]ð/páêQÂS`~y;*„ü(Ç"bj7s§¹ ³ŠYÂäÊ,Èò×å,•@â0ÕáÁºÀ/r†qî˜Ä<ÊäÍTÊ,ÎÇ7Þxƒ_ùüúÇN€†0‹aÍâ Sž ›z˜ ]÷I!¡J”(a¤ºÁÁÌè¦NR‚ » ߢT_˜8raòäÉf˜LüŽvAŠ¡i0ØÐ¨1ÕíbTˆcwÁ>„Èpêä+³lÈ ™ÆÓd ÚÅ8¼qØœŒˆtvgÑ ªÈÑ.ÀôÂ; ƒJ„ Íò ´ &Ækt -òD Šu aá˜ÊP'õÔðV­|Í·O=5, du—.»òçgÝ1ë{›¥0Ÿ>ëða[¤b¶)^|Ý… ZïâÊ[×1–€´KŒ}´Øý ߉ɛǸ-¸FÁá,ŒÀƒ!„u*ø;pú8ubcÀÖ‚G#V¬XÓ§Owòß|óMftfMŒFÐXIŠÅ…ªÌšVß²À]Âï{·~ò•³ùµñÿvÎ¥( £a±wé¦ if ÙCÚì +°µ°²La#XØÄF¦±°,lD°q‚X†$à‰7<%M`‚cÎ&“çû¹ï™/÷gBC ªÐ1Ýn·( îÊqƒGš0!?ôSÌ"M…ç„›Xâ#ˆD:G*Š€{!½ƒ£È%%Êd¢‚:a‚b T%(áÉàµ%xMÈo -¸yh´#2RÁ6wn¼2œÃ*’Zb3‡Áx88c^dºbvº5€G=Q–eäá¢ZRQI¼%²Ã±Ô%¬"ˆ ü+„¢?*„9ó<'ß?Z“s¯×C`ÅS^v°¤Ÿ8˜ û‰4á*c•ÔŽ¼#,Ø‚+µ“NϽÝFËÝÝ[dÝrŒFQÿ\ež_‡÷§§/Óéz‰Á`6JÇññÓááÕÙÙzìxüøþ¾Ò¾ÏÏ“Éël¶®íßX×øgÔ.ÿì u;D€Ü â[ㆪˆƒg .l¸oh;ʬ~ D îšÜ]¤é æAH5YŠv…Í‘HË™×|¾üzÐÎêšF*‰B¾¤OLú+ÕCqM·Ô!ùÈ@.HˆY,–LÛ>) ¨]vèð=%@̈Ž­›ÇcAYP»Ýæ?-U£lµ‡H†ít:xV6öNL‡\–e$¬Ó2LâÔÏ #,ï÷o²ìâààò—^­ÖùÉÉwTSXi§*P»T€æ H@€j# v© ½ K@€$P€Ú¥4‡H@€$PµKmè]X€$ Ô. 9D€$ Ú¨]jCï€$  T °Ö.¾I@€$ ¦ø°L¼2%(Z¸IEND®B`‚surefire-2.10/maven-surefire-report-plugin/src/site/resources/images/surefire-sample2.PNG0000644000175000017500000030212710461030155030326 0ustar tonytony‰PNG  IHDRÝn½VgAMA± üaÿÇIDATx^ìxÅׯcÃîßúÙ+ö.öÞ{o(*ö¨("ŠŠJ¤Iï½Bo  Þ{ï•Þï·÷„õzHB¸IÎ>}Š^Š€" (Š@+B`Ú´iå%È‚‚‚J˵gÏî ©Õ¸žŸŸ_QQÁQ`D8D4y y×®]-//)¢´´T›õÙ¨Ž¼yd]? ‘„*BÄ;X]šOÈzò’I“&•””dè¥(Š€" ´ÒÓÓ!µó1Ò)))®®®3¶iÓ&HƒP™¹áÂ~ƒÉªU«xÓ‚bF÷ƒÄá‚‚øúúzzz 5!UNNŽ¿¿¿³³óŠ+8=eïÞ½Ö9›Þ I^ëÛ»ÖlâXÿ4e€O@°\\\ââ⨠)žÔ—SV×­[Á ^²d â!¤MÖ?›ƒÔ“—L˜0!333V/E@PE µ “••uP^ÂÞ“eË–rÊ)ßÿýÛo¿Ý³gOx‰¹)na}±Ç÷ÂQ`¸ÌpŒºuÂ{ì±ë¯¿žæúø$8=ìé§Ÿ~á…ºvízíµ×Ÿ•2<’7þšÛ€ ZdýI¬eƒ'Yç7âçYg5oÞ<Ã,‹›… 7ÑÑу¶.„’V.Ž>žÔäÔ¤¡¼‚¥—" (Š€"Ð €_egg×ÎKð `}çÌ™ÃcøÁŒ3®ºêª#F|ðÁ ,èܹ3öø7ÞxõÕWúé'r™5kÖSO=µqãF~ôÑGDøá‡È!<<ü‹/¾€|ôéÓ–süñÇ“á‡~èáá!OÛ·oß·o_øÔäÎ;@n^zé¥W^y¯q8‘Ržþy–φ 2fÌ,÷Ï?ÿ¼cÇŽßÿ½cÇŽ¯½öÚwß}òè£þý÷ßäúå—_¾÷Þ{HKýúõ#yþúë¯p F†«¯¾ú“O>‰ŒŒ„Áº( Éyä½óÎ;T 6FÈ¢E‹^¶\¸RÂÂÂÞÿ}î)Èù‹V‡ÍW”—´‚®¥UPE@8 êæ%â?`Ežqÿý÷Ã-øÙ¡CÄ-·Ür '°sÍ5×ÀX Á³²téR8Äé§Ÿ? &VüÏ?ÿ|衇`$М3—_~y»víøò fº-ÀM2pà@lãããsóÍ7C#0ù—\r ²]vÙeÜlÛ¶„¯¿þ:ÄåÊ+¯„I|üñÇÜ 6Œpd{öÙgo¼ñF²â/ˬ[B$\/Ý»wüñÇ‘ÙÍÍM*H†Ÿþù\°zõê /¼pРA/¾ø"’AЀŸñ”*³âÓä.å%‡¡ÊšDPE  P7/ÁÆc‰ñFàcÀœcÔùÉ^h7Ðnî¹ç¸Ë%x ð—œyæ™06‘°¬ãè舗⫯¾2—?HuöÙgË:>ÖqˆŒW†»ï¾’ÁvTâ°…}-ÜüòË/Ç{lrr²äȽ÷Þ Ï€ÓP:?‰ƒ«ƒHÌÈ‘#aB\¸@xc’/ÁÃA‰wÜqÌC„‡BqC]ºt÷‚ŸŒ¬ã¬\¹òŠ+®˜={6?)}Ô¨QÂWø oÀÙsÒI'ASØcW¼ÄXaŒ‰1þEGWÿ“Ÿ±±­@_µ Š€" (­ºy 6KÌöO¡½zõâç† ¸Ç$Ë ^( {há%¼$‚Í®^rpèÔ©y‘ŸP –{„p-^¼˜{\]t‘_Jùúë¯%>ÄO|ò~ÃÇÍÈl9ãŒ3Ž;î8É“ÒÙ/ÃÍðáá,f4h®|ZœsÎ9¬ï_ü"\â×±ÉüyòÉ'³póæ›oJn|6ܰH3ㆿ솱^"{ž’’R Ò÷íË«ªâÍ–¾worQQBZZÔDÙIëîÐZ;E@PZ8‡â%¬•˜t„¦¸CØ”*¼F½õÞRYÐÁSÂæ‰Së…ƒÄ:™˜[\%>dO«y±YäÊ#sg«Mn6 Ys‘›"¬£á­©³8ü.fŠÆIÓ„—¼ÍTŸïã˜ïã „âIÌÊŠŽˆØ6jÔª·ßîëà0ÈÁar»v+;vÜ:dH¸‡GlR’Ä´¾lB„¸ØÆ±ú- o“CÍ@Cžú¥²-ì@*k õŸâ²çÜì‰5+ØÂ;©Š¯(Š@B ^‚d†——^ ¹¸¯ù“m\Ÿ~ú)EÙ/‚ï„E‰is"뜭S™…Öš¡™Ê憟5E°–¿NñQœ `… QcnÀÝ»ìÂÕù=áy‰Å'æä„º¹Í¾â ü?¬9M>í´‰§Ÿ>îĹàà0ïŽ;âøϾžÌÌÄŒŒ„ôtîYâIHIá§ü£N4ž!™™FÜ0©©üŒ³Ü ÂCbÊOÛTIIf*É¡ÖTÕäƒ-EIIÕ%fdpo&á&þ¿âQºå_µ–âªÅˆ7¤ÍÌä¯ÉØÚPŸÖª*Š€"Ð’¨›—°fÁ+3‡¾""¡#8WrvíŠŽŠ «+E}ŸGEFD’{¯ø¸èԤ؄Øh’×')ç¦DFF^Y6ù“IÃåý7Ðf) ÄK ËœŒ9_x×]£Æ:8¬~óMÿ¥K–/÷?ë A³nºÉ饗àD‹ rvÙ²…Üc×Ãvìqu uw'<[ž˜)á>9??Â×7hãF,¿Ah°úYYá;w†¸»Ç§¥‘§’˜¨(2!U°‹KLxxrAA„ŸŸMªˆ×–-”’ © '!ô(lÛ¶7·M› %‘h…î@›Â¼½yDæÁÎΉ»v!@˜‡GèÖ­aÛ·Žì¤ÎDZþ…{{#ñ«û¦®^µäAJeW6…@¼„¥Xõ8øe<ç ’òÒbÖ3JŠ‹Ê°¨u$9d~’Uy9¥“yá¡¥8Šèûö”Ʀ;º‡ûE¦æÖ%ŒQBiI1ÿ ŒÊ:lñIIH~Ø9’%!½þþZ197×sêÔ)§ŸÎ¶äáØøÌªªÔ’’”ÂÂä¼¼Ð-[|æÏ7¢ååí7n„ƒѦœxâÎI“x|ñCsp˜äà§I-.Æðû-Y2õ䓉ƒ¯Z³}òäYíÛg]·n±ðN//×Aƒ¦ŸþÄNpùî;蔦â¿|ù4‹ÿ88¸õí»}Ê”Y×^Kªµ]º@n"¼½I5ã '{¬s÷î„ þ‡pùùg^âšÔ®‘!U«>øÀù§Ÿ ’ž_a¯Ì²^  É92$dM·nO:iá}÷-ºûn’ äº>J-/'rbZLeÞµ×RG§çž¾¢»jÚÔ ¦•U@ݼ¤Ö#VÍÀ¼¼Ý9»rç8Ä%gì«(ÞSZ8~™WrZViQþþŠâ}åÅ¥Eyú^ZXTÀþ”Ý{ËøŸD¹ÕO‹±Á¹%Ää_YqœéJ`QaþfŸ¨¿yL]íŸBÂ=¥Æ±ñå%åÅ…%…D&sr.Èß-ÉùYZR“œñêïN?Lr_°)x´“gei!¢¢¤°¤ÈHµ¿¼¸²Œ¬,§àgŒä.u ù}Æ–±Ë<ÿqòŒMN7ä,/"%ò¸¤0_òG†Ý¹»‘¬Ÿ¢© OùY\hÔ—TŸ\˜Vµ·¤ö³i¦ÕÓ†ò’”üüí£FM:餉z±æý÷ý–. Ú°!*0箋¤œ¼/?ž—§Çcæ-¼$^òÀX}²Ã9­¤$i×.|-“O:‰8cÞqÇä³ÎšpÜq0~.é¥U¯¿>ñÔSùÉ?8›W`E‰ÙÙ+VL9í´êT·ßn¦"óeÏ?Ï–—‰§f¦rëßßH••å·x1IÆp´ .˜~á…SN=ò«˜×¡CTp0®”Œª*§gž¡h$äï²gž{ÒIN9Å¥wo—~ O-+Ãgƒ;gÛèÑä@¡;&M’¥å%-zRáE M!P7/9äøvççÏßè·üÓák±ñËÜC.yoJBZ4e¬“×Ìuþaqi¥¥Eëv„3“ÍÉÞµlKHJzVÕ¾Òéký¦­õóLÞSV¼Í?vѦ ék|ý«*K0ü˜ù˜Äôg{/î7o§gX’OXüöÀØ ž‘PŸ-~1;‚ã‚£R‚¢’#ãÓ6ûFCkf­÷Ÿ¾Æ/(&eïžÒA ¶ßÙmθ~ 7ÿ0q#dÂiK( L[bb“2¼Â&¯òY¹5¬jo)ŒùóvçíÍ~+ù…>KŸéÎ+ÌTdÊjßõžU%!1ÉŽn!³Öù/wÝ_Éá°en¾Ñ“Wù®ÛYVR“²=(6-#Áæ8ûŸýÖ„>ÓÝœ}¢`N‡ýžNC÷½ÊN<ónº R‚_>ã’Kæ\w'Ý}÷]ÀÚµ0̶ÁK&NÄêaò)§ìœ2^âøàƒ0ƒÉx#Ž9†ÏÀKœœ`ÂV¾õV øúkŒ=¾ñvDúø,¼í6~bþç\v^v·¬Z5õÿ«Nõúë,ýP4©!•Ë7ßjQ‡’jöÅ'° ºm‡ÆàÎ Ûº5ÜÓ3|ûvÄ£ 0¡-ýûónQÆþýË_xò„ÔÎwî\ÖhW­Š ñ]¼xÊyç‘!ŒjûرiôÞ;B¼æÝv«<øc””´©M+«(-&à%¹»r™æÚc¦oǺàÞ¸òéIéÙ8E<ƒãÝb^ï»lõΈG˜¿zG,ë2¿7)61ýÛqÿœé¾-0¶ÓàUX÷χ¯ë=Õ«ÿX¯E° \x,`9¿Lu}¼×âYëx¨ë?Î/üæÄ ‘{Œß8{ƒÿ“?/~ìÇ…×}6£Ûè øE£’ÿi‘DòÌõþ÷};oîÿ–ì¼ñó™ûË‹Ú<­Ó •7|6ãÅ>N}g¹E'¿Öwù„>P¼4`îÖ‡~XØoöÖw­ôIXáùXÏ…©Ù_þ³~ÒJøÓ‹¿;9ïŒ|íÏe 6ù„%>Üc³gdwCŒ€ +¼ŸüiñË¿;òÊè ;#®ýtú°…AqP«#ÉKŒ}ßÜ+¯jYï5~Æùç»þú+ë&8NÄK {?bïv{ÏšUÍfN:‰£|?.«?,£¤±ú°r¥ðB܇%•ïÂ…8T1|3'ò9¼f*8‡±å…-¶••{÷²%…­'ÎݺA>  ¿òÝwÓ÷ìI·â%È“^^ž¼k•ÅC´ðž{„èÌ¿ùf–®à";ŽŸXr²ìzQ^ÒÒ)•_PÚMÀK²²vý½hÇ|— [:cßí]feìÚµÁ+êéŸ8tÍýÝç­óŠž»9ìÑž‹îúfÞ¯SÝxÃöä—ÿyõe] Q˜¶ÆïÝÁ«ø»¯¼èüN“–¹…ìßÃr‰±Ê7Áº¿Øgé¬ Aï ^ýìÏKHûÙ°µ_qž¼Ò§Óà•! é™»®þxÚk.ÿøï5Ïôvtö‰Ùÿà÷óC2Wm ?ëÍñU•Åÿ×qâZÏȬÝù¿ÏÜr[×Ù¸vžèµøÛ1ÎU•¥ÂKúÌpë1qã³Ý‘™¯î|=Þ¥C·9]ÿÙðôÏŽ¿Mß2q¥÷{ƒVVUí{³ÿª/Gn€ˆ\ñá$âtí½š—œ|òÎ ødÑÒG\¡&/Ù2hPÆž=ÞsçJ*xÉŽ±cI…ÿFRž /IIáŸËO?M<÷\ÞBTùWÍK:v¤h^’šŸ•‘×{’²³·üùçDËÆ”©'Híàd¬ù9:ÊÎYå%mjDÓÊ*Š@KG ±¼„½9ߌqNËâ¯Ê5ž§½66!9óÁïü<ÕuGĹo_¹#<.-ó¡ .ê4y±k«$Ïô^ÒyÈš-þ±¼"=‚ãì±àŸ%^l×pxfä<çÀª=°‘üÐØä–xÎuxè‡+¶†Ív¼¼óT7¿hˆÎGC×là×¥9¹¹,Ç<Û{É÷\\}¢VoCŒ•;"ˆé“ºpsˆÃcà;O só†+°TôÊïËæ¹"Ë.Æ^Ë:T—ÖãשÚSòó4·ŽVŽpÜÙþ£©Þa Ë·†ù†'Ž_îAY³#ò®¯çNXæèâN“×zD¼;xåè¥^Îr¿óë¹iYD~Üã:ró‹)>²ë88"Wm³²ø›”›k¼ãåµîÓO ZÀñqìE…+ìÝû//aLž|èuá%¤ò<8/©Õ_²eà@ƒ—Ì™SÍKÚµ³á%Õl&+Ëc̈>’Ù—_°z5Üð’Uï¼S;/9ðâ1›fX¢šþ¿ÿ‰ËdíÇϹújH Ùûï+?-½›ªüŠ€" ´ËKŒ]£»r=ƒ²rv±4>9c‰[Ha~oçL[ã;s­¿‹WTû@«ÊX=ÙÆSŽ c[èôµ¾S×øÇ34KÂF×Å›ƒc’Ò -+ %E‰©ÄÙâ½§„uƒý 7M]ãçä➌íg×{]ËŠóg¬óg; .¡Ñ)©™k¶‡ñªm\R:IJ‹ oJHÍ@¼²¢Âíq:i…;HHk8eòr=Cã·øÃ$ò+J çºø³Ýuå¶ÐÉ«}'¯ôÝè5ÆÉ“eñ˽qÀTícI9ôhü ïµ;"¨NXl²³W${bØÌ[R”Ïwþp¨°&eÉü0?5ÜP müþû•¯¼ÂóãEÜÔTvf„lÞÌÚŠ±±ÔÁnÁŒcưý²2õÔS½fÍbmeÉ#l‰ÉKá/9(/©¬ü——Ôð—{lËÊ`âA16´>ÿ<\ zˇêÉKb-;fV¼ò 95:ñDuqýýw@À¡Rý*r›éÏZQE@PZ:â%–Oéb×wóöñŽ §”ä±5•PÜû÷ðŠ ïÂäóλFðˆ)rsówçÊSþ••áÅE8.rIKdó­îåAAxáÅHRQ\^RH‰p)TÊ⟑¼0¿° ÷bxù‡äÄ' áÄ1XB^.©$2/ÑÈR ™ð‚O9¥ Xž!?"ðÎi˜•%Cx|2l-{^ S,/AA‰G•å…ìšå^ùa1HÄ.*D˜J9lR"(nØû811©¥¥›zô€"L=å”S§Fñ&Kx@ÀÚ/¾ÀNãXСÛW±Ö6L>öXc“G»vŒ²à¶Û—HªyÉ}¯„þ’¼®PsÇà%åå ²èá‡åÌ•…wÞÍù-;vàb©/1–hbb’wïöY¸ÐØZkùgäs×]lU–))iéÓʯ(mÆò¡&æ^Šƒ½+¶Ö*šùÓ:Eu ùÕ3Ëë¼µ\ ¯=Û¢Z‰ò¯ü–·“<ù7=ª² ¼¤úæÚ%©v˜ ñSÌKL2åÿþÃÌVÓ¿ø!Ž6[Œ?æL~ÐúõÕ¶ÆÄ,{ñE¢ñÇÉË9%²BÎ{¹¹þŽŽ?^"À]ŒuœÉ“Y^!dÂ1Çàqaµ…·‹á¤¢8Ù_â¿lüCR¹öí /ñš9SRmûÈ‘¤Â7#©XWJ-,d oâ̼è"â *bO°ä@ÈÍò7ß4¶ÄîßOåßTyyr€¬ìªag+œlúÙgS |kÃçŸã‰1éqjmpHÓ*+Š@ G  xIV¶EG*#‡‘±Š/a+(š7e6÷ì¹¶sçy7Þ8û†Ý{/÷®½{soÿÆrªåLwwV¿ÿ>G¥-{öYN`[ýÁ³®¹†øÓ®¿>%/*«WÏ»ýöY×_?å’KvŒÏak¾ Lºè"â̽õVØ«-«:wžÙ¾½‘êÚkqZ*híÚù:jê%—l=²ÂæÓI^h¤ºå¾.Í:k>þXRM½újDBηÝ1nÜœѾýâ{ï Þ°aÊ¥—ι香W^¹¡GŠæEóuŸ}Fª97Þ8ùª«Øëj~/.N.¡Ž¨Éô‹/æÅc„QgI šT|E@h£(/9bd£5”—ˆç/–žM¯l1‘3Ý9b•pãK1iiÿú8섟QQ°“¨°0¼#D µœCϫƜ(ÉON‰ qq‘ÃÍXpá)!ü#'±rÖÈ¿©8ß:ÕÆ¼Ák¤Šˆø7Uh¨‘ÊËKR…lØÇñóˆÎ©¯©©È@Y¬4qæ=®#‚«k„q¾~r2xÍsèCë-–.kì­).\¹g^–•¯½fC\ÚhÏÖj+Š€"Ð2P^ÒºpÄ¢/j"ˆ1¿ÿà¾zû§¹¨añ$'Çó…<ËGjjýnâ?ŸÄ;ðµ?ÂkùÚßA¾ÛÇðòÀƒ¥2è…EfóK{Æ'x$Éñl%´&%–ux ž!vÎrR ç¬'Ûê"NËTjE@P”—1²Ñ€‚—Tk³Ð««–mÿ}Z3²mHnÒ j2t`·Ç²ª_*‹ÓãßËúÞ\‹9Xu oPNëJì¢eSË‚;îc&Ô®(Š€"вP^ÒºpÄ¢6Š—´,lœ´ IOß1aÇ´ð‚ÂOá9ËXS+Š€" ”—1²Ñ€‚”—4¨7p~{JØ[ÃÇ„ÅûÒ äYPEÀ~€—dee9ÈåííÀÉGòÝ“˜ë6µþ¼„˜ |DW/E@PE U €QÃÚ+/±/ÊSO^2|øp777g½E@PV„À–-[”—´H^"»(xÿF/E@PE Õ €iS^Ò"y ß4ÖKPE@h}(/Q^Òú´Zk¤(Š€"ÐRh/1Žio—ýìö­çþ’–ªn*·" (Š€"pHŸ—`A Z¼û÷ï‡_ÙƒçDyIëÐ(­…" (ŠÀá!p˜¼DH †üá‡>þøãO>ùä“N:éă\<"‚\ÜŸrÊ)fäC'ù¤H0vìØ¥K—Ž=zèС۶m[°`ÁóÏ?Ï™÷<‚süù矬¹»»5êË/¿LJJ’„Æ ›>}:Þb’rr2Ë=„fçäT—UdçW–ì­¬Ü_ÏŠ<šò’FC¨(Š€" (Mƒ@Óð¼#ŽŽŽlA(É“'¿÷Þ{"àüùó!+Œ#Flذ?þøC±C' G—ÊÏnݺÅÄÄŒ3fÉ’%¬ûà/aÊÞ½{ñ£áœ9³}}}·ûø¯Z»Ék £÷Ëý£>;hqÎò­yÞå9»÷. ÊK9M§(Š€" 41MÃKØ\ò믿æçç#8Ê_|“ƒŸ,‘,[¶ bù_³f ›Qºwï.•àŽÂ Žü|óÍ7srrXÂõ2wî\6|°$y²Ä:Ñ÷ßuÿ´Ë—_|ÑcÀµ?Žwè¼ÈáÍMoúõAàUŸÇ¾Ý7m¢SŽ»gIQ^CR^ÒPÄ4¾" (Š€"ÐL4/^àÉøöÛo{ôèñã?42±}ûöwÞyç§Ÿ~bu†/ÌÁTØ÷Êz ¯Õ°ÏT*à ~R}÷Ýw={ö‚ÂRÎG}ÄNîW­Z&‘÷íÛ»fíú7Þ}ÿ®Þzî}wûXçã?p|×!Ç|¹Èáýo{œð¦ÿƒ_éÞóK²ÜaEyI3é–f«(Š€" 4Æò’W^y…SLÄ·ÁnÖM›6q@™ÁOÖtøüƒ-®øBX‘a­'33óÕØMaK,ÛSà1èçç³!>÷ÙÙÙ /+-wqÝ2kñÒo÷éðô'Ç>qû wÞÜî{N~úµc^þæØŽcÞ[éÐy›Ã;^Ïï<óàKÞ ¹õý G»D= aŲ̰Èòœ¬½µÁ£¼¤¡J£ñE@PfB  x oÍ4¡pl7Ù±cGÍ ¡>ìxMË͉³Øÿ˜'BŸqìwÝNÿæÙ“_¿õ”'®mw÷ÕÇÝ~ñ7¿êpï/tè4Ï¡Ë4‡n!øûîìs¾\{é‡^wvI2&ÃuGNZd…•EyI6Ÿf¥(Š€" 4»ã%uV¦´¼<ÂuCð¯Ÿ^þŒ‡Ã#«:­pø`¦Ã{ýÞùÊáÍçŽ}âšãîý¿ã®?ö˜‹Ž?öâ[.½Ïá–—žüÝáõuo;¼îðúîß¾ŠŽù#0`H~qÅ)/©s (Š€" Z/\*ªª¢Ê3Âb¦‡½ûQÒk#/y%ùŠç"ž‰tx%Öáõ‡OC>{ì×S>íéðy‡—žq¸ûn‡[ït¸þ ‡«z|rÛ¨?^4ôÑŃîñš?|äØê¹jGFá´E@PEà´T^"UâH“´Ê²¸Ìèè-!kî÷Îïþoöò}½kèM=öQðIÏíhÿfÀeïF_önðåÂÛwö¿éûðÎ?D¬üÙwëo«— ˆ‰ñ>|”òí$Š€" (Š€= Ðì¼?„YO#©YgëD„£a «ö喤禧Å&¤íŠŽ[³5ÑÏ#Î{{ZoZ€OR¨oVZRFXt’_hzvrqq)%ê:N#a×䊀" (Š@S!Ð\¼„SÑ8!×€{÷îý÷ßûøøpÒë?üÀGòxmX¤ç€Ž¥ÿùçŸ \½zõĉyߘ·…9–7wˆàïïO osïííÍ=ç g`` !¼æÃ1'd;• )SV¬X±û ;p}&l‹æ%=Çá1œ¥Ë»‚jEåÞʽûöZÑÁ¦Ò•:óáå)šƒ£{åp^d›={6­ÁÏ}ûö#XÅžZ_Šª%ïÌÜ’ðÄÝåõŽ_§x6Ýb„wÔQ]Þ)“hlÇæØbΠ䞊ð¯ªjÿ¾ýû\NlÌE5++ɬ±ùˆ t·áÇoܸ±1"iZE@PŽ ÍÅKfÍšEÖíÚµ»õÖ[¹¹è¢‹N<ñÄÛo¿ý¤“N:çœsÂÃÃy‹çõ×_çQûöí¯¾úêN8{¾ëÛµkWRÉkÃo¼ñXµ¨¨¨K.¹äÜsϽçž{þ÷¿ÿ‘'9ð±HÕUW]pÁܘ_l”-š—Àí:uêôØc%$$Pk7ÿ”QKƯž²:4(޶›ÆÎÕOÞî¦ hÞ ' „’&ƒ˜úûzûFçŽ^8qeÈðE¡ñÕo’:[Wÿ”áŽÙùÕ£®§ ‹™¼ÛÅÇ ¸æ5Æ)¨fäâ²=+¶ÇI¸§§çÝwßýÉ'ŸÈÏçž{¨Äýbט–[ä?ziÐðEþ™»KêoÏÞ}K¶Tml9,>÷ï…~ȳpSô®Ç×È ªÊ÷è&ÌG“+Š€"päh.^²hÑ"²îß¿?üƒ#׸ç˜Wæôœ1ÏýÔ©SW®\É ‡ªA;°©¿ÆOÜ!|·ï˜cŽÁ¼qJ=”…¯íÊM7ÝYáÈW>\X> |ù·Õ0•{¯0Û{ÍŽ„¯F¸M\ ÃX»ÓøôµÌÃòá-ønÌVüó4ÌÖî’E®ÑÄ™í‰Mçõê/kg® géá¶OIÎë½ÿ^ ÷7Þx£Gñíh <Ï×特ëË¥„Tì1¬;4h±k¬£«±¤2h¾Ïº‰«¶ÅOZ:eUh@Ldˆð'xxGD*³`S´³wâ¤U!ð蔼ék×o[ï•ôÅpW~âë„_dgâHÇŠ0ÑÀ“4±ZB ¼·ÛþbÝWzÄ;¹Ç !˜íñZŸu«w$H–ÍÏ&À±ä{“ríÝ·®K¤G°ÁT¸¼#3'¯ … .ß?STaÉžµž‰3ׇÇ`DˆMÍ{ò‡UN[câÒ«©†$|àFh¢Ü—UTZ(uA*êE+$gƤäág‚,ÎßUP\—;yU9ÓXó6Fí.*ã~úÚ0þÎZ)Y±zË-·˜Òê" (-æå%Ë—/>ΫÀÏÁ=NŠdñ›Ïè°²#•‹Ÿp¾íÇ=Y—9ûì³q“¤¤¤"‹5¸XX2‡åÀ$øÔ0'ÌÞ§O"pÈ,ÓYŸm˼Ÿ~‚k?˜{ç—‹_üyu`œAG~™¼Ó/Ú0ê\~·¬¨lOçA›ØÈà˜ÆÜº ¸Ü7*KØÌ-Ÿ,à/üß7Ó×…›;0 KÊÉ£¸Ð5úŸ%æzDh|îk¿¯#Ï‘‹Â¸hµš¼dØBÿu;ãË+ —ÆCß,yÈsïÞ}QÉyýgžŒË;Î’À’òÊ]ùe8càCߎvÇÅbv'ñL@&æoŽ‚ZÁ d'MÿYÞ,áþ1ÉÇ“=VäW;ŠˆP“—Üø‘±Sä‹a®XzscG\zÁ÷ã¶™ÅÙðÙØ$WQéË\ý ýä‚BÍÜÎMæîâ~³¼Éç¯ù~vÕHœ=_Žp«¬±õû…ŸWWü×µS¿Üð! ˜ëí’Acý>ÝÒS,™ÁEà+Üä䗘㑸xW{Ä[oOQ^b¶”Þ(Š@ËB ¹x ÛÉöPîÙÉ=‚ûaÆñ}>nØqBœuëÖ]xá…N†TvœÈ2 µ]ºtá'ßÐ e+".Öƒ„∿„l™š¿üòËm™—ˆæáT`*·kÄ"ÿü¢ò~³}øKï±¼°´¢ëÈ-DcáO ´À7:ë×)Æ»÷u5ü80p¢p/Yêfì‡`ãş׼Ýwà ?¯rñIdåbGˆq×Þýû.ëh4ëàù¾ñiÕn€Zy ¹a€ßúsý}_;¥[–Òó»ÞúÖëŸê¹âë ‘®xÇð™WHü®W~]#”E®µ;ŸùqeçÁïéâ¸tKìÚ Xhy4~y¼dÍÎØÆ‡ƒ7¾öÛšs|Øj¦­ÉKnþØàa,”¼öÛºo’JáÌøflýxI™ÁKÜð’åÛâîøb1œï?Ö÷å-+S}fx>öýò›£¹/,݃S§æ~ä{º°[_°Æ±NÁoü¾þýA.w~µØ?ÆðZAÑùnÙðÅþ4®³oò_,¢¬7ÿX÷Û4OZ™õø÷ËgY|3\ÊKlPÕŸŠ€"ÐRh^?¨Y[¼#dÍ—„y/9î¸ãxw†{Ù¬ŠÃƒ{ÖhØ+°vÃ_8áp ¶›ðˆ×sÌœß{ï½jY:vìXPPÀÎBØhB6Z>þøãmÖ_§ˆ!8>wÉÃrE%sèÜ‚Ò>Óvz†÷ÿ6~0h#.„Ïÿvå'[¦®cY‡ˆÞ“ŒWN:|a|7qÙÖ¸1Kƒ¹™²&t™»±åÊNFÃq±X3oS›=ÝŒ­rÍw‰Â¥—ÅäµòVŽ‚Ð#£‰+ö²Rã¸ÅX¾ÁÐþcÙqîËÓ%Ïàø]¬‰àÈYí‘úcš—8ZN~v’DÀ[°Ø5QnŠÚ·_AÑžkÞŸ—’S¸Ñ'wŽÄaoJ©%•\›ýRÆ-7öyÈkAÜ\ßÙpàÉ’ËÖ–Œ]ÅÑ)ù_t7Ãmü%lo2á/a9i³¯ñÑl.ü4!Õ~ÀØìÔìêm<:ñ™‰ü-,©xÀ&‹?ÈÌøá£Îƒ\$ˆ¥\>ÔkÆ:Ãõµp3ëVÿn×}õ·µžá™3×G8ØÃ V‰™ÿ~œò/L‘”—üeý¡(-&à%ìí¨µ¾l~”!’½¨ÖßÐÁÉoîNå&22Rkx›Ã ç¤>ég“-ñŽù]@ž²ãÕLS9˜$‡nvºð¢r =ï•}9xŒÌm:#Üðá¼»¾ZüüO«½#,›OÓ 0f—¼= ÇÀ›®Ï/ªøz”áœØì—Šƒ=">QY¿O7hÍÃßÎ-¶sNXað’Y"œ¶¼dgÂÕïϽ·«ãƒ_;ñŽÌ(Ç@Ù…*WrVѱŽõ‰¬ÞKˆ¹¿$>>þ‘G‘h/ôßäWmÂ%„Y~·Q[nÿ|Ñ-À…Ë0^úÖì;¿XüÆïëÊ÷Tz†gÁN*+÷»¥âàilj>¾qºæƒy 6ž’QKoýdQ÷1î,$±šõÛô7²àúçY^Gú÷ ˆÎ~ò‡•¬pÝßméEoÎÀ«ôà7Æ6—÷º\ßyþ[nOªÞŽŠç㬗¦IʵkךûKØÀ„»ÎÌ‘$l¹uµ¢hßÛvÓÇ úÖIüLƒæú\ÿáü«ÞcîÒ…@ÜóÕ’¹.Õ. 3«ÄŒÂKÞžyÛ§ ¿ùÇúB8«Bø„øzéuçE$çm N¿¬ã¬>šÏ&YËùeÊNÊ"‹Çx¡YW½7gûý.P¨›o¾Ù½WE E Ð(^óxöÙgÙðÁ‰#\ÁÎV¹¸g…í ŽŽŽæ=!‡Í°Äç†wvØ€ÂÐϬ”â›qøÉ#Î2‘$ü%+Jd¢Ir’XgES†úÜ-KHxb ÐBy oˆðf5Ôäð8Yãu”7GúÈÖˉ2|úŒ3Î÷„¡›lO¦±äšæ»ð¸ žçƒ¥i‹[HI·nÝ$[ô„WŸøbvÓ–Ò¹ñ2K¢>ø`sd®y*Š€"Ь>/Á½-du†±›×}k^ßÿ½xˆ{™—u&ÖI$¼f4›lk&©U0›Rx”ãRpÏàÔaMêè^ÈÀ™rLv·nÝZŸ†Ç]ûðÃ9È®>ñ›6ÎþýûX71=¼l5hÐ à•ƒ}+**¦OŸÎ® ŽùjÚrÍÜxfì²`vÀÌÛ)ž†&¼8HíÓO?ݰaƒäÉÊUcËvÑLYAžx£ ÊÞLùk¶Š€" 4‡ÉK0ÞXP¨ISPÙ|5¬Oμœl¤DPm/©Oíš/;4Y=i¾üëÌ™³UxÙxGh†¼^«—" (Š@KGàðy‰Q.6|´ôËNHI‹ã%-]ûU~E@P{C Q¼äè.y´ÊÒ[–¿ÄÞ´YåQE@hé(/±/z£¼¤¥÷(•_PE 1(/i‘¼„so9˜®Í^|ã—½´¼þÛ>ìYn³8ºâ Ä @lè%î¥#€ÛÕPÐL¾¬tŠÓ"Z%ƒÎÞMÎúj•µ;X¥dŒb{%„FyI‹ä%§»~ýz^rn›×š5kœ‹‹‹9ü†·ÇÛ&uÖ”x1‡s}8õ‡·ë댯‰]’“$1'¼˜ÆëñjÐÈ 5yD€nK­9ƒƒoÅ·)’ŠËÊKZ$/á4L^“¶yAJ6oÞ̬”·£1m„:kÍÎÌÚ±‘ EÉÅÅ…´€lÞÔY–FàðóŠ+@OaQŠ€ô;Ž€JMMåæ`Z$=´¡™Ûs|©Žòûb$"M=÷—/¡!!ÔÖÊZÍ#̴厛ÈoÃK¨ 5²†¢åÖ®>-XŸ8µòkˆ@¬æÐ&C!ë®®®äÀ2P·²°>è^“—pªh µfÅNg3Vˆñ«YGÑmîÃký&IU“—Ð kŽó­¯c*/±GFÒP^ÂâææÆGn9e•¿œ’ÎQ`øÐcþr™ã 7"O™Fst=ÂçülæÜ†— 3U`/_¥¶\ÀB½sÒ/3 sža"(É#" nr#W‹À¤æ˜X“—`ÑA)$$„¿h•µVR¡WìJ‰‹‹#Ÿ*‹e˜[(LÁ­V-²¹In{ÎĆ—ˆîÑ×pTgµŠR™}ÐTW³ÛZk ¨h­:iÓÙk¦’œih¶dIïà„@f5"ƒurùÉS()ª"%ÖLìÿV › /A  Œí¶)ã<ŠÄ´“⢢à+¢0æX'MfNP[Ð8¦¼¤5ðZíäû8ÆgùøË=c µmÛ¶APØFD/ÃÀ0$!¨8 Y¹¬¬¬$²i†å)“cû7Ã6¼Dº%•/>²f¸@©2 ,@…Ø`Æ\.v¥…Yeº7ñÝÝÝŽ%2©ä)È`§[â ²&/‘`9#˜Ͱ àC•M…Ù•ÂIöQA•È|ð8è! G4¡/\’\ŒœÀ€bÕ0Ò2ÛÙüV`6]^ÂOxÇ6ÆÆÆ#àCP6f˜ÀÅ ˆ‘tCÑgE¥Ï‚­Á“¿d"žI%°ƒ°™Šh”"˜“V>9ɧ!è tZÙxDVæXAˆ|*•8´µÌah\iVkk×êÛñ(VІ—Р|–•1M¾"Ǿº-­Æ×ÇD—h 4¶–¾Ì=…Vˆ†ðWÆ1.™Ūºhå%­—È:ûì°4¨ŒsËäŒ­ŽŒ,0̳LzÐff½(4ö†ø¬qH<ßA›}¸A˹=ÅÆØ­îŠ`µòjDg̘Ág•øvP0·`w7g{?„¾Íú%º..L¯?’!œ=ð8 µÙÏÔ„ŸDà§ýcR‰““ñiFê;mÚ4Pb5 €¡‚°°ª èã njÍw£„ìæOô©ÑH(`‚@APøÉ'9Q<´‹L0r¢Šø®xžBVZ÷eÃKè’œ9 †€ æàpÔÌA}X¢AÝ•èžtF¤cÒlU¡KÒ‹¢@CpƒÒ‚*O)‹^Oþh)<æA)´9!!˜ÃK¸§éé|‚ÆåKpMò$IˆOï ­)ÆÖǤ‘3%"$yÒˆvnØZ‡jÙð™[Òïh,& è ³ âЋi#4‡ñЦA+h#´ã/“qžå'Ý“§èúcÏ-X/‘S\õ:ZÔçz,ŠtBƬ&Î,V5e˜ãâ»E°l† 0æ„Æ/¬µ¸†°Ê$$9xŠåf”䑸켇×ÊKèŸð3ºýÚG>ÿ+.tú0(Ñuj©#;‰Ì0-(†SfŠ\¤åži.æ–ÑY¸cR^ ÄÈ…!d˜C+°ÐyCˆÐ îQ´ÆSÞ.áСx„FQv¨,ðb ‰ ˜(Ùòˆbò“ÌÜN¦æ-Æ6º /AyäãP`½ÀÀƒ6˜„bõ¹'Ø!ÖX ĊȆeÅGB@ò@•ž7o6IRÉ2á²…†“ϰ£áè¶¹1Hx É…y# ¦ ^BˆIè;¤‹téb¨Â02ðˆpL6ß lx‰ôYÍ¡ ¦hMš†>ÈH%NI4~ÒÝP”@Z6à ‘¨¡Wv;Ū—ÐOP\Æk½Ž.Œ C‡þn_M^°…ÂA¥±¦èc ŠË ŽY^ ákÁð„²B¢©£¬"3t2Tñ”1ÃÃpÖ ^tT"×ÊK¨8óÁ0'¼Å1}ûöEQ9\ŽRåÜÕ¯¿þíåPy¼€„Ìš5‹º0†‹cQxÏÚ;Ø´bknv…€ /¡Û¢B¿üò ãüøñãy½N:²tph.ÇlvïÞ½OŸ>¼&Ž–_ýuúùçŸeÂF†¾#ÍØ(G0Ûa¯W^ÒJx cܸqãÞ{ï=lÌØ±cßxã 5ÔÄöÜzë­òÝ`;TÁFŽ6¼D(Èûï¿ÿÏ?ÿÅ»ï¾Ë€8,¥¥'·á%t{ô¾C‡|hòäÉŸ}öÙ„ i}êqΆ—óëÑ£ëåœ ÚL`$ às9|ðÇœÐ[ïºë.ˆ]¾Èéò|ÊêÇ„ʼð ¼#Ê!ž4Ÿ1‡èQ¬}d°á%¨Í‹/¾ø÷ß3¸uíÚuÔ¨QÂTPXg~<õÔSp\"|÷Ýw~ýú 6lÒ¤IÄ|饗HŽàúwÞyçꫯ–Ùv¨HÊKZ/‘}1œÉ'¸Î:ë,þBMFŽùÕW_õîÝ›Ï[0êÙ¡ 6²{Ûðº™Ü~ûí‚C¯^½°¸ÊKjå%HA %aŽ¥¼¤‘ªh“܆—ˆ³„~Šåà DÐæ«4˜Ô•{ØÉèÑ£ÉAz.×”)SþüóOÚîÈO¦|Êê´ÓNã ¤¼¤iËns«ÉKÞ~ûmyQ…š‹RÉd ×z5bÄqÿÅ_Èw”Dÿ÷¿ÿqCÞ¨0e® Ú[õ•—´^"ZÅ'¾XVd°cŒ:t(ûè£>üðC¾‰€ r*ïØ';nL¯¨ÉK˜ Ü{ï½òm暬mÉRk[¾ÁK ¯Ì¨p +/iZ ±á%²´Èo½õ‘\˜¸I8ïŽ{æµ'N„µ\pÁü¤Ÿâ¥g‰‡qÂc0']ºtùý÷ßéà,)5iÚö²ÏÜlx‰x:ç9äzðàÁxÔäK«¢]Ì}úŒ9ÒæÑO<ñóÏ?O™2¥AåÚD^»vmXX«W¯Þºu+7(ÒW_}U+elLAµ¦¥DÁÒf̘QVVÖäEám·Ý†94sÏ™3gò“¡¶9Šky2hÐû–ääd''§½{÷ÚHΜ‡a¦©³F°Ø ¤¦¦Ö÷óó«3šF°7”—Ø[‹ÔKžÉ“'ŸqÆâÏ`„ÅÈ=66–i‡Ùcß~ûíÞ½{›s÷ÈÈHžâ!20µ²™N:ýùçŸ{F’ÄÄDù)ñ¯¿þúˆˆ²•ŸŒ¼8Q°yù–‹øÅý®]»ÌâøI`yy¹u%¡˜ óˆ< g"ÅŒŠL å^RÕœHÏ„Y_F´ììl Óäœp Ȇ ˆ'N¢‘3©Äå@q sdN]H)QÄ£‚”kí½ ·Š"$›§øšøÓO?áR²®#SsŸ"‡áƒ!ЕrA›)#vZ 0/"KY$$pذaãÇ'+⛞J'24S‰2HsSÖSO=% bü¥ˆ@žyyy^TTD|òÄU6kÖ,kÊ4«ÀE*ä"BÅ͆–@%Á“V •ƒÔ½{÷P"Yõë×oÛ¶møQÒÓÓ­ •ûšõ¤F’vŽŸ¢uRSò$PfädKK‘„Ÿýõ×wß}'ê'Hrµ‰1ÁSJ”–â"DêkíÄBÀMB¨š4¢ûâ‹/Ÿ‘Dd²Li" XMÛŒJY"¤@ÊOn( HÁYJ”¶HÈh¦¸ùEë‹8’J¢!s}R!­Ùõ¨ Iž››Kþ¦ë 4D½¥­iVtyœ{B蘽zõ3fŒd%\’ЧܾÀH)D ­9RÁzè gfp\Ù€´ÍÞ!!ü´Gy„ ‰ úÓþP^bÿmT‹„ÌÀ˜13òlÉ’%C‡e¤Û_zé¥_|ñc=ƨÊ”ŸfÆb¢­Y³æÂ /¼êª«ž}öYé«$'­Mî;wîÄBªo¾ù†GLþHÂ_b2èàGaZsë­·2v0­_´hqp\øá‡ "˜Ð%—\Bà/¿üB>W^yåG}Ä0Aü·Þz«}ûögu9XÊ CVÄ<ÿüóCBB° W\qEÏž=Ÿ{î977·?þ˜TT¤oß¾6¢òôž{î¹üòˉ‰‘puu=çœspœyæ™?üðƒ>#ú}Í5× 8pÅŠHBãÆƒWŃ>Ȱ¾yóæ:0k§ Xn zæ™gv‰éèèH4jA]ø9qâDr£v“&Mâgÿþý‰Lé˜XòÁöðIrß}÷Yó"cÎ;ï<ê ë˜ä¯¿þú¡‡"Ppf¥]$9‚™DPÆk *1ÁçóÏ?ç'¬îrÿý÷F8´õ“O> P$B–/_Nqü$œUÑ–Å‹S7£Gf6Iï¼óŽØà÷ߟøTŠð•+WZ£}Ë-·Pwr€u}ÿý÷HÂ…¥!€ƒÿÝwß Èf’þùQùɼöÍ7ßäæ‹/¾Àׂ' TùIn§v˜£T4Ök¯½víµ×>ðÀX#ërÑjŠ£   hSÔ!‘ÍÁGÑTœ8<…ß üTЬ˜ KA”{ûí·£ZhõñÇl˜½ë®»ÛO|Øi ___Ø$ üÒK/ÑÊø#1{4+ŽC2Dµ¬×°° T_4I@[Êâ/ÊÌd€öº÷Þ{Y-ÂfS5ó)E fdˆØ8&­—3((Ð(ê"Úþî»ïþþûïT–pðI*ùå—‚ áD›={6Õ¡â€ÃýM7ÝDÓSºMAU„ü¥áè¼W_}5n°U«VÑ»ibz: o@Y šŒZ„TôBœ^< =X ¢$ÜGÈ1Çsâ‰'Òˆ80è)Â}IE-^}õUF:&• Ì£çŸ^˜Ó$0ArÊèËÄ¡áhJd@æ)eñ“¬Þxã ²dZ¡&?³EÚ!ÊKì°Qê ËDf™féÒ¥sæÌ5jiþïÿþOR2²Üu×]Ü0lÍ;Wii&L;0r?ü0!˜d›Å~‰É°eN—ñºCb¹È9…2¿^ÂàÈ8H|B0NÌá:wî C2‹“YfûÇdœEfÌ­‹ú˜mÆ>ò”‘á’zqÃ@3bÄlÖ«¦œŸyûlë´¨E´öà ½ÞÀ @Ѿ²8ˆz“3G!ÉŠ™Œ8?`iÂçè¤TêEoµ©ÐÀyóæÉê!BCpC/ i}Ñai/$a<‘-PŒ*ð:  AÅÖ¯_U¢P©Œ™šÖ„BCìå%vÞ@µ‹7aÂæÜ<Ã*0•qJF .æd29†:Œ;VeâÈHÇhˤùÕfpa"BffDÆNÃo°£XAk^ÂN¦¤ŒGd u`êong¡8†Q< ä€áÄ{¿ÆÃ¨j³§³ArÆkÆ&gøÙEÖ‚¢1 <ƒm½™¶&>`…£YA{ Á‚ÏÑÄR z"öÛ¼@»]»vü„&~ûí·.hP¢¸@l.,«ÄÁ,¡2oîÖ­›ðR \Ô„Ž‚]Yçƒ5BýhÖ­¤8l!ªBÈÂ… Á »ª€ ¹qƒ%ƒ€!ìÍ’´—L„:Pð±~JÑð-8¹‰и0xn ÀK«Y;±DrÂøå—_–¼¬ª0Ë—å ˆ9 ¤À.ò“?E³RŒàl½JC£®¨ }Dœpphq.Â8©‘YZŸ„Âht C9MRK|ð¡e1óÖH57þ^tÑE°mÚ”8ð jþš3y„óÏ$OøTCh7𠔇d&!•|:Mžâ ÂÇe¡.T\¼JŒN6¼D ‚¸ÈüÊì³HøÉ'Ÿ&%‚3M,Ò@Œl² ñÿI?E>0\€’§òkhA÷ÊKZPcý+*Nx1c8EæÄ…Žá‘ŒŒ•Ü`Ëa(]šq›$d…¿Ü׬?&D&.øEõ1ä¸X` dŒÝLß™Ð`àe Á†Á$ð3.S1‹Ã42¸°„Dˆ˜I†$±Læ…3ßLuì±Ç21Å,O÷1À2v‹a3/ÆJŠ“åv, LŒwx¹%¨0؃ì¤Ãð“¼w…x‰0ð9¢ •ÂRŠÓ»Î¨ŠOEÜï\ødÅÊä%Œ}Ì#å)"îþ ™£vˆaóò‹$„œQ"<†ñ)Éq· !≑ ¾Ð s·!Ì}MO6 ëÈ_F1ƒÄ)Âh±ÍH2SA¥dw“W¸Ìëˆ9ÁMB >謬ß# í ’”ËOÌ-.zL‹ä&vEª/ÞÃ%!$<ðÖ‘åžF‡„‘¼“&§à‹' Ó+pQÊæDÌ­8êÍ‹%J´.Ž{à‚¯P®€,YD²:‚b ó3› 3‰œ@G \AtÌ|Š1¦]`xÐÙæBLÙe%žPµÁ…‡Ë¢x(ý…ª‰¦¼ÐJèlèD-¥,¸£ô>æñ(•¹¹‡Eš€ KŒ=faTV¯Ðv”Pø¨ˆìMàÌÀÏd’E@L$Yä… ÉN<@HHÎâ<ãÂÓ€òSShf*nÐsq90æ@h¸÷ˆ¯‹I+MÖ0Š€’#¤øK ¤D‡4=úÌj¦u*¼w<¢á¤u„s!!ð¢ä&œï¸ãŽã/ü ^">!è.Œ:Òµñ— xüdÞò¿ÿýO¼_øu¬+¥÷vŽ€ò;o ÚÅcˆ”Ñ ›¥‘·3°@ÌÕ`$tZ™Ûa˜pkÁiÁ÷¨ì/aN&ó›‹ø2gb R˜sË¡ÄdÞC> UD¦w†`y„…`˜£8æ=¦Ý•GŒ¡Œe ‹ì€c¢9GZ1É\`"›ÿ©5c7S1&m2WfMЧ2Øc,Ž*Å` »b ?acƒÀ €Ï_ê…µÃÏ/lŒALˆ C0s8ì+!üed·ÙmÇ8ŽH &Ð8SŒ–Ly §± ”ËÎŒ³Ö¶AÐÖ<"&“Ny¿Cü% òTuZ‰&6‡¶à&»hi,ÙðA»ÈöÌ-B}!¸2¿GlVpiÀÄš„¬ð®ÃÔœla9òš «V ØOÀ_qBˆu‡Ná„ãýAK) Ý Ùç‹äÇ·.ú+»O`6²$>à€†í@=PNBÄ¡¿^P)Wt›½#f†]±s讘 Œv'>ö‘P!ð”m˜…Ú <%§Q$Üú‚{É–Àå“¡ËÀ*•BùÉ&þRÜ ™©É­—‡™|Ð(ü⪡idíKA²Ÿ&€“º$ËmÐzYy䢹éD¨¬cšÂC‰ð^P.»1ø ]å.îÑsô‡Å/›Wíè$¡¹qÊÒ~ a™bðçbDß¡'Bb‰¶=aiTVö€3 D%CñŠÑŸÊ"3UcK“,c“ÈÔ%g`!-LšM*"0ëM¨7ýˆR”èÑħ:L~p^¢oôYt —®ÄÖ"k4ôÞÎP^bç T»x v²Û†@ì(6€!^VgåbD㧘@Æ쥹§„¹šÍ«1’„ ¨¹Àlƒ ñšÈâ …ÂNÔd_=™“!ù0:0Ê“Ð:C8žÊhN&v Ê2»µ¹0 Ää’Š˜oÄpO¹PëkÉÈ â‘3c:?Í„jŽøL É„§R4òcŸ”QÉ©¬nÇPNnâÆ—GB@ÌÌ Ë'(‘§\æ 5J‘"j¾îýFeâÓ|ÖïÑHqت)/­Ø¼|$’¹¸Ž˜©Ë `É“²`6h à Òpò–“$3HJ7²5[„’›ï\Ø´‘„sQ}²5Bp°ÓVDÓ€ŽÖ ¤,.H§¸…À_à•íÃ6å"¿lrh5JÇs µͱ~­šEÑR¢u_”Äb¾=DEÈÁT‚‹RÈkÕ[šC©‚ 9‹3ƒšJ3IYæ[r@žØËšïãÐ}¬•Šî Š˜`hƧ PK2ÃÄ dxTë{æ’ŠKh9[W e›M¯Òˆ JÒŽRY‘Ê á^Ô›*n *BÒ”ËOà5½D2DˆßŽ„’êôÓO1ä4UŽŸD#ÄvԤт6Œ€¹¸Ö†1hëUW^ÒÖ5@ë¯(Š€" ØÊKì§-TE@PE ­# ¼¤­k€Ö_PE@°”—ØO[¨$Š€" (Š@[G@yI[×­¿" (Š€"`?(/±Ÿ¶PIE@P¶Ž€ò’¶®ZE@PEÀ~P^b?m¡’(Š€" (må%m]´þŠ€" (Š€ý  ¼Ä~ÚB%QE@PÚ:ÊKÚºhýE@PûA@y‰ý´…J¢(Š€" ´u”—´u Ðú+Š€" (öƒ€òûi •DPE@hë(/i‘°lÙ²7ºè¥(Š€" ´.”—´H^2lذààà;wzê¥(Š€" ´ 0j!!!ÊKZ$/™4iRnnnbbb’^Š€" (Š@«@£¶{÷nå%-’—L˜0!333V/E@PE !••¥¼¤eó’8½E@PVü*;;[yI+á%µÒå¸ØØ¦ÕU›Rš6ó&ÈÍJ¾Zën-½À9 ^‘› š…" (må%-’‘ˆÐæ:Žè/miüoûOžñ´) ùij£%;;y÷nþ%¤§W—k'è¿ ˆü·ÖH›˜ž.Âó/6&¦XlPm í*CP;D@yI+á%BRR32lþARS!5tC5Ò %IIÑÁÁ>K–xÍ»söì gg;¢&BØ4•žž˜™™˜–—`M›¸¢ WWÏÙ³½çÏ÷˜2%)'çP¼Ê’aüTãSSá|öÅÃÚ„_PûF@yIká%11)ùùnC‡®éÚuÝ·ßšÿ6tï¾mÈ€U«b££±¯t™ .IYYË–M:óÌCV¼òJZe¥áu°‡ Ú”šêïâ²â³ÏÖuï¾òã£#" BvÀÉÁMJaáâ×_ààð·ƒÃï9UUžT 1ÑÑ[GŒXÝ¥Ëê®]] ˆ‰ŠŠÿ/×±‡z« Š€" ´”—´^’YU5÷¶Û  £þ±†¿,Öwâ1Ç̺⊠_}‚·CÖt0ÆÆ¿èhãŸÜÛ¬P˜»0$š%‚ð’ uëf^uÕxK)k;wNÛ³Ç&·ê"¤›"¬K±–Dò7ã[E«Ä:«ƒ¬Iâeg»;Ø"Õ÷÷ÇWdÍKplúã¹wܱøá‡g^{múÞ½²”óŸÒ þá _ôàƒÀ8ÜÁaε×F‡†ZV3hEE@°”—´*^²ø¾û  “Æ{¬û!›ÿøcåÛoO>ùä±ã\ÿü“%Ì-N…ä¼·„ïä“ç\wݤsÎÉØ·Ï^–®ìmDQyE@hÊKZ'/}üñÌì¡••nü¿dŠƒCö„â·p|üqV:dm‚už²ô3µ];X‚¸4°úÁë×O¿öZY’˜ÃfÞúž=<2ý%k?øÿçܹ,sñ]wEøù±¢´â¹ç†ZJZòÁå0ùŒ3ü—.lÃoÉØá86ˆ&’àïáç–?þH-)à´XýÖ[„óT²2|?íÚ9wébl—IL´ö[Ô‡—°¿dyçÎ# ÈŒ‡Åš½{‹„R 5+¯É“ã³²úXDÂex¡,êØ•Ò¸©©E@hã(/i…¼„% xIæ¾}Xî´òòM={Ê:δ“O†@Vwì¸ä¡‡ÜûõÛ:pàæŸ~šqÞyiØá˜m/‚7nd vk=ÿ–[Ø9»åÏ?çß~ûŒë®cõÇš—àI--zâ‰Džýõ¡[·âI-/_Ó©ÓâtïÛwÛ_QÄüÛnCˆËÒçžÃ_áÀm3õä“I…´Ž÷ß¿}È5ï¼3©];Ì?…º÷ïO&ø$Ö¾ÿ>qø·òµ×vŒëòí·ª3õüóý.4¼/V{MêÉKV~ú©” ÿØ]Uå³`ä9íŒ3Ö}öÙöáÃ]ùeþµ×úΛV.]ºÌ¿é&"ðoÖå—Còp«$ñ‚±¾0ÜÆÇN­¾" 4ÊKZ'/Û®³í¿zõ¼›oƦâ!pþî;c¥Æò~ /ïdìߟ¾oÞŽ¥If_uUÈ–-l(ºd*Ïö—”¢¢å¯¿^½¿ä¡‡XÆÂcT½+¶yú¤æª(Š@[F@yI+ä%¸°î8Ì…ñÇãô쳜;’œl¼cé9mÚºnÝœž~§ž có„…»°îÃF“¯¿/Á;=ó ñM¦²Õ#'‡­æþâL?óLþbÔ7|ñûg«ßUILÄ#â»xñ†o¿%‡ÙW^ ™ á%Q¡¡0•å/¼@þ$œw×]Q¾¾ì{eʤÓN3y „fçôéD½PYušx ¸UÈgùGÉØÆðñ—L>î8Øÿ( 7Ë?zÏ™C]¨2hàã^²ðî»cþûâq[;´îŠ€" 4ÊKZ'/Á¾Î¾þúW^É«­Ëž{Ž… Þw5V=Ø“±ö£°ñ˜öy7Þ¸õ¯¿æ¶oO|x ¶?kß>v™,¸ë.Œ´ÁKXv—ÈK+rÒ«å=añ—jæyçÍ8ÿ|l¶ÓcAwØž‚šBØ Bü›yñÅ›{õZÙ±£,P¼„]3Ï?ŸH¸àž{¢üýY òž>Ýš—^–Q£ "¤B·>}¶ÌúŽû€ü£F>sçÂ~ÄOR§¿Dä7E……Öë8Æþ’„ço¾™röÙ“O=y Pð3À¡8cïmt´ÓóÏÿËK"#kî·mŽž©y*Š€"Ð6P^Ò:yɘãÇØ³à²qcTXëò0ë8ëÖá~ÀO9åÏ©S‹«ªœžzŠŸÂK ILÌêwßÉÒ'Ÿ”Wx0ƤeOkbNŽÉKˆÀ–¿eËà“?~cÏžq¼Hœ“ÃjdE6m¸ŒObçœ9{“—À9–=ý´ìz™w÷ÝQ,À3&~ºé/áýdß ¦œz*’ X¸¯¯ñ’pY †­'äÀÆX›lk®ãD>ؘü‹7xÉ'Ÿ˜ûKXÆb] îå¿lÙ¶¡C7tí:ó¢‹Óð!v{„L ¯aï6³5X7—´ÍñRk­(Í€ò’ÖÉKFŸpVœw}±Ê†SÁrÚ‡ñ–ìîÝcưăùŸzÊ)^3fmñ½÷Ê+'˜NõÀ­ÂÞOÙ_Â4ãÆ±fKÀí‘R\l½ïuý§ŸbÚÜw´cÖ%—®^ ÃØ1aÂøã§rÀëÀŽM¿ÿ.ûKø9\¹Rvu̸ä¿E‹2I5nܤSN16íØ_îé‰7…$°öƆº»#\>ÐÞC6މ;¤¿$&2á9sÅø—‘¥€ÖXó’‹yÏšÅû2¼âk8-#ƒ‚¼çÍÛ9y2›Z ö“žÎçxøé=wn¤Ÿ_d@ÀÎ)S¸ß1eŠá¿±lõ`Ï)‹2!®®þ«V±8•™ü¿ÿá2™xì±¼3ÌÙnFLËËºì· ÷ö†Q¨Ïüùžžlš!К”È=î0//)׿µð]ºªäâ>†0&@¡äœ7ÖŒü–.eÃMàÚµ¬4»R|ðOv׆lÞì5g¯7‡º¹é“6:^jµE ùP^Òzx‰,Ó¯òZÞæ5—olµè€×„8xØ© ƒ±IU½úCÊÄÄvfää$XbÊbqp»%Ð4êò‰;r3Bðaà§±8øI)ìœåŸqoL6g°ucîUWù8:÷¹¹¬-ìÐA¶¸.¸î:.3÷Ä™'$™°¹„L23aò–íGj,rèªË(¬þÉ)øHhF¨v{ðJ0.*…üıl[«·¸"ØRKéÿâÓü]TKPE M! ¼¤•ð±£Öס>,gÏ&™õšˆi˜«Í°éÖÚ¶¬yÚ t ‚äÀ'ýX ’³êÄMõ&’3ÏÄÑ™¨&5êõajvVjü¬U*›JUÓ«×k¦jSÄVVP#†€ò’ÖÃKŽ˜Ò4AA|''‡SCV½ú*;K¦^yåÌË/_ùòË._ºmŸÖÓÝM²f¡(Š@ D@yIkà%uùìñ9%Þ²1…Íì>ác±†Wy32 %ö(±Ê¤(Š€"pDÈÊÊr«›è6)úäÉ“óòòØÅ‘ÜB¯””>@“••–š•Å}rJJrË­N m[P{B£–ŸŸ¯¼¤Eòšþýû{zzºê¥(Š€" ´"0mÊKZ$/qwwÔKPE@hE)/i‘¼dŸ^Š€" (Š@kD@yI‹ä%*´" (Š€"Ð*P^Ò*›U+¥(Š€" ´H”—´ÈfS¡E@PV‰€ò’VÙ¬Z)E@PE E" ¼¤E6› ­(Š€" ´J”—´ÊfÕJ)Š€" (-å%-²ÙThE@PE U" ¼¤U6«VJPE@h‘(/i‘ͦB+Š€" (­å%­²YµRŠ€" (Š@‹D@yI‹l6ZPE@h•(/i•ͪ•RE@PZ$ÊKZd³©ÐŠ€" (Š@«D@yI«lV­”" (Š€"Ð"P^Ò"›M…VE@PZ%ÊKZe³j¥E@P‰€ò’Ùl*´" (Š€"Ð*P^Ò*›õ¨UjÿþýG­ì¼wïáˆÚ‚*Ø@<4º" (v€ò»h†Ã"33óù矧wìØA&yå«=\|’=B3*÷î;ìl/!Â<ùä““——Gééé§Ÿ~ú%—\²|™Sž*ŒM~ÉË·ÆÕ3ó­Aic—ïÊ/«güCG+,©ÈÌ-¶Žóúïëj&)¯Ø›”Y á , .Ÿþ¹üüôÓOùùì³Ïr¿3,ÃÅ7Ù;<Ë#$}ÕŽø‚âŠ:…Ü·BzÁÁ¨Ð2÷¸ ž‰Ñ)n¿ÆŒsÌ1Ǽøâ‹ÏJsPEà# ¼äÞÄÅ%$$ 0 ""‚|wå—ö™î9džïày¾¿MÛ1qEpqYe—Wìîºë®¬¬,"ÆÇÇ?ýôÓ’â゚ Ûü×|¿! ü{Oö¨G6UÛCÒ'® Í-,¯Oä:ã¬óLúc†WÑRwuåfFsssëÕ«—øHüñÝ»wsSQ¹oúÚðߦz¾üëê/†¹‘mZÎO­¥””ø×¦Zý8aû ¹¾Í÷ýaü¶ Þ‰u YŸ¨Ä­·ÞZŸ˜GP»B@y‰]5Gƒ…ILLìÝ»·——aq7ù¥ü2ÕÓÌ¢°‹¾Äbÿø\ | sqéž¾³|f®¯¿s\zÁW#Ü>äBàÞ}û:öݰlkì7–VþÃx¼"ƒx„¦_÷ἇ¾YÝáçäÕ!~‘Y|ã´Ä=ö“!Õ†ÖÕ/uÚš0)åÆoÄq œéÑG•@ìnPÜ.¹¿ý³ÅüÝ]XöÓ$îßúc}`L6!x®xgÎý_;½ÛÏ™Ÿø$¦¬+-¯Dþ³}ÉÈ-¹ú½¹wå(’pu ~àë¥t_öØwËR² ÷íÛ?x¾Ï_8Þõ…£o¤ÁÌËÍ?e„c€uȳ½VñÓ;"ë±ï—Ýþùâ~³½ùùæŸë¯û`þ­Ÿ-’˜«W¯îÞ½»Üñþ“ƒ£[ŒWø¿¥ü9ëËÉW ñ‹Ë÷|9ÜíþnK‘™Ÿs6Dž÷Úô'Xáèc-Æ7c¶îM—ÏÚ]ÂÍ<—(*uÇç‹fn7Ù·´S`‡/oøp~p\!CæûÝñùâ§{®\³Ãà1å{ö~ó;e]ñîÉ Qo¹åë‚ô^P€ò’ÑL^òË/¿xzt$29oà<¿àØ]x|#³±èöšäáeX}®¿]º§rïÝ]–Ìu‰ŒO/¼ó‹ÅQ)yüûnôVžžþügŸ¤€è ^HBî‚ÍQXGë‚·ÄÌX6s]Ì ¬b/ºŒpó±˜G·X3òM7ÝT“— ]àçìXZ¾‡Èt_nmJvqŸé^û÷í?íùÉaÂy—3}}xxbî·ñ¬¯á‹ü¡VNî±sœ#%ÜÂ{rpŠü5ÏOBéî´ÛÊ×R“—\óAÞäbsÆî’Ÿ'+brÙð’ÀÀ@óQQéž)«C]ý ÂõÏÒÀ…›¢¹o œë“šßw¦÷š fü=•û¾c[ž>Ýk%u·© ùsÐ\ŸÍþ)üûq¿N&èÚôu¡Ä),Ùó×<ßÐø]f{/uµÎÄßß_yÉÁPÕpE@°g”—ØsëÔ-›5/!6¾·­ß,Œ+äƒ?gzù[¼\Oü°‚ù·£·qï쓌]çÖòëÃ?ôíRþ.ß7kƒ±*4}]¸Ó#ÌcŠÙ"zNðXå?|Q@è OÏ{uzYyåÀ9¾™¹ÆDŸ«V^2ay0KK‰맬 !Ú®‚²åÛb ²À÷çI†Ñ5çú’_tÖ¯ÓÞc…µTܳ1h[púÔ5¡KÜbÞíï왕•[2nY0¹m L%ÂJøÿÚ ™¼*¤ïLc ¬&­ ™°"8à@[+/±AU*Š@KA@yIKi©Úå´æ%)ÙEáIƮ܂ÒAs|ròK™²3,ÑXÇY°9ú?Ö”T|9ÌŸ.>)¬¼TìÙ íøÕâ!¸ë+Gþ.ß?Î)˜›ikÃØŒÉÍ=VF%ïfù`ÌÒ l!¼ÄÝb¹àÝFma9Ö²»¨zƒj­ë8£–°ßs»Ê#„,L@€þYž¸†Ôo–±†rêsÕþ¶‘30&‡ý(°+ƒë±ï–G&åE&íî=y¼³ Ÿ9^ým-”bõŽ„.#Ý¢’óH;~EALÔ6û¥À¬AdMD~Dg/ržº&Œ½±‘É»¿¹ÅŒvˆuœ¢²=“­ü%/ø{§ã&ÉÎ3XZbFaxBî½]—pŸ_\Ñi€±>es\z›– ^á™c—³Œ…¯è·i;íâ²=p΢RvÏßÝw–wDÒî¡kv$°¼E„ä¬Â°„Ü¿v’¬”—Ô„ZCE E  ¼¤E4ÓA…„—üñDz¾€ÒÐ}ìÖŸ&zôœ°}é–Xx.„Æoï:jËŒµ¯ý¾.¯°üËîËõ^I“V†²/Á3<£—eà6˦ ˜Ç?KŒÜ˜‹/¶ì„øeêN6‚@>²yÅö¸!óý]ý«< ‰ÛuÑ›³X92E¼ãŽ;Ìu^Ï‘ð~³½¶U³~"ØÎ°Ìߦyö™¶Ï÷c·•UTB5Ø×Òk¢k~QÙža™øl Vl2kYQb[ õ8Ç穞+æ:G²cÔ’ÀoF»_òñMPФÌBòDàÞSv.Ü û1¥bG§.„Ãi¨á7|dðÖ_(‘T&XæôÒÀo”„...?üðƒÜ?õÔS±±ÿ®•àÿ€úl´l%áŠH̶È7UŸižN[cñy,Û×cü6ÖÑ~·ì·EQ¿NÝéð/’vêêÐ.#·ô¿ ÛÀÿAÎܳ¾å™œ×u¤!½§ìøô|??O2ÊÂCSQ¹JqÛ~š´ã×i;%Ï]Ç1[_oE ! ¼¤5V-¢ÂKxuĈååÆU 3~ˆµ;1~l€ À ·ø¸Ç5ÂþV¶#pÏû·øWØjš_\Žƒ&ßüÅØ'frÃS™ˆ³+–M\ýSÙ ËzGná¿ïîfï.}ìûådKÌŠŠ Þ >î¸ã22Œ¬xçºë®óõõÝ»+!³ˆ×…¬+€ˆÉYíÏŒŸ-±’ÔgÃö`ƒåPVRV!BYc¥®%[b`TüKße¼“œU„#$&­`ܲ \,„`×Wn_±-’a]\Q©áƒÒ’ÉÞ}û¥¾®Ø¯’í8\Ône§Haaœ¯sçÎþØcMœ8{/?÷îÝGé¹ÿB·‹¬xI;k·QÓø]H;¤ ’„-&k=ãÒò­“{|N#sk0p¶Ë8{'Q}V…hZ6ãÀ«ÎøÀ(‹§ÒF¬pe¹ÇÊšïC͘1ƒµšiˆ" (vŽ€ò;o :Ä+**>|ø3Ï<Y½ôHÖÒ3`Ž÷zÏêW[óóóûöíûàƒ––†¹  €—Yºté²sgõ$¾ÉeƒÁŒv ÂçÁ–ŽLË›,Mxmß¾ÓJÆ/yΟ?¿S§Nýû÷oÂ"š)«õë׿þúëýúõk¦ü5[E@Pšå%͇íÊyïÞ½ÅÅÅû,þ†#|á ØäS½!E—••‰çF®ÊÊJ8 6“`ìÆXã™À¶’Ôì¢&/±KJJ¬¥.T°É jò É›ö&X3TEÀD@y‰*ƒ" (Š€" Ø ÊKì¥%TE@PE@P^¢: (Š€" (ö‚€ò{i‰É‘œœÌ;/z)Š@¤¥¥ñ¦Øž={RSSëŒÜÜxa-'Çx¹ŒMâÖÜÅ54Ä+,,dg¯úsßÐäv`åSV»ví²Cí%1hn9ß!77÷¨€&úF?Eå% âöyΜ9ù¥—" Ô‰À’%K²³³ùÆõ¢E‹êŒÜÜ–/_¾e‹qpg9995wq ÍÅŠaaalšÞ°a÷ Mn'ñV>ͱmÛ¶eË–Ù‰Tv.ͽnñ‰u ;*š¹råÊ5kÖÈ·è•—Ø Õh‹/Þ¸q#§~öEòFæpØEkBEàH"°jÕ*¦€¸àG²ÜZËbèß±Ã8^944”QØÞú âEEEñÞ™««+Ô¤þp™ã‰= ,k×®åØ$@æ„jTÿZ´å˜4÷¦MÆ‘›~~~‡ÐÌæÓXÑ7üˆÊKDì(²£££Ùÿ-—4ªÖyr ¯’:óÔŠ€}" ¼„Ót˜Šá¡³H¯iPÇ‘´¬c­¼ÄFäidIÎÉ7ÑÑÑ&/#d÷µæ%^ž2ª0¶,Zcd«Z@¶æ%æPi¶{ý³jò˜&ž‡±°ñÊÖ á‘gófã l“—ˆ6Z+'ê¹çoƒr®gdÑå%vÄ3*Šð¡¢=\̸¯S H…þ%%%ÅÄÄ4ÉP[g‰A8ŠÔä%tz ¦Ôvë´D¾VgÌC×Ô†—ˆ•’ž+½XÌÀтˆ— ‚!žÈfzPlÄ#ç ³™ƒ wxx8aŽb-jò„¡¹‘“*H;ñÀÓº­Øšm-;בÒ†—ˆfV¢œ¢ºœäÉßæ &ÊKJì.¾ð”#"ÂøäG™qqã‚t<æ.\ŒÈ¢@„Kˆ\üd™’’Â#~Ò=$7›T’ƒ™JHð£;·;Zc·–Û²°æ%¨:û'8£çè/쇥ãЉˆcªºt.ñÈ6 zÛfÙxÁÒ»ô)¢™ý¥þöÆ—ÈÐϹÉl5ÅKÁ¦?:&»"†B¥"ÈÚ¿tg.QåÒòWLšÙgj?¬y Y‘![ìŠâ1hˆÖEð3((É•¯O°d/‘ñ‡¡†|ð ˜’›ÁòÕ”ÓÄœ´‡Mmx‰°+*ÂP)'%BžU]&xÜ€6ÒÓ”J¦m4„©âÆ0ñ—ä\f*Ü ¢ f*i‰œI[cÝùËöR)ÝZ—„<ñˆ©£¸ lT±þÊÖ ~jÍK™„_ʆqpC9¯­mØ€[·n¥v‚˜`nÒpÒw€ÈlG17õ‘Dy‰ÝñŒ† dòƒPeöô¡è è¨ã “õnnnô™¥K—ò%^àâÄz´ŠôžMatz)!h[ÍTŒ2Ä$+r ×yxx„„ C2ÖGç4Ž"p´°ñ—ÐØ ëîîN§C$x†ŒÂX\´šI?´@l'[S%„ï5¢ü24³/« »^^^t "Ð5È­ž½&/¡! ëtaú¦‹¢!O°%&¦äO/æҩéŒü5E¥tD%¾‹/ÞÞÞôhÄ –„ü• õGÞ†—9ãâñdãb  uglá3L€ƒ< ¨ ,”Ç’7¸c‘Š0K@DF$dDbaa¤"¹ÈÉSrf8"²•ÀÃöjØð!²ÝdöìÙËP‰T”…´” >´>M€À(è1¾ÉNLÔ@FN[,.ÊCuˆÀEV²¯–T¼K‚äŒÆB#P’PA¤Ê¢T^Â0;}útÐv'æ&2ɉl ¾¡lì ÑæèÝLµšþj±`ÁA d § çô@`o,7¬øPkd&àPYTи‚ƒƒ¥FüE±ë£ÊKJì.¾5/z³I ½a@·ÂŽº3<1v0ËAÑåC¸èšÄ šD×bÔìÑmÄgh 55SÑëˆFæÄA3â›&Ðz6PåÓ8ŠÀFÀ†—ˆ«C¾Ù„m w Ì˜ ÆPaû ÇÒHO‘Á…æóê)ŽFdî1«<ÅZÀ ÈJæˆõ©WM^BY±"óu2¡ Ë›rQå{Œþò‚1åJ÷ä)&ÐŒ€ahT cßÐõ”ƒñÓ1€xÄ![pŒÅa±(‘‰5 /ÁÖ2òà”Šˮ*(²Éç§Œ]ÈÏ@ácÂ<󈪑3¨¶®ÉK„ü!¥P˜%S5ù¦7ˆ- Ž$4+2C ax5ŠA)=!„²,q`9TŠ:ÒŽ¢<ø¤.¦z`°©2Ü…TÉŸl ÄÞ“*j†ˆB¢~¨¢|+”|ˆC½©N=õ­>:)qlx‰ÒŽŒóHE[€ª´ •’ "!x¢™€Æ>nyŠœòdDuá+äS§$ÊKÌ.ßRoL^Bg@Sé 04˜AFÅàû„0  OÂ?`µÜCðQksà“·×Ì%!3! ¤š7o=.”@odô‘L÷@áÔÍäW¬S5‚"PÍKP`´ï4ã/ü‰ÎË ˜Œ#/°¯t"¢IgÁ¡ü*,‡l=©$Ä9/¡«’9™…c!˜6P4£9½U\; ÷3,ѰŽPLšH¬¦ìTÅÄò³'†ŸNj®IÕS¼š¼„^OnXSùôž¤‚½qí4M;žîM^‚­EN¤2­¾ŒQd…TTбˆ{*‹üŒ'€)ÖŽñŠ‹Zˆ“ãð¬o­ë8X}A˜r!”æã'Š7Ë*T¨ÑªÈW†>t@^`ê¼XbB¤:´àÃ=òËŠ†(æœ ©‚éK#Ù×)ä L(ˆ§8$ÀŠG„ã` ÕŸš’Èx.¼„80?’4ù¨[+/ÁšXóQ9êîïï/$Gš(­8ExJêÅ tYìUÉ:5PyIK¥#¦ÜÖûKè$&.t!Yá#eâĉ„pOˆð’¹sçrϸÀ˜…ÞÓÐraß$”žI*Ñ*Å#‚çSN\`„¢¢…ä†Ë„îÑ_kjª&A N^‚Vc¢° °|œLé&2•g^ˆyà/ÑdÉ_^¤¤ ð” nýÝã%²Äó`ç¢gaæéƒÄ^"rîå1«ð$±‹ 2v±eU³5ÅrP…ús&ñ…˜ïãȾ›u`ATÆä™6mšL‘1í6¼” À˜#Æò$c_©#˜ÐÂr(ù±mX5¡† >‡=ç©é/‘µ0F?°eÜc#Žðæ]âð0y î1˜À¶ ‰†P#†Aàڇش>yAè !.­†Êa³‰@LÔF6Ù¯øKÐ4È ¬…ÁSÜ!4(’êDiò„!— ÂÊø\ÏEÃuŸCóÙ÷jÍK E;r/X@@NÔCìþu$ç/}ÊÚßv0©”—´^‚¦2NÑÒè·Ìø+ªÏLŽ–ª(TƒA„‘—@Y1•…O"sÏ@?¦JΣ¤/I*¸¿xŒ…ÁЙ!((¨,Q\“3÷u'¬š¼ÄœÑ2°J¯‘­XP:´›!˜G˜ z ͧ‹%‹Ø$z °XõìÛ_¡»aÛ°R?ä‘m†Ä« Õ œ¢‘“Š`²JK’0Ï{`ü”½/°ŒD#y‰8MM»Bq˜†$¤ú$žb“°@Øodp€Ž€ª¬ˆ1æ³A*óÝ]DÂð3Ú`ã›´Ø`Ò"-õÂë€ä`Þ„¼„<‘A¶†¹ðŠ“ñ¦gУ‰1¥  ?@rˆ © ‹;ԚꙦAlâ­ "¶8<€ˆT¨‡(©Äý#Ë"⃑C7uGÓ(½"‘ èQ4ªEYÈ)äü¥Ñ½AmZÏñá`¼„††l!?R‰$]Y:¤¿À¤i,dr&r 7`Näúøí”—´^‚&Ñ“ÑfF+ÓáI ÌóFæèt6F4î !2KŠ.ŠºÐ…JalµN%ÛÙÈœÐ?9ƛф!.ÄE¯–Qïð|­õì-Mh$5y J‹¶‹žþbÝe0N ¾x†T4œ.#ú/»G¹ÇDÑ5HH¯‘.FÌúÛ‰š¼„á˜|Fº'dHvzÉ;#b-dï¥ð“â$2âÑ餄 ˜ìC0éž$ÇP\ƒº§¿D`"Õç’E+:¾”Â…ÌÈ@’ËŽHFY¼Xn¤EH†"‹‘QÉYj-Û2dlRþù°Ç–šë82TRœˆ ”EéHH ¥ËúÀ '@I¾({x‰,¯ÈXJ4†G" ª9ºR}¡’è 6êAA |äe+Ê"bÐR2öò—‘Yœdëœ1N²¿„©0½i3?4¶MU–œA"¯„à½ðúç\3¦MHý³ª¿"5Gžõ/ÝŒIsË›S8lÌWÃ#ŸšIêYAå%-ž—°;•}Rì9jÖ‹µCÖAåZh¹šµ8Í\høÈ%[FØ.0cÆ Tº9Ѝž¼¿ÀøËL&‚Õ?ᑉÉk2lbo µÜþÎRÙ,ŒEð#]K/…æ¦Ñ èØ­|䫃•¡PÙ©ßíkñE+ (Š€" ´”—´È¦dƒ4ûºõR:à¥Þ’ÀEa?½axa¡NÉ|9 ñŽ|ÑM[¢œžÎߦͶçFÓËá.€&÷Gø’BÑ=õ—´HR‚Ðlø3°õRC#À‹ŽŒwŒ¶¬æØV¬(Ñ…Y+‘óÎíê+ùt‹œßB/j!Ç—ñŽn ­ÂQ[Nˆ´£¨™B(Õ_Ò"© Ñíè^¹¹» òŽ® õ,½ ?i}¡  ïHÖ‡óóvæó¯>Ö³² ŠV* ÊÌN#3Ú2Øá`¬7Ed'¬\6B× iÚZ‘?çR0èpR¶_27…iîÒë¬ È—íD*ñêLn'VN?jH­Ö„½¦VX+I­ c'Un¼€F´zjæÁઉy}›B¹”—´HF"Bu^b ¯ùyIiYGÒfßËÍMMgþ59¨–êÄ$eð¡-jT'‰9LI¬’oˆ@ƒòv‡Å¦FÄ¥%¤fÁŠêÓ{_ôccü_\˜7:’å6•üõÏdž—È`*Ÿ›á²‚™dc•­MrýK©gLk^‚`R–Q.\Ù¦<õ̰i£Õä%È#‡¦sO‹P•Zy ’#?¯ æ¦ 4-1O!¯ü”ƒÂ¤¦æOɳ¹Õ£i[³A¹Õä%¢ ÒôÜØP:9DŽG¬¼HŸ ¦f'…'¤NÍQ^Ò‚‰ /…€é\×Ò‘äFþV?â©å·µšJœ -õ@ü9Iïý7gë²çã!Ÿ ÝTThØq³t›lmJü`Š©)‰µ"¶µ$TKb¯f½¬3,ÈßœùûÔíU{™žVÇ=€Íl-øì)-œ³>„ÈùùÕhÔ³R£ÈÌÿ6SÌja[+<¡$yy¹K6‡ œµcàÌÜì)+”|Ì´ßDò€ðÿmâ™x0áMy¨$Ÿ; ŽLÎÌÊ*Ö Q² #×ä%t"^Ù˜4iÒÈ‘#…š‹œw̱WÄ7Ú¦y‘‚d § ~b)¹>|øäÉ“åh×£HMÇÚ_"/Gð/Ž?Ú„mn&dš°Åkòd†s0ç\WêÅ äÔkôèÑTJªÆû±üä¥$ùZ qÈ=¬m±È¡´rvó©G‚ÐЬlx‰ ÆÛìS¦L¡›È)ûæh,_Eæ˜Í±cÇòòŽp;@6l!ò±6·‰ìœLÈÓCkŽò’VÂKŒ1.?¯j?”–ýJÌ¿è`«¥L¿ÊK‹ò÷Vð5)ãQUU¥µÃÀ}Šùœ&ʰJ–™AÙ¾râï©ÚSlP ˜Ge±$¯,7L¦uYLî ¿ùãEUûˆÃ$£´¨€Þž[QJ¶åFªý†šc»‘Û¾’Ê2«(+)(-¦Ï———` ©BU©ÄO£”½ÌY öUqvåî5³T¤²˜Ÿ•ü4dCþ=TÓ,Æ婵Ù’á¾’ÂüÝQñ¯ýºÚøTVyQu½ö•°tBd³‚SQRe!j‘“Z”ƒduÅ«±2$ü·R¹°™õÝ[Ì#’äX˜ÜÞ2#“²â‚½FVÈYƪYVR”\dÔ{ÒÖÜ‚’èøôÝ…ùÔt?íµÖdLÜm6+pYWV®Ú[l‰Vnä¹WZ¿œhÙ9Œ¶e `4bUHhKCï7P…EòXÐÃY2q™öî<±cÓÐqÖŒoÍKŒF¯ªbèüí·ßú÷ï߯_¿¿þú‹ çg§NXî©éÿ?ìÒmÚðFm†ø¯¾újРA}ûöýóÏ?9IÓ4MUhýó±á%xx{³OŸ>‚ÕüiVRýE=DL^"•⠓믿þ£>bîN½øTÍï¿ÿN¥ лwoì(ÇÛüøã4?1ÆèC=ø‰ª@aù9tèЙ3gNN«E®&Ø2±æ%tã˜WÀ%@øòË/9ž~˜–9UPüüóÏð6þN:|^ýubÒ½{wé á]tÑO?ýT'áV^ÒJx SÔ{òÖ{¾r¼ÿ륆E¯*ÿl¨KPdÊýÝ–°*áä~oWÇ'{,¿ù“…ÌÃ-žƒÃbº|B;þ¹ö®/<ØÛŸøä¯«¶E\Õiî„e~†aÞ[ésçØÚòïF»Æ&¦ï//þk®§«Ol¦×xãƒÆ¼¿¶Ì5tÉ–ˆëBùÆÉ?:•¢/툱\–-ðø‡'?øµ¢îÝ_6xÖŽ¥›Ã³²r?þËÅ?:½ït†T"8hCd|†›OìãÝ+÷•%gå _äöá_.1©Ù 6†œ÷êLü‘ÉÙgïÄÝÒgê¶åÛ(‹í©, €eE[|c‡Î÷LÍÎß»¿Ç?9_öÎjÛiÂ2ÿ)«ƒ}Â’¯~o~@XRÅÞRÐØ`|À,86s¬£OZFvtBz×› JŠwåìzîçU©»vß×ÍqÜ ¾•Xùݘ-á1p—ÊüâŠ/‡¹¤gÒv†V‘š‘õ¯Ï\ï…7få–ˆ1NäYXTÙÊ-(|ꇕô[T;BÓÞè’”™3t®gPL:LY8v ‡`–ÿĤu;¢ù|T²ïŒí^iÅEùÓji#i=åµYÇ‘­òJ$Cíí·ßÎÍôéÓGÅ×=0N¸¯›ÏöÔä%ˆ'¼9aÂ&ëvÅKxàÎN•WFá%Ø¡ÇKdüœdŠdÒÂo¼ñÇÂbh¹¿òÊ+Ñ š?ùXÏk¯½ÆÍ\ÀÊ„õ믿fÆó€å?’7m­§J7G4›uZ¢,kŽ\ÐSÔÀ\‹á)ˆÉ;½(mÇŽEùôðëÒ¥ gòþû?ígRIvßÞ#/ÁJM[0w]0Þ\ Ïÿ¸ ¹±m†Ó¾¢ÈÉ5lä"ï cÅdÏË¿¬^"/œ”â¥8kçã¶¼õÇZì.ŽŠ»-3ª½¯øïy^ œC1ÃK\C¿µ¹×D÷g\“˜±xSÈÔ•x8°Í–…€=÷u]j¬wì)ÄLŽ^⛜–õnßõøN~¼’4ló~éB/ùs}b&Æ{?®$LIËÄTGÆ¥Á©†Ìõ¤ c·<ÿã DØ–òñÐM~Q)#y³…m¡÷u]‚ßq{ý·5+·GM]2wc˜e-cïå0–W¨K!8l&/È6¦zåCçx.u ÍÎ6xI@LÆ Ù;Ä¥ôÅß.±I[|ãzMÄ©S–•½kôbŸ€èôχmŽKϽÔÏðU•¦¤g œí—¶É+¦Ç˜-ï XÏ‚—…—0fjFö¤eþÝF¸âFÂ3×~€C¥’åÚeæúߨYk‚ÊYëÙWÒæÎW][¥c¿õ]†oÊÊʉI¢ÄM™•ûêokcRrþžï ëCBøÐGƒœ¿Lî÷6 )x÷nBáñiߎâ»ååÅùK7‡>ôÓÓ¶ãy½Ïš‚â¢_ÑúûX?¢‚ïpNÍÉ6ß D)3W]Š·©ôéð×ýP‘´Ì¬>S·GƧÃKZåPtφ—ˆ€==ýôÓO<ñ„Áƒƒ±L/¿ü2?™ÞÝrË-¤w}“_µò’ÿû¿ÿ3Èea!“r;ô—È—oñ+\qÅ-—— ?ûXk€t‚6…Ý$â;Á_‚•…vp"0?ù€Ѩ2÷>ø «l½zõb‰çÛo¿}ï½÷äÑ¡Ml“«ÍȰæþË,® ºÖ¡C|!²¿ „˜òZÿ /à8& ˜ì8yþùç?þøc¾f×?÷Üs¹¿ï¾ûN;í´~øA’l¨Q^bï´£NùªyIAks 'GiyiþÓ= £Ž¿¤²¢€)»ãæ°‘ ½Œ- UÏÿ´*#+‡ýX8þ&¥dŽXèÍZCD|úôUA?OàÌæ}÷vY";EþšçµtkäªíQÿ,öñ MŒLùjø¦°èÔ….!Sà%UÆæŒÌ,¾o^y×WKŒ-åk¶Eþ³Ä[øÝhw˜oX’WHbZºe…Åò¶2¼ùûÚ(Ã@îei‰… ˆÑ€YžñÉCçCƒB"“ƒ¢pu@Yöí Nøj„û¶À”ÑŽ>¤öHÆ×ÂrŒWH9W”ŽuòŸ¹&в¤ò²Ž/¡ßBMX@aIb´£7‹A™ãéèjð’þ’3wÂÿ诱Éxt~šDÅ+p [à“ñéÐM/Yâ7ªWYœ”fP7¿ðd’BcR©Ý=D¥,ö+bµX(a&™¼Ì-ü'ÃýW¼‹0{÷í)µÄßà%>±`hl©,ús†î òñ NˆLH'mXlÚ§C7²^òò¯kà%NßÎ ApˆŸ'nEÿˆ$ï¤ÀÈd6£[Swí*-.ˆHHƒfÁ;K óðõãŸî”møWn3ÖÂÊ€7:9ãþ’³vÁùb“€½|Æê`Aþ¾1x!¯x§dd±àÅîë=:G`<ÂEجã`–pM3!–S·ÅÆ0“æ‹0¸L°:Ï$¯™„¬ÉKèËgu’°uƒ©§¬Ä-šXsçž{î‘ÚãFºð [â:Žé/a×*Ë7òÒ 4”'2ã¿üòËé`ì5aÅŸ(Ë/¾ˆ•ÃÌ:NçÎÙfÁ*?Ûµk‡m¾Hͤxuf[Ó_‚‡‰­EÐ5H<—m%BÙÑUM¸,ý9Ý#8:eG`<‘·%L\ÈÖË–Ò=Wv¢cìaYäµßVCμByûf¥{¸WhþÀ¸Ôôì΃\’2v!üV¿¸.!¾9›Õ™àèÔ_'oó K±Ðë‰ï–Å¥æ|ö·Å_²Ä×pAU%¦â/ÙI]ÃÕ'¯Ã+ÆþY^£È}õ×59¹»¸ñ JØ’¸jk${q¨{G`QËÝÂøzéôu!}âþqôe~Á~™ë‚ç® ŠNÁ5i…?þ²ýüïM,uede¿ÚgMtJ6ÜÅà%{Š'¯  X ýÓDwÜ<ìê;cG\r&$ãÓ!ál€e‘kÄBŸ˜Ô^Ñ€\Z^üз˼C‘ÌñÊÉÛÍÎVzgPÂÈE>+Ý#öV³MšÂ“•ƒòÌ[’–‘e 8­t!§æþ’n¸ÉöÆÉɉ¯Õ0€Êä˜fu »Í稷á%˜7Š{ä‘G˜z“˜›bebZ§!iŽ5y ~v}²K”·W^yå°jqë82MOHHàm–¥ø¾4v”ýÎØNêŧ ©-N5¡&|vŽ—t°¸Äž²÷óÃ?d;l• °ÞÞÞ¬h[KyeºþJRs /"±@ÃçZùžÕç°5–½X‘áú ;ÄÙå ì2ñðð`g ÛŠÙ¶E‡‚—à8ÂÊj)Éß~ûmnídR^bï´£Nù„—àQ+.ÊÃÐ2if¾^QQŒI›¾:]qeÉÎÐäž¶…Åg¼Ùg]ZV6sô ;¢ •eEi™Ùì>é5Þý[ýb1Tí;Í<׫ûh·ÍÞ1/KÙêí?NØÊ;#ð›ìì]ÌÂ!”ÅêOIYuÆê ö=à>aꛄTì aYáû1[æ9ãÅ©Àáçž¼#(‚â¸9œ=ªH8sMPQÁnü7ìðÈÈÌáÝ1޾½&¸÷ïnÎò"ÜW˜MJz6&™lC¢SY¼è=iÛ†Ñdëï–D5a0c—ú^æÆî]öÁ|9lSñ[zŒs_³=’ù0¼déæ0*è•Jíœ\ñâÉ©YÈ¿3(±×ÄíËÝ#—º†nñ_ïÃÐŽ D¿ð$øVVÖ.7ß8Vyp,±žÂ–^:bù¾Ì5œu\>£}¾ã6tž±bÅA 8?>ä0K6çXÔßìɘ5÷½B2°—ìfåU‘O?ýT>éŒY¥^8Nd«>dÈ—^zé»ï¾#>”^ÂúąȘX^!¾ÿþûñ ´ ¸ /˜˜¼Dï¾û.ÛDÐÏØØXzÄ¢{qèAô#X݈#€{ì1ðä.óh>ºÜŽ­úKê´ì-;‚ðš“g,gì/e‹ v‘¦û+Šeg&{‚cR—ºG:¹Ç|0Ðã‡éa¯Íx;—×MÙ#BÂý¥˜sþ]ßyÊ~ãÝ’Ë‘ÆÛªü3ö”+ ¼0l[–¥0ÖkØsJ¶pcÛÇþRÃòYÎ A ìŸñro{$Œ7W÷•ï!“k@F¶˜ó=Õ’ˆ½ä"‰Q¨åeZÂï¾RGd+äE\ž’­‰cƒ¿†kÑR‹Þ1Ãxá€-“A˜R47ÆËÉÁ,’ì†ýàÛXä5gC[a#’Ù[†f憄ì'ÎÏ#£ÖU¥r*+˜ƒ ø»UDòÊbËilÆCÎ=ÅlaÓh›¥¥Œ?ûÙƒb‰ øÆ./êXRåáû!7ÜHF<Ö¤Œv”f-á¼MMV$áŸQº%âZ^i&ä*ï¹è­Ù4¡4™h,›ŒŠË¸™“sVøi¤Ú[Ò÷—X÷á†Ášu*lÃKŒõG–ç,Þ£óíßI‰€`sÞ«lÇ‘«¥,^Ôz~‰lq•KÎŒ1Òî²4cSSÐo*ñTÖt¸Z%)=¤¾ÒÊr/q¬Q-‡Ëɘy™˜b}^°ä#_684UR‰5ž-ò—šÅ0YÎ=³º,!†Nñ§¤(Ï#0~Œ£~V@˜èK¸èœu*îÙ^:ÎÉ"œµ%jÆ©½,9 ¬¶l­3©ÇVS›¢kJb•Ü›!° GÜ|bÒ3²b­Õ¨{÷f¯q&-÷cÏGa¤¨¾j«¾ ij­ÂÁ’œA¯º±þSp ðkɹFëÓnû* Y6*-γ´am }@ AÕ:[3¤õݘë8°y³ÖÊejû‘AƒâäÀ.yCØFkaŽJC ‚aWÌž%75±:*âÕ³P¤’ÔÖ£™M£ÛÔKºŒ¨„u*ëaÄFaê)O‹ˆ&§ü hrob¶þ¿ÃÔ¬¬ÃϚݪN[=‡¾E2ZάãÚÇŽW+/-dª]WlæîE¸êŒfÏØ’…w#ã /L=.ü€Ã?#I=ÓÔ#Û£…æ£Vév[.">d.F½£.$SF97E&G]Iü%';¯žp!¹¼ ;i¹µ¨ge›*šec€Á˜ÑÏ£šª¼¤óÜbõ¹_ª¯zÄ&f=bµ€(õ¯1‚P‹¨{+iĦÅÀÕ´yvnòi»ínVv+^=a·sëY‹#Í@“å!ýžp f'*º" (Š€"ÐÊP^ÒÊT«£(Š€" ´`”—´àÆSÑE@PV†€ò’VÖ ZE@PE # ¼¤7žŠ®(Š€" ´2”—´²Õê(Š€" (-å%-¸ñTtE@PE •! ¼¤•5¨VGPE@hÁ(/iÁ§¢+Š€" (­ å%­¬Aµ:Š€" (Š@ F@yI n<]PE@he(/ie ªÕQE@PZ0ÊKZpã©èŠ€" (Š@+C@yI+kУP¾L““#ß§>ºb$''B†òòò„„þ]9[Dé©©©|òþˆJ«eddÈ·L}åææò%ôºbÕò¼²²’v?Œ„õOBþ|ýµþñJ̨¨(ÊMOO¯OHKKÛ¼y3‘ET(88ø¨ˆmShvv6²yIŠŠŠvïÞ]E=ò²µ²•—´ÈMLLœ1c†P”””ÈÈHFÞš5ñ÷÷‹‹kî2"1"))©™ ÊÏÏ÷ôôÛ²e‹|z¾¢¢bÔ¨QÜÀ##""êÃlV®\YO$aÀ!!!………õ‰ïããa"&bÄÇÇ×'I“ÄÙ¸q#£.ì¤IrÓL€ò’©sçÎ¥å0ØHïèè8|øð‚‚‚š5ùùçŸ4ŽŒq]»veŒ8¼äu¦Âˆ~ðÁ‡ˆvúé§ËS&¬5Ý6ÌoæÌ™3eʉÃðZg‰G,ÂÈ‘#MÁŽX¡P·?ÿü³Îâž{î¹Õ«W×­ñhµú êÓ§Ʋþ%^}õÕëuÉ%—Ô?áaÄü¿ÿû?ßa$<’I4(î™gž©“q¢–¿þú+½©¸¸Ø”°´´”{!C†Ô‡C\xá…õ¬nÎßÿ]}â› ƒ2,^¼¸>Iš$μyó,,M¯fE@yI³ÂÛ\™CÛ_{í5f´ó4hæÖËË‹çÅ_üæ›oÇCpË-·´oß~̘1ôd¦Œ÷ÜsÏóÏ?ÿõ×_ËXkqss³ÑÅÅ…ÞþË/¿<øàƒ3gΔ§Ì“~øafœâ€½ûî»/½ôÒÓO??†ëûï¿'??¿Ñ£G [ºù曑䫯¾’ñkÉ’%L·ß~;#B&L˜ðÄO ÈçÙgŸ}ôÑGÉG/¼ð‰'žHqRt¿~ý{ì±wÞy'00ï¾û%þüóϙƹººNœ8‘@¡ô»ï¾¶c;í´Ó.ºè¢Ù³g“GLFX*Hœ÷ß_\JØà·Þz‹jÂläùçŸüq1wäxþý÷ß @qÛ¶m#ÕSO=õÛo¿Ù¤?~üÀ?úè£{ï½WD†Zxen}å•W^qÅÈ`“vúôé/¿ü2àPh/nøùÈ#ˆëè‹/¾pvv&«U«V­X±â•W^A™µ£÷ß?yb&©ÚäÉ“emkÑ¢Eð3nÎ<ó̳Ï>›JqÔÄ„‚tìØQd`RøÐC}øá‡§œrʦM›LÁ˜&b«¨f§NðÏÑjúä“O‚'qÊÊÊÈy@I ÅÙŽ;V mw×]w8kÖ,ü.\ˆ:99È—_~)K!$ùé§Ÿ¸™:u*ESÌÍ ªÀØ»wo “µ‰š³êN8ÐHÂêL@$eÊK8ƒ3hóg I>ô› ‘óÕW_E Ägƒ`JO¼äªS„ôtlÒ¤I´…u>èø Eãæ;vlff&hAJÇ*üñÇýû÷0`@XXØÛo¿´ƒo‰@€nƒ€z-« Öñ‘ç?þ½÷Þ{†æ‘ðz¢···uLo¼ñM&ôe4 VAe¥;sÑÄh7Hø¿ÿýZˆ²W¯^€Lž6\G:&ESGôŸºËô}Òýéæô\Ø€ o ¢3Æ #ò\¿~=ó.F‘øü%æ û#áå—_.îÒ;w‚-U@‰è6ª‚Œ®·Ývʀ̟|ò MCë3`£é FÓ¥9Ð(¸>áD†ç©—źCÕy¯¼¤Nˆì1Î&Uô7Fj ¬\sÍ5"+]ŽqMú-“6 ¤¥qkãͦoËÓZ7pa¡’„) tilã#;Þ†9†`s’ʰEÆ«fíÚ¥¸Ë.»Œ‰Ñ–aQžbiÖ®]KÏ'Óí¹±ÞBFæ“N:‰±ƒh$aˆ§ó‹HG}ñ3ä@"ÈhËÅL“ÆÄŽÉ2µ%CƒxAØ—ÃøhÐfž„0‡v`•%Ðúš¶k×îºë®“‚”E`Æq9ãŒ3–GâÝ1/LËmòS>ðÀò“SÚB ³±)ŽZ— dò—¡ßô©àbaX¿õÖ[Á“Q›!˜qù1‡ qÜqÇQ}S6Ø$#¸ ý?t†x!rÃŽY)s_òDB¦þpª)ò`›i)S6_C<(Xnî¼óÎCCHb7m¹L ¡5²Õ£ˆ¡ÅBðל+cqI(Ip0?æ‡\“1?Ôرðc³! ©° mƒžõOx‰,=`þU$¦zDžÐÖ_(NæÜô¸ zk³ @)@'ZL†Gx\èu¼é¦›0ŠüdöŒ¹Åõ/±‘¶ PŒ.áL¦1RNè©8“Jz4ôËf¿.RÓ¿(ÖÔ\«‚y Ù5/:8Yaba«L?/Aíe 2¡ä†./.+óI)‹ Ó ñÍŸnHþ&u°NB?•Ÿ(EÓ´7Ôš^ÔÂD阹‘ø P4=t–{q’IøYgÅ_ø%,E|]R5ÆÜ¢tÈ:Î w·¾1;xdŽœf)h J"k‹RJaú„òÓs¥Ñ»©Ú"õ¢\™A\d.Gr0aCÕk]d·‘JZ# ¼¤Eꕹ¢3”ã'”™:3© ]à ¶ kdöÛúT•áž@bÊd‚A“! !Ã^&»æn¦¹˜=º+“]¼86e1„1=â/ …—0«Û°a<χ–‡Q€É3r|Î2‡Ã0ÐÕ…a0ãdº)se“—Àà=f¶ˆÍ(ÃO@} XJ¦e¬y™I´ÞqBíg­ÃxÔfAX/&—üd„—ÅÆyn¦|ss‡©–§Ð˜%7ä\“—ЦÀeýrvÑ\gadæ 5”·àaÛ·oç¾…]”q–‹©œ‰' ?€Âʺ¹ÉJÉú©²)3š Ÿ8±­y Ò@Ûñˆ))Åz HˆøØM<‘PœäXqq’S(Óqkl™Sb/ñœ‹Ãæ“ ¿N ëøà&þsôöÂ,YG°¹Ç*È’ fÏä%(*͇À¢ÕæàHˆbc}mv°"3fá%̆¡eè<>~’ ^É ¾Â’ ǰáºÀx×*ކ’!l•ÆX2³‡ßóÍÁ: àæ…„¸‘ø 7½øâ‹¹1Û 1¬=vØEò”î<´|Q€efo³À„fÊ{7T\2„Ê2±yQâUW]ÅOZ Êe£öðEá Ö—ÙËYÜH6šÌ€€®Ò@P(kU$&nBžŽt.©¦lB[dݖ˺G[—¤†3!§Ùé`?D$¹˜ÉPÂàzͬƒ¿ #4 îC²’ph *5é©ä€òذH0qÍêkÈÁP^Ò"uƒ~…EDt: “N,4÷X&z,ä,ùþXÙÁ`Ä ÎK'Á˜Â$ɜЛ(,X°€‘." ê„3Ç¥O2¡d ÷ǃy +¥à`leLaˆa:(3Yè!+Bð£À!°ˆŒ ôyŽ1ŽBÏgBŒÀØ ë×m˜Ž0×d‚‚% ~’?U“KÉ\aÝ*2Ýdqiˆ©/ƒ)þägdÇÊB ÷H1‹bðå/u§˜FëBžü:±‘æÅ bDfE@Æ>†$± Ø{"3ôSxöÕ:!ÙÂ0$D2š3|cPá:²D‚3ëˆ´Ö ™„1˜âP¡:8гÈÀLQÆwqe1Ø‘ÚÇPH°‹¸|hepc„EC°ÊŒ¤ØrBA(ø™m Ôš6å)XaDQÚÞFuø‰ °^_4ÔF¦ïØwæôX_Ú‰MeÑŠª‘®l$˜3÷ÅT£4®’3ÇìQdsÙ %Ã=™˜¾…á!5£ÃS ­xVų޽[«YBý¨2î:Œ®ØT.ܸpx *¨(µ@0Y.AQ™[¯^IZDl<¢Âà[„°—‹Gh¨sn!Ôa„IÛ\hÕ!+—&CÃÉSö°cùp¿‰G}6âù@TkjHÑ@“¦„0y ćÃÙl¤@KiSÐCp!À¿ñz’SjCiYz.m¼²a¨¦¿]½Á# £e© Ô~FBZ™~$+;Ös:8- ó%ú5zˆJ£·z4²¡-dNÑÜÃ~h\ºy¢$ #,lÑÐTî#­Œœ2úÑ뙇ÈËe¸HéÂG£“6"°…ÉY«11I+ì–K2¤! cH…—0j‰_DËÚ¼Œ9DC ðîÀûéæôÊb´x‰PÚñèÚt%iMÄ0§Ž5uCC¬P^Ò"õ¡Aö[0‡ƒ¶ËpÏÅøB·4}›„Ð%°ŽâÀ¤abͧ¼šo0vàˆÆN@5̧tHL)£=PܲYA¶˜Ñ1œ21¥ïIì(ö ²‰O…‘‹„2¤W3¦`xl&I¸‹ tió]Ö#Ä©ËÅ ŒË—Ò±‘æ{Œz¸OqŸ` ™ô3â3ÖÈA¹°µTøx_$[È#”L(ÅàL WÓ{ÁSÙ:C‰2d3I2O`‰šš²lÆ>¢aþà¤t!(T @¨šµsž ±¬ªX_˜=Ð&Ü<1ËÇO“©¼¼K³²È…›„zÉ ^ÂÔËœ#"*!˜gšÉÜȲ‹ðC-TÓ%¹( `ª~ÙµcμA%Á È~&.àÂ\‘Šù:£<¼P†løí…*Êb’›¬*Rqk^5y,®l¦Y@¤¡¡³¦; •;Øt™äf27ß-ÂΉ› Á€T$A›…-”Ù¦9D0ÚŽN!ýŽVºÓ}€#B „Z¡‡,7@ßkf‚mCáM¶ ÔptU„!¡xGhkÑD51sÃÊî1t€vgA ĨfÍ=ìÄj‚ê¢ÃüÄè5_iF ¿i°QÙ*k^”ebHwF?™ ‘1§ÖÒI‹ÃC<+Ôõ Ñ¸‚©©QDã)E\käI)qèPu)…1û£R‰ëŽé©¤ŽàÏ€õ´Þ»-¹™ZĽ¹ÓÚH¶ÎP†´¢²å–ñVÆ  '[„‘ÜHB/ .2GBñ«QÇàFBq¨— q´†Wï­P^¢úð0Ïæ²EBCÇfˆÄ£À„cÓ„9kV6ý¹-‚}‚ÁV¥²°®ƒÙÅ¡¿>gýflƒ’KdfíÌÝ#áa$^4÷ûχ!•&Q‰€ò’FØÚ’3ý­y4Yã+‰Û‡ãµ9Ai|žšCM˜’¶zXp·ÀBä½è&¼˜æâlü±°xàês¶G“HŽgX“d¥™(öƒ€òûi •DPE@hë(/ië õWE@Pìå%öÓ*‰" (Š€"ÐÖP^ÒÖ5@ë¯(Š€" ØÊKì§-TE@PE ­# ¼¤­k€Ö_PE@°”—ØO[¨$Š€" (Š@[G@yI[×­¿" (Š€"`?(/±Ÿ¶PIE@P¶Ž€ò’¶®ZE@PEÀ~P^b?m¡’(Š€" (må%m]´þŠ€" (Š€ý  ¼Ä~Ú¢’¬ZµŠ¯œóiu½E@PVƒ¦MyIØ€ýD]¸payyyŽ^Š€" (Š@+BÓ¦¼Ä~ÈF$Yºtieeån½E@PV„À¾}û”—4€ ØOTxIEEEnnn+ÒF­Š" (Š@›F£¶gÏå%öC6 IËå%¨A§Ú£’š¶¾ÊšõRZܦ ˆV^hUX P^Ò6`?Q[(/Açò‹‹‹÷ïo}ÖÚ¦‡ÌË+ܳ'¿´Ôpj5‡¶×®†¦j†QÂ6K£^ùùeeT„l)ìD m)Ò¦Ô";D@y‰ýÐŒKÒy‰’ôèèð… ÏZÛa/ª]$ )áQ¬‹KJ@Àî‚‚1 ÌgaeeYU•½±7äÉ+,Ì+)I ‰ß¶mWffEUUѾ}…²ïKtH Åk G´ïš©tŠ@«B@yIƒÙ€ý$¨…—X¹×M+hír¯^S°ÌÝÿ㊯m˜¶IX­ø5²û×ÜÖVº‘Ê:É®]¥UUþ£F ;ñÄ’ª*,÷¿"I6‚ÕÚÝj•ÁºôZrúwÙ¨ºÄU¶ LQßÿÊffk¦È+*Ú•‘1ïÑGÝý[øŸÊˆT;ª’={¢]\6}ôQ‘űdÛf{ sS¶Úºf•¥mª`ÖHN¼‚ŠŠÀ©S§_xáßIÁÁn_~±|¹AMêjž¢=­Ë²Ñe¶Y£¹mTIâÓ™ÑÑîßM4¨‰]ú¢Z•yÑÊ(‡…½U×qì‡i4L^b ½ØŒâ⢽{ JJr˜|æˆ{öäqdDÎÏÏ//Ï/)!&órcfÿ_›aŒãøêKK‹*+ ÷î%­‘½Å_VF8!ü-(/¯^¡8àÛ7Ѝ¨À=Pm„,ÿaÁˆœ—Ç„Õ{Р߸1+*(H"K°F&eeføtÛ"OEc•¤¬¬ºîååFM-¹‰üTùÉ ÈYÂó‹ŠHR]e~–”ð¯: 9——ˆbȺ,27ʒ𤤰¢Â°vä`W ÈãN˜rýõ¿ùw’2¬ï¿¸øØm´©,@ñp¶öì J{p™Ð¬T­¼œV£¾F  F;–•I³ro+ØðT–ltO òH•Q£½Ð–]» ñ,šCnÕk4ïH‘4Sa!qH˜”´äÎ;]¿ÿ>ÒÍmoUÕŸ:u*¯ªBÅÈ™ V·‹E7þmPÚë@CÛ4¨ÔróÐ^r(.6T+/§hã§´"9Z´×€K2”æ¶(ƒ²!¶Ea€4ÅËk˜ƒC¤£#¨³ÄkÕDŠ€"Є(/i°«Øÿò1·Øà}ûr23Üݳ32ØÀ™ÄeÄÆ&ûúò–¸}{Zx8Ž ÌLzTTNjªÇúÿP ÉÀd§¤${{'mßNr¡/ ñ©YññÌã3cbRCC¹1Æwâžäá‘&„ÃXËß½›´ž ±ˆH²++kúÍ7oþþ{L&Ñâ\\veg‹Oòô¤i { ÖiAA4b ¥ÄÆR àǹ»vº°0ôÂÃ™Ì {oiñ¬¤¤¤;²RR :E•­ü@©²Ð‘ÔÀÀÔà`ƒô§²2qçNڈ䄤GD${y‘ 0ãœsÒÒ@’*$ïØ¨T‡8äOCW ={üÇïà0aB~A¶nÍLL$çœôt@ îi—”à`t€ÈFÐÖ± ­ü=€ æ(€S)š>#>íE¯PQ1 Q!XrEEüæÍä4"’Œ 0-:&è5¥sãK¶m´’?:xÖ-ûÇÁÁäÈŒÈÈDOOC—j0ò&^5+E@8 ”—ØÓh˜0&/»ˆ…síÒe‚ƒCo‡q›?ûŒñº²ªjSÏž#¶ýüó¼K.ùÉÁaþ•W2-^öÀCÆžtÒÔNèïà€ÿפÉl¾²Ò¹S§̆spXzûí‘«Va9v¥¥Í{üñY·ß¾êÉ'‡;8 "ç>}°dX5/¿Œc¿ƒÃ_”rÕU©ááÆ,Ïž¨uëfŸ>Dd¨ƒÃ¼+¯,).Æ0Ð{Èr ô-_mø6 û÷;wî<ÆR…Q®]»Î +K&ÞŽœ””y:L¸è¢Å×_ß×ÁKíì¼üá‡)ܶ÷êÅäöCrpøÃ"ÿœ .œ6 3F¾£GϺðBؘx8ÝtÓ}ÌgJhèú·ÞBH¼£ˆÆ ÛXˆ¹÷Þi·ß¾ú™g¨€Ä:;ÿ‡šXˆ8nß~ÖÅ»¼û.b€íŽ?þÈDZ{÷ô›nÚüÝwd•°}{/‡˜õë+ÅÇgÌÿýߦþý‹á‹¥¥[¾ûŽZDÎóÏìàà>p ª°¥kWpÀ!œSÏ9g•W®ûmšãŸcŽ‰Ý²Å`!¥¥«_xêSA^z÷݉¾¾†ãA.¼,%%Qk×N?í´ü›vê©Ûzõ"g£®¿™AiÍ÷ß>í4l<á?;8¬|ì1·®]8QË—‡/]:묳hSd›wÙeøQÒƒ‚&|2…‚Ò’^ B®ån"6lÖžœî¼óWŠ;÷\ŠXûæ›"!Jˆˆ *ÔDÜQÅÅÎ?þ8áÒKݾþzZ»v=ܺw§9æ^r HRÊ”“N ž3õ Zsþe—­}ë-ѾÆN–ªªð%K\{-OÀéÞ{£- 'íÜ9ì´Ó¶ ¸ìÁ©"¡u0*ªFøg!¾z)Š€Ý  ¼¤aTÀ®bÿë/a*Y^¾ù«¯¦œrJðìÙi¡¡áNN“?Þ僰jÛû £µáw–/ǹüÑGç·oÏįÃúwße|ÏIN¶™jc|{Ÿ>äLË{LxÉÆœvÙe8H„¯Ì¹øb¯#â·nŹå7a¢[nñ7.#"â²¥{÷9—^ €“&A}GŒÈJK#”eÓgŸq³i„lõsÏ…,X€ƒ„f‚H-¹ýöOO6vÀ–tèàÑ¿¿¹ÕFxIai©{ß¾p—Mãâ‚oUœvÚiУíüÇŽöð+(‚†^pÍ5lg¡¦Ûz÷ž{啱nnTŸÆZÿÎ;x¶pج|úé¹—^Š‹‹*L¹ì²¹×\P4 ðB³à»¨_zXX‚‡‡1«¿Än¬‘ ¢ÊKìŠi4L“—àH‹ˆ˜qÉ%AóæaiðicípYOþßÿò23=úô™|â‰9IIò4ÞÃcâÉ''ùøð›çû÷ßLdy*¼äÀL{7û p•{¹¥G¥÷Üùæ™x¿q`8>ûìÚÏ>c¢]çšyöÙkÞ~”ä=tèÆÏ>›õÕX>ŒO·÷ë7óÒKa-Ø3Ãã"ë8ø9H‚qe½WAФI9±±Ìeƒ“#"â||’##]{÷žwÓMˆ!{bD6á%‹î¿M×®$çrÿö[œÜ`ï3°p¾#GRJNF†ßøñ¸"V<ñN=5dölÄÀÉ¿¹K—>"~À”)p#7l˜uÅþÓ¦IéY³¯ºjé£b¼=þøŠÎÙ:\á—_˜”÷L¬ä†h¯¹fÕK/)°æò§ŸÞØ­[!¼äÖ[kò(ÔÔöíwüóÂL=ÿ|ÏAƒÈÁp;EFN:óL‹¿Äã×_M^2ç꫟y†@Švûì3+-)Á‹@»$îØÁÊ—¬V˜¤‘X™Ú•“ãôÐCÐP0d‘ß•4™ÁK}.eð’^½L^BqîÝ»@hhª³îÝwâýýùσv$¸º&®^#*fÅ æüMŸ~Ê uG{l¼«+9m [±‚¦ÒôøøuŸ|²ðž{p­™Ê&¼Äõ·ßfw蛕E*ÒÂPž¬ììÿ„À@þÎÃ.](\Þ{O$¤FKxÀoòä-?ý4ïê«Yú¡v†ññó¯»Îwܸœøø±çœ4>Õd•Š¿¬.Ál¢œœŒý%¬KÖÜ‘£–APŽ6ÊKFì*v5/±lWŒqvÙ®]¤«+î}¬Qayy¼¾îÔíÛwþùç¤N`VmlGÀOž<ô˜cX¸ÁØËTÃ_bá%†m³ìJÁûŠôbá7®{ë­í={²ÒñÏÉ'³¡„hð’Õ~(¾oa=ãÊ+³ããç\v™c‡Îï½çùûÞJé<]þâ‹Sn½!;+qKP¨ðn 7˜1Œ\ØìÙ±«Vk×nÜi§:ñÄ‘Ç?ò„ÆœrŠãÃãS1ö?²×„Š]»L^²ê“O0êäìúå—¸ (‹¥xzâ{š8‘u¡E:,¸þúuo¾¹åÛoÝøaÔqÇñr²ð,ßòLJ'­ïØqgÿþX©€ùóY@wÊ)£N>YJŸtÎ9³n» ò´øñÇ—½óä²¶öèñ^ÂÚ“±kÇÂç`“®¹fÅsÏÛ?Ùj“Ÿ¿ô™g–¾õVaaáŒÛn^BEþ¿½ó€¯¢Øþxì>}OýÛ{×g}>õùì½<+Ь( ˆˆ€"Ò¤÷ÞB¡$„Þ{ï½÷Þ{BBÉÿ»wÂr¹7„$$p“ÌšîÝ9ó›r~{ΙYHv=ù$Äbõ¥—‚†òwá…›o»-ÞÔ4ÓÎfƒñ†Î¦ËKÎ9'ÍÞžp:R²µ5$`ýe—­¼øâöýûß÷ü÷¿ä hH¨ÄÞ"­†—5FÊUDúî;¢S×]yåJ =ÿüU]„ n£F ^âòÉ'´17„ÂX>ýtÀÊ•;_zÉòÁAU„(U™ßy§ûĉØùà%Q›7‹žƒé GoOÚ½Ã0‘œ³­€dù¼Ä ˜F÷„Qí%0 üØ«ý§MoœLîAsçn¾ñFœ&¸6^x¡ÂK4‹,°{Ÿ~†—JŽ—{ª½„ ¸!¢£ÑL¼Áo42‚ˆ™â­¬PhÁKFŒ@A¢”ЦèÈ éÓ#LL0ØT•—‹ôžß}'ì%Á‹›^yeIv¶Ð‚¥Hˆ‘ ­ð’£G/‰ß´©ª¨hãùç“UqRRIxxqd$6y<)Љ»v)N ¢êê{É3Ïøö[ªCe½Gjç%ÍÍ‚—$˜›gìßN-ÊÌòÀÃPi($ÈI,ήûïÇQ…ýŸÐT.âeØzíµA³fÇÄ”DDEFýŠf­?xPð¨°øã%¼jó â|ILD"ÆÆ{ïµÓÄ[p®¸Šî¿GƒâÇÑØK¨5Á¶Px ià%¦·Ü‚½¾µùškü&N„ëð vã¿ÿ=pþ|Òhûq¶Ýsà%ŠÚÖð’Úšš2ÍÞ!ÀXUXˆ9xd¦ tww%j‚E´¦ä뛚J×]~¹›Æá‚oßsÏqB†.cÇšß~»ðã@¹S!‘šÝÒ !2ï[It4-Rýe1NêÞ½4™ÊKT?ö’å眓êà€y ÎЗàY³ð‹‰%€OM¹ðxsóœ°0BgÚyÉ¿þ…çE¡ÎG¦»¸(@y{+m¡%*Š=`h}$¤S¹ &@Ƹót´šùe—&ÌEþØU'Z¬‰IYv¶ÂKÌÍi;f:þÅEH7 n´ÁM @–Á%R3J ÉKºG *õñøͲ‹ð%K̯½Öù‹/|~ýÕuÄóË/™;„•5†^YžS[KÌ~ >'`yï½¼ÔV`ZolÄzùÀ´€ºJsrbƒŠC†øüü3!´û^yeÙ…²n‚d¶C†lºî:ϯ¿&øÃúÕWͯ¸‚^hcc~ýõŽŸ|BÔ¤÷ĉ;n¹EpÖA2²óᇑÊsÌNꪪÂ-"êPð’Lww˜D”±±Â¥æÌÙqçÄINšDøªë÷ß{ŒƒªFÙ¬½î:‚R….á…xÇOز·‡†——ËQì%ÍÍyÁÁ¼Ǭ]‹hÓ•Wxÿ}Œ%î#Gº|û-×a]hD4.ÿbiØõÄÞxCäYVTDʽϓ&µÅÃo¾ývR’ž SÏ#”•ÉØ¥ššˆ™µ~òIÇO?Å`8y2õr6,uÿþ´½{y46æFE9|𯼨^QÑ1í¼äðažõÿóOeŎ†¸;·ß}÷¶Ûn#B%ÒØxÃùç+ö’º:â^w<òˆó°a,”ØÿÎ;èBeNYÑ…[o»mçƒÆZXà!+êC>Ä%tbvé¥Ûo¿ÝïÏ?‰^·„-Kœé¦Ë/GZÅ‘ÑÜgi‰çÈìÿ0¹ðBüÑææ,fF“k¯Eùa P øEE6/½äôÍ7è±Ïº ‰‡ÈV“ .ˆ55E§ÚÛï~ôQh“׸qØ g„S¨âàhjÂØ°á¼óX4$Vð*‹œóò¢LM¡bÆçœC/2# –†ýo½eÿé§ÂíEÜ(4޲ŸK|<&%bYÚyÉe ;Ä.¢øÔÊʶ?ü0ŠYÙô¥¥…€M³Ë/'‚`Ò­wܲt)TTTÏŸOsìzä‘… Ï;¦t˜¬àRb§ «Ç³}ã ·áýóϘˆ\!ÎÔíÇ·\w~:û¡CÓÜÝ±Ü Þ4‚~àXtB, Äuã¹çR(íXVP ìØ¼ö€Ï›‡¨;zˆXJ¤Q kTSìpÏ#8´ãŸÿ„ ’9 5íÀ–ö¤ØÙ!˜Â 8ãÇS¶ ^ˆµÇ¢âRÁ‰ÕÒB¼0ì5ûûßiИ-[XƒÍST f@3Ñoý¦NÝõØcp#á›Ç`4BrÚÿ À°ªK”ás9Òô¢‹ÜFŒ LŠÄ´ ‹~}ÿø{d4`Ö,`•5Õñ\{-]KÙ®Fl½S_Ÿlg·çé§AÛæ…X$/M&ƒYÿɺ&’—t Tjí}ÕD@¨â°¯¨€‚à;›tñ:ˆ ¹ÒÿÄNkÕÕ¼¤*.˜ÊJt /Ž{žxB™µÙ‹Ý,’’Pbk,f|lãl¡èTV6Ý*-Ýóæ›ß}G^xgFUö oö&oh@µS¾ `£ràsN£ì`ÑÜÌEô%Æe›/¿€W^4„² [c±;HUûa^Ù4Ló-CòÁïPš­<M).VvãÐìYÂÍâ´4òWöê€|±½‚!$òÃÔ¥=ˆÁöí[i¬ùÊ#š­ÀX<¢<¥Ù§K)+;[- pаQYR¢l£Â¢b¢§ccS¨jjÁ¾dlcSTÄ’6ƒQ𝹙 ¤%%:O)”‚ëII‚ÓˆDƒ"òÓdÊ$šíD$ ]EiPRyyJskñ ² »¿”•!ž#¥âÊ4J|‰û°aŠxš]t•º³"½¡vEAb£Ç«é…¦bˆ|ý¤Ù=ŒÜ„ŠNÕlZÚþEÓdíw5”dڊ긾Ôpå§&í²„œê¾¢$SäG-SÛñ¯õçíz‹œ5„Œ[Ê&lšC(Åö²Ø„ôX½ÚËÒ ÖãØ¾öšbàÙc’‹RÔæ»½ D„ˆbxØuß}Î}„SÉäÜs­Ÿ}Vášê E&bÛöú É•`u°ÒÔZmD ~û‹‚Ø©8ˆžÓˆº-=E¡èT¢i´»ÚdÇŸÒº. Ót# ¤© —µË ޷űF9.¹†¿2<ˆ;qþðCüY‚s«Ý£ MõóoÑE×Ò¤SóWzű1"IÉàÔ|²Ö†Œ€2£Êï wLjýïã¨< ]'©ºAó»y47³ÃØæ›n"€-FppÓÎb´Rêä¦èâ0Xñüó¶}¤ØÔÍéë‡jïú'f¤¤ª miµÅ8~ýXǵó˜²ÑQ¥â§¾üj2í»Úã³ÃGÚÅÐ.K'ÿª*%æ†ö>÷œâÑ’öøùIDRbb¢¢pXo±ñœsÂW¯V,Z”®“vé+•OœØúÚµè“&,=DN&ÏÉ =µZEtÖ^Bd®Ã[oaðSן¬ –ED»B’”²r’² Z$/1–Ñ}A´ãK:Q¨º·4Ž<8¼åsÎVi]œWXt°²”TËÂÑõÇjJX¾ðä¤{uÔ|qF Õxs”šcv‘îå3RãÖ%ú'ƒ º²ŠÁ‹KŒÄÑ}Í(Ÿ8›ØØØeA&.üî<ƒ§_óW×ýÇyº'…vWÈþ–¾Ïˆ­ÕØÎñë9È=hùˆD@"p6`D³J^r6éEËÞºu+Ÿ½K‘‡D@" Hùùù’—ô˜œÍ}||BCCCä!H$…€ä%g“^Ȳ%‰€D@" ÐF@òÙ$‰€D@" 0$/1”–rH$‰€D@" y‰ì‰€D@"  ’—JKH9$‰€D@" ¼Dö‰€D@" H ÉK ¥%¤‰€D@" H^"û€D@" H$†‚€ä%†ÒR‰€D@" H$/‘}@" H$CA@òCi )‡D@" H$’—È> H$‰€¡ y‰¡´„”C" H$ÉKdH$‰€DÀP¼ÄPZ¢[rïÝ»wOo111”Ή••Uod)ó¼ìÞ½›Ê:t(::še˜@XZZº»»Óç97L!õ¥Ú¹sgVVVII‰µµµÀyà4‡‹‹ MãììÜš¦ß5})==½ªªŠ9ß@ú’£¢¢‚Ö—¼¤[|ÀPÓ~Ì­§yÉè TÌÞÞÞÍÍí43”r\]]éT‡NMM¥GõJ/í]H :BŸ÷÷÷Gÿ úUfl"j~~>7ƒswa1üj"!u ¤iúKÓt·! !=ØæååÕÕÕÑ‘èZ†Ð7D—®©©‘¼ÄPxFw倗ôV熗¤¥¥!'êdGOåœq‘œœøÙ[åÊ|$¢·ÀKRRRèQ¢ç¨Iœt¥â¢ö@ûv%sxIpp0}ÞÏÏ šG´;|×…ìJY½•F @ÁKªÚØjU¡áà„8 ùõñ`$‚2r.ê¢v!ªy…×£“ž©Î™½Õô}‘Ø ^"¤UAÊEµÛô…úyJ^Ò]`péû”—ˆ‰ÌÓÓÓÛÛÛÇÇGLgœC_x•é¢^93]Y–bhèó:½ˆy'óòòòõõíŠj!Œ¡×ë¨ÃK(B¼2"žèó}D‰z\}^"$ã”`©‚\BßDFF&$$888ðobb"'=£¯Ôç%BqŠ:rÐv}Ñ%NY/í‚'#¯Â^¨ß§Ìÿ 'Ðæ%Ô¼ˆ!FG\\=G°–3 žä%Ç3º+PŸòÌï¼M–––fkŽââbæa\眃Waq¨/4LvâŠx¥¯«iÄy tx 3ÑK¹¹¹¼œ‰UTT$ÞÃD÷ Û¦KJµ —"¶¦E¡¸¨>rš¥/AÞÑËÊÊ’¤ÍÉÉý‘¸Ë¿ÌãBTaVäP»·_$æ9Å»¦H ~ž~ÓëóŠÃYª™™™[PP€s ´‹?y£à.HbÇ:xð '<‹ÀHÅ]!¡¨ÀòS(]µ‚B~íê;r ÃK„ ùiÜÍÕÕÕÔQ4A.š@»S ™Õ™J¸µ« NJ:pi?¥=¿qîmz&=D&V»%i×À •‘‘AüŸà»ª EU^B„[“žO/¢;Q;êË‹Q ¦wá ?U£]¯Lõ’—t—\ú>â%ÂR„}‡)•—0*j>‹[[ÛäääÂÂBf:º/sœ0Óƒ¹H·ŽˆˆS?9˜P`9’šœ¾fê9èÛKèB˜èN(Åððpz3ÝItæz†˜ÜqýЩ¸Hƒ‘ÐßêëëQ½<ÎtOJîBk˜ôÉát¨‰/¡ôÐÐPŠCÊ‚‚sP½"Îë#6†°°°¤¤$ eîF`î ù© öïßÅãdÅz»¨ ¨ NŸšèóc¸µ¶¶’?¼ `9¡j€ JB»>‡™Ùˆ–…”ÔÖÖ¢2A˜Àdr ¦Œ\êE U†3´L·ø)ê(4ùð“  7ž~¥ô»´6/F~Rš†9?¢9­IÓp…ö¢?ÐÇD]„Àôr¦¾$S¯Ð…ÈŠKp2f9~r‘–„}ûöÑî¢á855…ÁK(‘)NDÀ€6‰DJ7 Ÿp !é®ôò§cˆüéELž2еí%¢»‚ƒº¢q…ù ¬0™^K[¢ósWðo:}ž+t9¦z•Ìu·¦’—Ïè®@}ÇKÄKØÑ£G~⥊qÅ*Ó÷S:ä%"J€—H¡×érÌìèHz &2¦uô:S«ÃK´É™~þ:`ª’h‹ÔÉפï*¥/¹/9Ù\ÔÅ9§+ó’þ4u²‰K=}¬-p'Â÷J—8L/Á„CG}Ig’×}ú :ïK=Mˆ!÷¡7’Ñ9pæ‰ð®Ó<ÈÓ%6IáI…£œf†òñAŽ\„N…Õû6=ªWziïBŠH¼ó‰8nÌâE¹w‹è£ÜxmK…³ J9‹ÙЦ¡l¸ÌúQÓœEÐzV4Øâ…Á&Ì=ˤwŸS‡ë‘ßíë+8ûàùÃËÛ+ñ­b™'„‰ôJž2“A‹]ˆƒè"üëô(ÃÄ ±®DÄ[¦úR!ªˆ€áÖ@ªÔQ¬Lî_MÓ_º*§èKD„ˆkò IÄ’+ÉKÎ>Éè¼öâA±mƒ<$§‰‰ÅqšùôéãbŠ~×ç ÒØ~'v·š²Ÿ6M·êxÖ«ƒÔ ú’Jò’PƒxzË[…ÎÁ+ 8ôour³°Øä‘”n=(K:D€ŽÄäBˆ¾Áö(nlŒÆ+¤>¶ˆÊº^(ãýHìn ê%,ùý«iºUGI,ì%"Œ*ŒMòƒ =^ÂZ8•ˆpRSS]W]W_]ßP[«}½ós±DÏÐɶëYÉ”:èEb¿QtŒv'!$ôyqn€Bê÷%„OÖ¯ ^2 Ñ*/é/MÓÛléKN A~uê~œðCyDðqЫêjkŠ «ÌÜæÚl Í:ØPÏE5Aç':¼„çjª«êëjøk¨«Ñd¯)E9SþÚ m/úø$'ü<öTeu•’§•²Uó¯­©ˆgµ…VsOUW·‹"~ ñ8Q•–0jíj卿¯A¬Zƒ¬Úó2œˆœÎSjq]„w°%Óç%j/EßÀD78»°tÈK .Å)EÌÔgWHýÒµí%ª„Ø¥™1à5@™»‹¡>/Q;Œvç!z‰ZSwQkÑv\?iDÎ9ÔÇhàÓ]ùËiüjŸ¯æ»º…¤:ˆê¯jª¯ij¨mj¨[(²¡¶Q¹Rÿ‚ա¹AùÓXYªHÖLšºš#-õA±YÛœãèàG[êƒS¿žïöãR÷þ´½Ôc‹clC}M}m5Y‘?é5j › +¹‘yÛá†õ6Qî!ém‡¸_UQ]µÉ>nÔR‘‹Ý—Z† ¾ihnTÄ#+ç±FåqåŠò“1S¯ùYüdØ8cSÀO+ÇyÙ.¾?^‰Š?ØT›^0b‘+:׈MÉ7µ‹^g±×3-‰Ë^m¾|WX\Z>™<Þdí•ÔÜT·Ù!v§[<ìzanéÂᚎ0¦û£ÃráõuÕ[c÷E’¬¢¬¼ÂÖ7iÍÞsû˜ôœ"HŒ ;ÓͽÂ3`K ñj¨q JÛ°*„Ťä‘gYY…_òê=f¢ J˳òŠoþdÛ—¸À˜ìæú~ÿbÚ[œN>:öz ¯³¨¶Üxã7¾ýö[a;éJÏì# ÉV›— ìYä‚Þúî»ïÄH¼úê«¡)h2Ñæ%TQaQâÛ¿lüð믿²»‰0ôt}³>/á=žÖyþùçábÏø%K–üùçŸÔš½û¾ÿþ{^å/¼ðBìÿâ#8·ß~;¯ì£G&+vO§Ë¡/Eãöwpz|m^"úÒu×]Ç×Ä· Î?ÿ|qH_âdÍš5“&Mâüa„|¨ˆccãk®¹lŲ‰ 6|ôÑGQ;ª­[K^Ò&`X^‚ý¬¶º6(6esèæ}™&‹~0÷Ÿ‡ ³÷ü8iÃìʲ&l§œ¤ôyÉËÐýþʰù¥ÏãÓ©G6î‹2wˆµõÏ\c½Ç#áPsíC#v™ì‹²p_g eIÎ.ž¿5˜“ín‰ß,tÃÚaë•ôì8ë]n ðHÌ÷‹ÝרDá©ÅÙP“–ÿýbÞcZçH~ÉÊÝá[]’mý36îÚï›’ž_úÃ2/»€ÌÍNq8} _ÏuùÃØÏ>0µ°´|æ¦ÀÔœBÈ>HhM5™D$åîòLÙå‘bl•W\¾`{ÈÚ}qvé¦ö1ØH\‚SlCþí®‰ë­#‹Ëʱ˴µÖÏØm:Ô\×Ú\ëjf½Ï/ÕÖ?kôr¸‘c@êôMAûü2v{&––!Õ=_î°pM Ï%ÏSÛ­19`ëð(^HÉúõëÙléÒ¥˜ÜϺÊ×ç%?üðƒä7Þx#û( Óç%¼ÂŠo챃-šƒm Pìnõm}?ŽÐšPlBâÓ6+W®Ä¸ÅEøFë²Ë.C›¢ù>Ë=÷ÜP Êä€Á<óÌ3ìÒÆõðþ@käÈÔ\{ßrË-ðZ0¤ ]zé¥Ú¼Î¥“+€?vìXl$b5ïìÙ³7mÚ$BÈoºé&˜1ÇÔ©SùÌ2öJéÔ’—Éè4‚—àOÎÉ)ßäiµ'Þ´°1}KÀܸìদ†÷_7Êì#gß膺¦Sö ]^r¤qÕžˆOÿr™a¸Ö:‚Ø‹¶#?¯ô·Ê{ÕÞèas\'oðm¬¯~ów»’rzssRFáË<½cra3mGY×stètÇÒò Gÿ”‰ë|HÀE¿¨,Ì!uuÕ˜1è©ü›’÷ÂKœR³Š¾˜ë<Í,xÅž¨á³gšâA·Êgê¦`ÿ˜,É–í s ‚*µdæϳŽM˃7@æéøü ÃÀ†1ĺ9X‡½Ä34 9`k³Ìc‘eØúýq—¼iÚPSí™õë_²MÉ-=ÚÊ;ÁÑû¿Þ KÃÀÓ­ñÖ­y¹¿'Öá%¼KáæGU`fÇêþÀ<÷ÜsÂ3}}^ÂÊ*/¹ùæ›Qug<éã£ÏK0¹‹o²óæo¿ý6 y c 2A5y¼dÕªUÓ§O§Ö„Œ`¡±.¿ürô /¹ãŽ;¸ù믿 %¿ÿþ;Òs¾xñâQ¯ }^rë­·ÂKÀžÿ÷¿ÿ]›—`™šî€m£­­é×5Þ¸E¢“óü¢3Ó²Š00 f]@å;f…—†—àa«ªg89{À7y±e¤¤¹¡Ž ¸ñ¢´ó’Ôüï—(¼z³ùy¥7ü ,>Û?*+;¿{ ᱡñ9 w„(a%mÍ3Íøò¡ùf¢qg˜ú§dk‚·èPS]kS]@L6Fl0xsfm ŠÍFæ°øœøô¼ ܰmluŒ›n꟞•’/BXŽ´Ôa/¡\L/m‡êqB-ÛŠÿˆr½#2x þ”œQ›={pH\¼ä–O·RAÝHÛ^™'J&úöÔoó|ÞeΜ9C˜™™1»Ýêêó^ûFŽ)ùµ×^‹kÀ ú¼ïŸøFf¾-2aÂôJüúg·-ôý€:ë„ÅÛQYó,‚HŸ–Od.kd|#3'¬õÉÈ-òŽÈœbì›ÅE„ÉÎ+yë÷õuUû¼©†—ÀÔÅÛCò‹Êˆë?ÚR7a­¯s`*ñ.‡Ö[ºÄcÔ‰HÌÍÈ)þ|–cUe+†ü¢³âÒ ¦™øQŒDÔ1·tkÈÔÔß§ÂèÇ—ˆ›ôL¾Õ]|žþ좧ÃK˜|yÕ1bÍaÅÁ]wÝ—êî¬Ú§¨ŠÌuâ^E‹ƒ ³ù²eˈLD¯œò=ä Èy:EèÇ—Ðyt]±bÅã?N Zjèñ­(HT }é?ÿùŸ‘ƒsX[[ãÛ:••J„¤à»Áª$¾êL¬ X¡wÏn÷;|zëY}{ 1­| êÁCÈ:Ñ$Œ>t5fÌLV|O úÎW…±—`šzûí·ùåOOOó8þààà `’ö’¨õ~ÿ¼¤±¾1>-}Œõsb›ìöôç«ï}qÜõc½÷ö¤Û?š~ϧÓïùç›çN÷û¡Ö#Õ•Õ'î rBßÖY' '@UÇç(KW”àÐÆi¦Ðfìß,p[bRRZΨê'ë_×z³ †°ÜŽG[¼"³~Xâ1|®KPLVÛ¡†°¸‡€TrÓøY¢³1@XÌB¶Y¹ÅNq°îbðHL/€XŒXäF´ ÎÄÈEîGØ,Ž,C°bwø¯k|à(‡[ücsF-õüb®‹w8†Zì4û½“H?f¹çâ¡To«S, >Ÿå59Ü\G Œç«y.“7úÁ601lëk÷û$Ç¥æã—Q„lkÞá–0z™ç°ÙN)EXS\Ó¾œçòÝ"w¿˜ì#­ ñ¶6äO{;ß±|º·æˆ”/¡jšõ†Êª Þìù6 κÊ׿%jp*@„Ç{Ì`U—/v…o¾ù±úé'<8ÈÚý·Géóñ¾þæ›o>ü¾ûîÃ.‚Cöä“O~òÉ'¬k––çÀ?>øàΩ>ô¯ ]N¼ñ£59D,N‡¨WW›—@@æ½÷ÞCAìèKX›öìÙC¯ã' knÁàùÉã—ˆO`N‹p‘“gŸ}ê‰ñÞ]œ¥½d ð͆u³Ö-¿ò©ÞõÚ“·=÷صÜ}ñmW^uÏ­Wßsó…WÿãÉWŸKLhlTúG']Yo_µÊ–æ:–´ˆ^…ß F޶£X4CSj•¥³ïüa‡ý@\¶4âñiæï`c0“@8DÑü<ØTÇ­Z‡CÞ¡¡·ðUž=z¨ØXöÖÖ‹ÝMNp¸DYï’’¾¥Q)‚ãP‹’¿? ¬BüœC™Á[xeÇÕi7uð”²6øX°9S\ûS ÊSBf¥FšŠ´‹ÑvPÚ+³ÃÀËDŸ—ˆ:‚S¯Y†°ý—/≹•Cl¨j€MÓá¾jê\Öß=8𓎪ÕÉÔŸ?Tf).ŠÖÞašU´,× °eϼHÚ¼D1ÊEMÀ€å\8k8Âj©­ ÆËivEÉKú=/ÁÎLW`©ÃÁ†ƒ­ ‡59|ðèÑ>•ÖÆß‘Cm‡[Û:‚ T ÚNÅô¢õ}ÍVþÔCäÀ¿âó9Œú†ºªŸ–{6ÕÑ_•ë"¥8פÑüÔ\ÑÊäxJ5½Î]‘ÿ±ggu,ý±¬õÊ¥óxû~´+C•_Ef-h´2i¯Ñ±ôBfC»[`Š-¹˜ Å÷qt𦓯RqО¸Ô¦Hu Ï“%Vi‡ ))u0Ô°b\kw3õŠšƒš g#Hò’~ÏK0r’«xëk1œhýÕ)ç¸.Ôí´;éÇâE|§ëÝ]1Ÿ´5‹}Ûä!ÐG€·+Õk˜øˆE]#†#?Cë:n Õ;f8²õ¢$b¾þÕ4½Xý3“]Hô¥3S\×K‘ßíëÇì„ÆÃž&ŽN>™­¦éüDX°»˜X-´[éeâA…݉N¥ÝK °úÝíóg½ à áã8ë’ô©=˜ŽúTžš98`_##qôc=(E×ÿžp× ©NJŒoª§Ç™È%Ú¨ß6LX0<{‰ð¦úR { A¯Z€„;IDATØ^¢ºØúWÓô—.¤íäöCëÿÒ^ÒMll,ß `ùœö‘•™‘›•©wY'•îO¾}…W,89ERy["p*XœI^ÅèTÛ£Ø<”å£ôù¬¬,ÎOU'C¹¨â³®úcßPD¿Â†îb^@™%&&ˆËI%m^Îð}f¾àŠÌ|Öä»ï¾ããvgÛÓlV}^Âû·……û£ó5ÌhP¾ ,¾Û‡jüì³Ïx_G•ж£)ù€Ëà1, ãÖ‡~Hz¾‚+biÏnÇ;Mpzñqm^B_(…X¤Æ!–花 íãûÀ'N·ø>Ÿ€á1ùb3)ÉŠÁ"âB8àÇôÃî¢-yÉá% 'ÍÌu²ˆØ¼?Ël¾ÏˆÝ¡«©ÛäíŸýj<%5©óÂ)ÇaG¼Äw›CØÁê‚„¤ÔW'Ú´5Ï4ñ¶tŠK1ÛºzwPq~6ú~™e€X"Ö‹¹æ¾A‘I3L¼ÝüãB£’?žaÑb§cø#ßívô‰‰MLÙé™°qbZÀÊ€)Â7,ñ«yNõyœ‡G§LÛèã“ •Y³+(:>eÄ瘄TWÿØø¤4ǘ¥n‹¶ù‡F%A#à:f¶!û=£w8„Á×f»CØÏ+Ü«òãS§›x‡E'6Ó!$2©ª4ï©1{œüb`*Þ!ñ³L}|BãIóí|ç€È¤œì(Ù>!ñ_+’01í|9×É'4!(":2~¥{t|ò뽸=ŠˆM®*É]±3à›yN‘±Éí¾ž^œ*DVú~ñÖ… Y²d ¼DX}OÙ-û ^‚㆙”oà¡Õ>7Ýt“Xrv…ìÜ^"V.¼øâ‹öööðYWT/o®Àkhbw«)õý8Ô”š°°0>Å)Ád2þüI“&Q}¾wÿÀntÅWp‹º³ àÞ{ïåʸqãÖ­[·jÕ*>³üÔSOñÍÈíÛ·ÃáðDôk|ºf'‰õyÉ-·ÜÂ:0d¨bvb ð1œ,_¾–N“×{-°ðÏÏÉ~÷ý„eT–ä„'@¼‚âfmòƒ@´5¿?Õž¥¢»"fšy·Ôb±÷‰Æ€ øDÃ`N–8¼Ä¹¡2?/7ñõ\çÕ»·Û‡O\ë¹|G vˆ©&Þ­ƒ¡5lGŸØó6ÚïvŽ|}â¾€ˆDÄÀdâšðÍ|çÆÊ#ÿ—ÆÛ˜Ø›Û†.· ¤^d¾t{öž½n‘$ ÿ8Êm­í’-ª·&‘~”O‡¼ÿßéåÕ–×ú³îÄÑ·—èð|"ýˆ—àÊؼ„qÏ€~ñq`m^‚¹H›— /¹í¶Û˜ß]]]1€aCâÖØK>ýôS>òÇ'å°„õwêÖ+³AWx „¬ˆ Ñá%ûöíƒðÁH¶mÛ†s–O oÞ¼Sé± Ìš5 »Küe’—ô{^ÂðSb:Òr·»9Mwývÿ¨èô@Q«¹[Æ}°äöáëÿ=nù$XKÞ©^û:ä%c—»áÁ«hk*¹ÈeáVÿ>Ñö†X¹F¢é‡L±;ÒPÔTU“4b¡‹{@ìl3_~¶µ•¿7õ@JjÚN§È¿Ì¼ñžàâÁ³³h«'¸lT^òõ|…—äçfbØøz®“™]¾›u{ƒö¹ã.ɇÁlÃʲÖÎÁO¨À·¨ÃuEIÉi¸ZZj àmmuŸLw‹IÚã‰U£íhYT|ÊÏËݱŽÀKÈɹbD¼b¾[à¼Û%ÂÖ+z†©wl| ¦}^òìØ½Î{Ý¢°ï >T±Ëàçls_SÛòâÜUP¢¶– W¦ˆ•I‡¼„W.%|ý—sw½Î}޾gÍš5ª‡©–G÷— ˜}ôQÞMõNNN?üðö€þ®t;´—ðMì%D6PSÞÚq+L:U¼ÐsÖ{á…ŠpyM¿îºë¸%õ`FÂJ§n:tèP®@näÐÕç%*ÁíÀÍ„_ŒîŒ‡ ÌNB¿`133Ã2Y»víÿýßÿÁö (ŒñÈÈH¸#c§gÎDÉK/ÉËÉŒIži?u^äK÷?=bÙó»7•”}ðǣ̻ÿ³%½2æßë,¶ž"ÆP‡—Ô”æ`±yh[cqrjÚ<ôñ¾ˆÅôÞxRæšûðŽ®(Ê}ög뙦>S6xM^ï‰ÚNHJ›¾Ñçõž¸QPÿEÙf6¡èïšò<âaÃcSæmöýy¹*ñ§¹YžÁ ïN±kª"L/319mñ6ÿÙ›}Zø-Øâ‘”˜œ ÏX¼=€GßBR|bˆð ®BI&­õ$Á4cïïº`k„šü¸Ø¶9ç‹9ޏ>øÓÎ?4±¡²`¹eÀ„Uî»]# m™·Åoþ¿~³Í}“R±$A°ÜâàXMU…¸R1‡F3k‹Íßâë Âm4ßÂÒOK§pXÔÒC>2¾¤CÆ ÏK„{û‚ øæm^¤zšèð”Îò/¿ü%‡7ç¹çžƒúè£Ï?ÿ:BpN^õY^ù /‚ä?þˆŽ466ÆÚíÃÌ)à>|8ÿ!K߆Âà9‡‹x{{Ü#øb„”¼d ð’üœ¼€ˆ¨,?ú#ðÁqûºìöW'ÞöéO¾òÓõïL¼õí_oºû þ˜=¹´¤´[~œ|œ,a a1É"2uN¤'û½¢v¹DØyEA# ¯NØçà½×5fovHT’•kÄN§ˆà¨$GƦ–AnD”¦Š³†ˆT8„Øz$1%ÍÅ?–dÈÆ]˜„[”•KŽ\'ìÀ¹Û9b—s„Wp¼²[I–B œ|cˆP)-Ì&îÄÖ# 2´Ë)‚¸Ì8ƒ¡h·€8Jg£,SœÕ@°Œ»¥9È@$ó IP"]4;©À<4’(8T$lkòmRJú~¯hrpñ‹…¸ }Câ±ÐdËõ8Í=ÚKpK3gñfß³©Ìq?¢ÃKHŒ„P“72buèõBO?Cõ80'Xa&&&»víÂ†Š† ”~m Ðç%4 ëqxGÇY€û€ŸTœE74ñ°ð ®Ð¯ú²eË@KÓyÝ+W‰â®èý¢ÓïH•)öUHq°‚0(W 묤#^„ÄÜrww­ ±ZÁÖÊÊJ°±u²Mµ’— ^žd…ù+L6Ýùüÿyû£G_ï¡ç_¾÷‰§|òù‡ÿûì­÷=<ô³a ‰§ÔºûªiâR5;ª)',F3ã±¼V³Xa Ïþ¼·²4O¹¢¹ËRç'¤×tSåŠêìÐ,»=a@‘Ïñ»Çž¥e³5eu®¦8͹2l”•ií9 ’F-K”.V2ÃEøÉãböQÌ3TGS´’Fó”H#6 á¹µK¢I/r>^/x’³DÉ©ŽïšÒ+“ÄÊädq¯µe™Î¾jb^†‹ Ì8)1@í®¿ ˜.3ç†)v·zw‡û—ˆ¦Aáñ¯P¨Fq*FÝ9WqmÇEáÕw9 ¶e»Q¯$Öß¿DíK%¬n`«t:˜ÀP%vš93C…TDâz„”¼d ð1•7ÔÔ6ÔÔ5ÔÕ5Õ745ˆ¿Æ¦†¦šªjíÝEwÑ?T^’œœ,zFç&ôô¢mXNØ ÿTÊûƒºG?݇^L¦ÛLB—èïCoÈ2wÌÎ÷¡×®©N­;o»Qw!í0½ÊK8ÑNÐ Œ}=:$/é÷¼„úô'ŽÔ4òI‘¦óCû»}â£k¤àÓ€åÙiºß <Õ“òþ @@|Œ K 0ØïöAÁûãwû›8ñݾ® ÕþØÝè?¼¬3A÷¯O*ö;¨E_b­µát$1uãLë‹•MTä!H$‰€Dàì" yÉÙÅ¿‡¥7à¬Ñ;›x—Ò¿ÞùimmEŽ<ÛݲdúA‚« éTÛ£LlOÉ¿+dG¼‘5œøÈ{ v¤~Ú4ý®9ÀYô%C“‘¤½¤‡´à¬?Fvr£®¦º±®¶²²BÿV'WXÍO¥FD­stëY™X" ƒ€èEð–³VÓ0ñA0±Ê‘ ^ VH}èFác•¦a{úR©MCõ£¦9ýŠŸá¤0ú’áÌùbê/ÉÒ^rÖ9FO£÷øQYÙXWžé_]U[SS}ÂÝNˆŠLvbU:óµzt=+5eeeUuuUS}mS}M]m5Yu’Éi–¥Ÿ3¥©ŠÌµ;á§¶Àµ5Õ¦Éí„£+€hËЕô&èEðȮڴ;•!ÔÁħ@¦·úü¨ª‹…LÜú]Z§ŸŸaú¨šƒ FiþÕî?dí‹:ó•ά2`ðé-ØŽ‹ÉDä±êÏÎ1ﮨb꼤'„À@žÑæ%tŽƒuñI…ûb-cwX{Eiiîœ h÷}^¢É°¶­µž¿£­õ届ŽhA%Ĩ¾¶:*9/>-?+¯¤j¢]ÅUt³¬Ko¨¯¡t˜AEeeKSí¡ƒõœ²E½¸kÓfJœs)·°´ ¨L'Ci¨«VphQþ89Ô\'rëœi5ÔÕð×õVèî6ØôÚ¼=ªÍÙí Œ¾9ë°è󮨃Qu ;l_m^¢ª1#AaZ†)v·új‡¼D´œLŒbþE¡ŠŠc–ã Ô™Yü亸¢ö7±F¬[ àÄ¢Ãkóm UœÜ|'OÑÅ«¬6æÀ®vE"j{Ð%/1vÑs1T^Bó×0Ñ—ÔÚ…8X»—ï˜f;7:&¿¥Y®]W:¼Dé^­ aéëm"Íì¢ù·­íPyy%ÊXä§Nˆ\Qþ47ĉ8WÔSízëˆñk¼Æ¯öÚé¸Y!Ç(tAM ˆÎ2;cj½fo„R–ÈP¤?V˜ZV;Ã`¨h—xL*Å¥æ§d â™é˜r¨Y™²j«ƒbs¼Â3HŽ9GK¤ÊæúGÿßÈL®k—·ˆMÉ7¶Üá·Ë-ÁxÔ„Ãj¢-¡€EÍJ%¦ç'¤çkèQ—Z¡+-Õ/ÒtÈK=üì‚%ÏÙ…E‡— z=""‚òÿýw¶d0Lj¢ÃKÀ“dÆ ìpÊŽXÔÂ0ÅîV¿Õç%ª¾äk8P[:Ú”}÷ÙãuåÊ•ìY"%ۢϙ3géÒ¥œóÎÍ ‹/fËWÎ…mŒs¨ÉÙíxÝ‚¢OëðºΞ=›s1õ RÂO¶¤an1„ùI[€?[ÄrÑÒÒR°Àg±ÑÍ$øb·ª yIÏ <)x‰p1474†ÄfÙ%Û;ZmM^V̧d‚ky1m·è¼sèð’–æ:× ´¥;CÍíc^bùÛX2ˆêm;܈ɡ¹¡¶íHƒæz ÆÍ ß²om¬¯!ïo/ü²¬µÔ>Ôp°¡æhK)ÛÚB6øW$ÆöÐÒT7~­Ï 3ÿ­N±Æ¶Q+­"Ú7àÒ$à¯çJ#?BÏ5EiRì7 7'&FICbø Rñ ¦ˆÃ÷ÇÆf“???þËéÒ·M‘¤´Œwèûùn/ÿlSVQŽ×æX-˜Oð7)³Y‹2–Ž$MéG›Ù‰IηpŒ´ÖçÇ¥&¶Q{ÜZ›ë1¢(ù+’°=ÈûYûS¹Ý-q‡[2å’CwÇg·³¡%Öç%T_XæÙÄúý÷ßç¼g¯S½XS^‚bƒ”ð}TæYTÝ{ï½'dîÅ{%+^¤|uè·ß~C°;…gÛÓ¬©/¡!¨&¾è¢‹Þ~ûmÖŸó¦îììÌŽòÔš¯äp 6›ä„æã£qèNd˜7o*Ý)˜Ê]wÝÅ—ÿ 4ƒj0vÒÚ¼D0pƒ”€!H²?W¸®¼Ý<ȶ¹Œ¶óç._ÃaA/ŸÂáÛà|7ÇÓÓS¬çyø1̆/é°÷.ý°»¯’—»è¹ÇxI%< 3³Ü&ÜË6{«mŽéïvµjò‹ \µÙ©­My98å8Ôæ%åtÐà 3Íw¸'i´,l );¯¸°¤üÇ%¼ý·jX°-Ä;"38.g£mÔÇÓž½Ý<|¶óÅo˜<6rwzN¤ä¡ïv]7Ôâ‘»l¼’fYG¥Øû'æðè÷»©óÐiö—¼iöà7;}Â3à(šø…%çjÊj¹õ“­<ž”]tå{æûŸé¤õ>­µ 9«÷„·Øíoÿ3›½…¯”A>Ç­ö¾ôMS£gÖ–”!ó¢¡;\âïûÆá?œæxÙ;›4e~{ò¨¤œï»“ífǘ9[‚o.(ä›mF/¬¿ê=ó§ÇìE†øô|¾ðgb‹qè ­oÒ…o˜\óþæ)Æ~”EÐ ²ðK6;+§©A šÉ+,½~è–KÞ4µÜžD;ß”¿½erõÍ¿®ñÍ+-ú§½Ûì½)ö¹¸±NpæÄmàëðº3”˜õ^}õU¾¸F‚³®;µy ºœ×h¶ß1b„W_}5l [D›—]òì³Ï†‡‡s‚ý}€¥‡WÕSyCîBú¼Dô¾‰Ã×p Ø?Ä{9µÆ(2räHL&—^z©°š°ëÉÝwßÍGƒúé'²bsêý÷ßÏž`Ü/ñýŸÞj;}^òüCì’çwžÊK8Y½z5,DŒŽ±cÇò•>N„+í‰'žàœðÙ?V‰rÂVô€Zéî0—¼¤ç„À@ž¼•YYQç±)býl“™®Ÿy%Ù á7o6&=µª±ñÔ“”޽ŸË^Ϥ•Va0 k¯Dœ¨ê¼Â²/ç¹45Ô´m˜¹)È;<=5»ÐèEcÜèþ»Âöù¥QnIeÕÏ+¼ Ë8ñWÅ^”˜;nµOFAÙÃßí ŠQ:ýèåž1Yœ”×ÔO7 HÎ,œ»%Ð7^rÐ-8mЉ_M}Ý)Îs·EX{'e敜÷ªqI‰bi´t‰3³[´+ÂÔÁ”Ãè¥ü;~÷ë÷k.1³ ‰§,Å$óêÄýÅ¥e¿®õ).-dzÝ9nñöÇ›^VžâHÌ©øßoʃ掱¸r²¿žç"ò±öLœ·5*†ãfGâ:›ˆºššÚŰùÎö$ ÑÚ}1ÛâÂr†ÏuO)Ö #M;=’,=Rø=Èí%ÌMhJÞ±xÙâkòäÉ,%ë··¦c‘>/aªå{¼¢Kðí1©õ ^òÚk¯ùùÁžÛ0œ°Møã%¢±ð²…††~òÉ'‚—`Ó¼$!!aôèÑ4Öe—]†Eì„ /¡íHÀ×n90™|øá‡;vìÀÕÅ‹>JWRªv|‰ð㈕ÃpÜ·Þz‹Ÿ‚(pÂG£¹ÜÂv/Ù½{7ç°¾¡óâ‹/2¢•xüx¼, ‡\a"œã"CØ¡ÊK8çàCÖXGD ,ŸQda)áñ;wŠH ná,í%ýžÁÀKÿwEýNoç).Öx‡ãF9þØðÍKïú|ÍÃc–ŽMM/n8Uü‘/AÅÆ¥Ô(!u˜é¡8tǰíM›‡ÏqB[jiøq™§Wxzh|ÎØ•^¨væ/TòbËÐ̼b !ž¡é„›:X÷èð’£þÑYã×úF¦,ß–_„÷¤ù/ó 5{#3rŠBâs£Ãk­#m£‘P„ žC‡—ˆ¹ K‰Ï¢E‹xåeÎâEíìÒ¡€Aøqx4@ÃC‡~ ÈÌwQ½øqκ-ê4[VŸ—ˆWvºÐçŸ.Þé bÀ!È9~Øïë矾h;îºë®ãDølmmׯ_Áˆ»Ã† à³Ðú4î§kó%H±¹9,,ì믿&  Äò.œbqqL³Š‡!ÜŽÈVN`Џ¡†"¬WÑ?œðg JÚKbƒè ÕëëÒò&îýyqÒs“Ÿøpþ=›,OÏŽwòÍ»ø’žúöî›¶´4·T'Ê'9tx &ç ´E;B§`̆}‘Ä66Õ/µŠ0Û½Å!öµ ¶,i ‹Ï™°V‰‡…A/VòH4ݵÃ-ž²Z›êžùÒဘ¬ß7úG§°Ö¦ ¨ôpK[XúÚ½$N0wˆÙæ‡\³6†%ådJ ì˜å!IöŰþe·{¡ iù‰éoÿa·W“ÿZ눸̂ øÜe»Â6ÙÇlqŒý}½/4bºYQ/ðþ|£²‘‡@Z®¿1i¿²Be…C@JaqyV^11¶Õµ5Ëv‡Ø»é@ ‚ípÆ?Ú²foø>¯$ * ·‡ 1¿p‹ ø¢I0ÌìõL4ÞYK^Êþ0Õkm¢¶:ÅíöH\º+4(6›¸œMöÑ;]ã7;ÄïŽÆæ,Øbë“\ZÆò“ADMôãK€Løþ=<<þüóOçYw‘hóÎyáC»ÿòË/„õ¡óx/Wœ¤=ZëØ§ZJ'îåAÜ+ŽdFm˜™™BìÎi" _Â;º««ë¨Q£þýïc¡ÖîîîhGe‚&–ŠÐ|ðþ¥³ñ¾-$Æ9ÒÌœ9“ M3±—ôwêvš«®LÕ#˜ð‚!«„ Ó¯¸ÿÀÚÄ耲X Œ„ÄÒߢ££ÿ 9øÎ”à%4ÍAWäâ–-[¸(í%ƒˆ‘ˆªÂKê2órÇlþêw¼;ÿ¡'FßtÓ>þÁ]ÿ|ûŠGÞ¿ê·þqÛ3­3_Ýzðp·x‰² ¥µÞ3,Ýx_j^Â+ A¥•Uð — ´ˆ¤¼‚â2Œ„¾b$Àx€wƒÐîîÒ xDz:¤ª’WXšC„Glj>½_]ߌåÇ„zIks± „‘’¹‘3&Bp ¬³Žd 1¡¦qiùïM9°Ý-iÓþhr;r¨‹X&3 v‘ƺxRNA)cA¬òŒÈdMËÁzÃ`”ü/D™„ÇçÀ ,+v‡C¼pÐhì.‡×ïS¢O޶6ä”P4¼ÂAVbíqjV!bˆ%N”B˜‰X¬ä‘AèqYyY™îÞêj)/¯8ÒÚà•¹Ë5ž[ƒ™—7¢° £Xm(O· ¼½2kg¢ÃK†W½æe<¯‰†¹àV0Jß?ËRÌÍÍ©ÅðPèóˆKiЈÔ›ØñV]'Lè«ð#ÀÂMÄfÖèZîò½Cúìö½^ïÌ=ËPÇ^¤¬¬y oÕªU€†/ŒA!XK`` ³è_jMÍóZ+†3i–-[ÆÂ% )éù“~œ~Ïc„‡Jm=œ'-þkæêEÓ–ÍŸ<Æ/Ó&ýö×ÔÉMýeò¯ W.ÎÊÉ®¯;Å:ò“ì«VÇ.&(i€Ø•D ×h­Ç aÔ<¬L*½‹Ö'=þ%Wã· %Ïi’¡Ä«áb73rS‹ýÖÐë$h×^µ¬ Vb84›˜5Pk’}"3¿Y€«åÈÍr‘RJÒ€×F”¨f"!V|I2Ê媢’’+ }áqM!q9“Öûþ²Æ‡¸Ĭ'˜WSwJuá_Ü[\S?ÉaH†Ê»õ±ŸxÄÖpí24ãdDÆ*®c/Q'MAM v_5ÄS·ŠB“õl®ïë§ô÷U£D”ÓÁgÝ Õ+Õï0¾j¢NÙ¢±+(‡ºÄFM F:Oéìºf˜t³Wpën&:ñ%üT!݉+ Ç ƒZÝW+â S{8‹yR4̯g¶FÉKú=/!Ô‹V¤+àU(+©*/«®(gmNµúWQVY]…¾¯ÝÉ/Q¿sª´gá>Œ%¿°$0:£î’Þ=Ȱ¦ª2-»ÈÊ=!4.[T³Y¤iÖaÖÖÕÖ*ÿžðÇ5M8Ä©:¥à%ˇ!Ô£ÓJŸä ‹Žf+ yôâ;¥t­^È«²P째bšƒÜ÷“Q/c¿ŸHÝ=1©WlšîUÒR‹¾„mÃÐú’ØE~·¯³)ºD@" H’—ôË%„]ÙFIûà‚Þ5$üd­°isBpõ©)$'G@t!ü8t*z”aBÅzZ"´èó,1åÜ0…Ô—J,ÆÓß_îœÔQìÓÕ¿š¦5=»ˆ¾DŽáÌùHÂ!b‰$/é—¼$&&&MëHMU~¤ó_jzFZZ*ÿuù`:q À Û6wù¹S$$+õè­†[j"$~:=Ê0f¡3 }žõBà~q 6lE7¬+éÅ¡jPu§Ž,±¡iXŹAÉ6„} Ž+fiC¨š‰bOÉKú%/af¦Tí#+#; :Æ%48)93Kç^§?é Ä€'Ìw"mFíGw2kOËã9Ù™eE¹¥…9ù¹Ùüìä8ͲôsV2Ü-0®@¡&ÇYŽVW—(eåQ”u"+RI’.OÒÑ!Úò€F^Ž2q#xYQNM¹R‘ŠâÜì,‘É Yû©TG{d*ç'Ö«ý® XÈ™ù«,̓ jç|,·è PYeðuJÔúõ¬§ÏK¨-$€·| +`<»uÔç%ˆÍ·ú‚!yJ^"`D» 3ï¾XæÏ:°§ß¬ú¼DŒtÈ 8Ñ.Ð2±®OÞÑåDƒ·‘†+t9îòg"?ù—G´uðé‹Ú¯sÐæ%aÀKA¸´û·”<5KAùI0–ÅxAŠFM@WWº‹ä%ý˜‘èðš?;+#)>{¨K¡[™å\—yö.QeEy]ìºö’ŒŒòâÜÍv¡¿­ñœºÁ{Ò–ÚB&Îì$›˜•ÉZUàjnvf~®æ\£Ü+Jr§mô^½+p…ŸGTIA6WIœ«¡ ü+“I~^–¥cÄ”õ^S½]í~¤¾(MCMòr•4¨º·RV6ÍÍ›¢‡Ÿ¹”.¤Rä!O•‹\PD·Ê‹r·Ù‡M^ïùÇz¯U;IÇSä&2܉¹HA¹9J>\Ùj¸˜bõQë%$'Qq~vBrÚäõ^3M½çmö¥Ùæ¾È¥Š-pÐŒUE$‘¥`–Þá^Uš+¸×€ûì3v}e+R4%k”øŒÀðáÃAå ƒñ÷÷g‹ØqãÆ Œ“4l]Ê"”þŽO·Àì$±/d4 è!HÂáÔAÊ->üâ‹/بž­ý¡ÂŒbSSS:Þ|@ë@DèŠß}÷;ý³-›hÄîB-yÉâ%™yÙù^áñöiû v¯‹œ–T¼ß;,6xç=YÕá%e…9[ìÂnõßí±Ã1ÜÂ>l–™7ª4.1 Œ¢M ˜¹V”tt|jHTRq~NLBŠXBXtÚ½(?;:.åß?ì)ÊSHMÓ¼îäfÅ$¤E$•åDÅ¥„'†F'‘[EqÞOKÝæoñÛëié>~•[Ce>Z<0<1 ,119) ~Ÿ˜FIÉi…yYyÙñ‰©‰¾¡ Å ×HIMç©àÈDØÏLSŸå;"b’a9¯þj³Å.t¯[ä ËÀµVA¤IIKŠJäYÄ(-R¬©ééT*,:N‘HA0¡¼œÌ¸$¥^¡QI‚ Ä&¦’Æ7$!19ÕÊ%béÿ»l´!…çRAŒM…xegò,W@‰²|c†üiÁKIM£î’šèð¦'4_ób/H¾Ù‹.áƒõ\ì­éµgùhóÎÑs”[¹#$_oØÝX{&LןÒá%hYt-Œ„6Ùò•½8Ep†¡‰Ýõ ’R‡—PtäòåËï¸ãŽW^yÂF„ |ûí·ì’Îþ¤ ÀX/»Áòy96PÿùçŸi»‰'²Q=˜ðÁ9ÞãiSgggº_ƒÓ-$;O¬ÍKèí@‡ã;8`È…øƒpñ”nïÞ½?þøã¦M›Ø¥Öqß³g_&â }ïq¢Pã4W؇ž-ÿ•·W-ocW$—¼d€ðÅl•—iåbeº;cÍr¯_©›mðî…æÛÊŠÊ»2uxIMiÞ„Õ{Ý¢ØÍ¹­¹¤í`‰wH|jZú襮ù¹™U%¹s·ø:ùÆF$}1Ûq†‰Ï,3߸ÄTŒc–ºþ²ÊÃÖ3ª±2š‰Ï?¿Ú¹È"`ŸG "â’ÿØà5~¥;v…ä”´ß×xŽYæ6~•ÇvÇðₜßÖyø„Æã i;Z~Õû[(ÔÒ)bôR7ÒLßèMæÁQIÃf;Î1ó³ÌuéŽXü`Ö&_ü¸ÄÅt_pSUÁ¬M>¿®öøc½§µ{Ô¨%®ïÿi7u£w[cñ‹¿ØÀ“«òýb§lðÂÔáOJòŸ¼Î³Gd\ò‡Óíÿ2ó^ø„&L^ëùÓr·oæ9ã{ ‰Nšj¬ÔkÜ XZkmá[“÷oØôãb×ð褦ª|ÿˆ„%Û $  Æ,uûi™ÛÄÕŽ>1…¹Y;`Z¤ŸiæÓXU0ÝÄûßßï^¸Õ/(2Ò3x :ƒOÊñ¡y&)z&ê„7].vežê»4:¼ÍÇ—Ùù8ª˜ønŸa*xm^Â$Ž'þ‰'žðòâ“–ÊêЄÃ÷woŽ>/Åòõ8Tæ»ï¾ /ÁüƧX`Ô:66–÷{,"_|1.^ëé3wÞy'×y³g' z°ðk>ûGz 'Ò•#†•/œk®¹R+œ_çwWQÀ”È'‡øzx2F+++ø_Ìã…U±=)ùéââòå—_¢VºËì%/ ¼>š‘cçl²Ê9Çâgë—÷„®£n_­û÷ÏÆc£#3 óOmLÓá%hqô눅.¼ÙðçÿM²e÷©¨¸”Ïÿr(ÌÍ&ŸÈ¯h¿°Ä§Ú‹ ï ªú€««ÊÎ΂ ÀŠ ³žúio[S1là—•nð’¯æ9¹Ä5TäCPÈÒS\œ³ÐÂ/26mù¡­­ö˹ΰ Ì#:ÇH³vo°{4VÊÂLƒ-dUÐN§8ÄZ«`b5Zë ï¶£íPÙ¸•îpì(Õ%9‹¶ú[ìÅut´¾è…_lÚXvXž1¢qÕµ)ŠHü}wrZúËãmÂc’[ëŠ^°/&=£ípާÜììMûC¶9EP/‚Tþ4öª-Ï}ä{+k·ÈÂ|<Ö™D±¸ÆÎÛâ—;Ÿ†Fßå»}¼r¡HúŽst%g^‚!©à%b§Ño¼‘Aa€†}^òâ‹//º„¯4;ý=Àx ­‰º‚8¢öÞ{ï=H ßÊA)òBÏG[à°+®¸‚ë0˜øøø»îº‹Îq¹çž{ÀXøhÎSO=uï½÷b2«™ºÒIv}^rË-·$%%!xòq`iÀŠA½ k ›yòF™ŒidÊ”)BB ¡2˜U""".¼ðÂ^x/‰w®¼«8K^ÒïyI¼f=NnvNpdÚB‡åNiÛ¨RR~DmcmrVÔÛ‹¯±é•µVûórŠEx‰°—ÀKpðŽÎg /¹üòËÑšð]–¦ßzë­4"Oa5±±±—<úè£ÁÁÁ9ý\Ò›Ó¡½ä¦›nÂL†0ŒK.¹ 1x@s±‚à„Å^;:ü8øn8yþùçÕAéŽ+¤Çô)ì'Tò’þÏKâ㉪HOÍÙà`1Ù}Èä¯8ïµúröËC—ÜóéÊû¾øëCÿèüSÅéð’üœ,øT¢%ø«*Í{üÇÝ5eùŸýåÀOÜ.ßÌw²óŒ†—Œ\âÚXIœ]úÚÝÎþ|G·º­¡òA€'ö†ÿ`…ÍÃÙ7†,Dà4i¨(ÀÇAĆ’¸¹uŽvÿ}§Æ^RÿÒxnBKmGØR¥~ƒ7Ä+0/ÒÁšBÂQ×Yõ²~O0Õ¥¹mÍ¥·~¶ ^2a•‡W46 È <ÉÂ.4?'›ø’g¶nk*jk)i­-B~¿°øÑK\«ÊYˆX›2i‘%_Ìq¢"¨S"BÚš°ÓÔ?ô;Á[c鮈ÚTÂjwÏ—–ÍUJh!‡b/ ˆcî‹1Ið’—~±>R_ˆ½äp}qjjºÂÏ`NŠá§ÎèÅm‡JýC?ýKá%ÂT2 ©‰>/¡¦bgq ðL÷ &®w_^õy Ñ ŸÅ®»î:Ô›áÛKXû Â&0€êèÑ£ÑÄÏ^BÓÃ9ð¾ÿþû¨Fx _NB—Æ$Hùª«®âµÖ‚fÅÃ-žÂŒ´fÍÔ$wѵèWâšy×?ë´¸w;sÏrÓ·—Ü~ûí ^0íüã`™v€]¼x1Q;EÀŸPŒ‹êˆæî«¯¾JW$0 Ix!Át‡ï œôãô{žÑÝ `®ÌÏÉ Œˆ›°ï‡¥ÉÏLrøï«Ó®ž»égÿ(×w&þóÃ9÷ _ðÀ¾¼uƲe%E%ݲ— ÚxGc~ VcÊωk<xdz¹Ñ&ø·už³Íý^Ÿdëàㇽ¤¶<?Ž‹,Îþ~]僈N2yîkÂ;XóÛ:¯ ÈDâ0â“R¹ŽÑ‚`CP–íÀö€‹ÄÙ/6ƒßgÄ|g'ÿØíöá”KüÇØå®8Œ%Ldîf_žZ´|Rˆ™eæÃB›Éë¼×À‡2eƒ·=!ùÊ aâQ  „ŒÀKÞüͪà5ÁXëcº/ä÷u^,újŽó²ñIi#¹à[!~ÖÂ.ì·5¿¯õœgîÇO‚jAiq­Üˆ½ä±­pE ^‚ÏÈ#0Ÿ‘b/ÑØZl=£…ØÄ”˜Û†âä"üsœ .Å%Bnq]Í6óE~ÍòŸžM)ý”þzÞÀÜÝÝ Ýë­·,,,Ð+Ý ˆëõ ëðx_o'R½Å+5A0L©ÊÂ-;tâ^ѯÄ~,1„ö ØÐÀªØAÜ+šEøÚk¯A8ø­‰O:BKQw^åéQÐJBª‹äpÌq‘b™1«jýÑG‘xÚ´i†9tæ[Ag=¨Ò—DGIˆ V÷Í7ßÀt‰Î— ð2LÐ> ‚N† )ÍchdÎСCI@T õÝæÒ^Ò]`p镞‘Ÿ0Ö|Äû+ïý`Ñ£/þzïÝï_þð{7ÿëýkÿóá ¼{å½/\±jý²’Âîñ%»0'(2ÉÎ;ÚÁ'†8Ö†JV¼(Ëh÷¹GâR!¯#öb2ð}ˆ¥°,o±õˆÆ¯Á:¥?feú‡++u“S ,e»¶ŒØø¡Î1! ï±¸Àf h÷ˆØdrkùƒU`•ÁøšçVEqŽwpÂÇ3ì)ÂDn0ÂWQí¤a! ¶Ëp=Y“ f–ü‰£oLa^N`d¢f#å t±PW$ÆÑ7–õ>\I žáLö>Ñ6n‘h$~â ‚Q/¬A¬ü-R˜JbnnûÞ-”EÈ ‹Œƃÿ"#«ˆ!•WP,ŠØ·G?¿‹œˆïãУ´ºËPªÎ{3ó©ˆB‹CÑ`„Ôïˆ-¾ƒRQå2²ØÝêÑDö@&tšF­c'µî‡Q·ð÷©S=§Móœ>ÝCëŸü¹üúk¬‹ ÌàѹÑBǪ‘‘ÁãQNN.&?¦§§ÃuŽ[D´Ç€ÆR’]X˜–”çæºi“×Ì™ü…š›Ç¹»§%$dæä(†U€®XPN™æôôÏa,¥–H$ÉKºÈ 1Ùq^’ž^xð Ó·ß.42ËŒVjþ8Y¤ù›ndä1cFNY™ê¡r¼OŸ,P%33·´Ô}îÜùFF+4¥À90œtÈK¸˜[V–f;dȶ{ïÝxÁK4b¬32²¸ë.ëW^I‹ÃprÒ¢´ÓÉÅi¹ÃÚŒç Ìh–‘H$ýÉK ‘ptQ¦ì%ååá;v8ŽãøÓOîýeöñgqë­Ž£F9¿Ĉ(;;Ü(49„ §¼<¿®®°©)¿¾>·²R\oJÅSSX˜WYYÐР$¨«Ë-/çL#%mm7Bw6­62ʯª*9zTÐ [ –2Ùñï¯ÑÐ#“+®°9ÒyÂÛÏ?7¾ðÂyFF±(Ùæå)’ÔÔ67‹²ò**xP5¥(Òææb b=; øË«®ægæ–cá´J‚ÒÒ|‘ ¡ÉÉAñ1‰ø’ (‹š’ @S_%A'¨þ?°e $‰@?E@ò’.rCLv<îUh_¨@Q·²­më-·¬×'¬^~™®)T5ú[ñ­§'%…oßî4nÜ®wßuøî»ÀµkSbbrÙ …¤Ä$†„®Yc÷ÕW»ß{ÏeôèM›Rbc +±6lë¿ÿMÎðþµ2Äòÿ‹÷òÊ)*:NM4Ö‰ÂÖV—1c0«l022¿úêÈ}û XP 1‘VVþö·KKFRHHØÖ­îü±ç½÷¬† q5 a’BCI,xƒBz23£íí='MÚóÁV￸dIŒ½}zjªBM23©rFVV´ûøñTgßðáA«W'úû+A-šP–ÔØØÇo¾±zï=‡‘#ƒ7lHðóS¢mw‘‡D@"  ’—"áè¢L'¬>¶5[ÖÖfqÓM‚—ìzñÅ´ÄDa?àŽTòŽ4¾ì2áâÁìaü÷¿[ÜpC¬³3wá.Ä‚l½óNãK/Åγf™Ædû¿ÿ66®Òü4Åþ¡¡&KŒ¦Á30r¨¼D±pÅ’“crñÅÈ`|þùÞÓ§c¥Pb]!=ìN[Sja‘àë Mñœ5‹Ì…$‹ŒÖj„ÙrÛm0øÌ#%.ÎñË/Í®¾š¬H@2ÅZsË-Ä©(f¢"“Ík¯™^{­*-’[ÜygàêÕ”H&Ôwû­·R_„§:ÈLq»_z)-9Y5ƒŒR‰€D@" PÌÜrÿ’.ÒƒK¦»¯š£HOWxÉ7 ^²ó…ÒâãE vˆ/1½ðB¸ÈÆK.qþñGŸyóv>ò)Qê6/¿œWS“ž°ëñÇIÀ³¶ï¾ë»`×Ô©ûÞ}wï /9°t©ÍÛoà %$€p¸M˜©íÊQ"K*+#öìÁRŸñå—Çyx`´Pƒ<vGÉΆ£xüñ‡Åí·c/ñ™=Ûí×_¡SdKé¶o¿­¬**.\¾ÜôÒKq™^pÇ´i¾óæ9µûé§CLMñìàbóÊ+ÈÃ#Žß}ç¿t©í[o‰v>õTrDÔ‡ZˆêX>ø ß¢E^Ó§ï{ï=ÛwÞi½•¼DNƒ‰€DÀ¼ÄàØF×êp¿×xIB‚ÂKÒÓs«ª"öî%þT±£¼ñF][[c[[ˆ±1A©\19÷ÜÌôôX__l‚vDîÙSÝÖFL Áéèï¼¼‚æf¿µkÕøÌ0m`ÑÞ-‚ ²ÿì3ÅøAVW\‘˜­Ù/_ôüã& L8P”òrŠ(mk«okóøõWH’Bh.½4! _ŒÍ{ïQ-®¿¾¼­¿¢Ã‡aÂAƒ„f×_Ï]L -mmÔ(''‡r¹brÞyQû÷§DGc&A ®ÀÃj5Q Å¢Óù"gC¥R‰€D@"0x¼¤ë4ÀàRv—¤¥¡þ­žxµÚ1×Èhö1ï j›Ÿ1NNØ2¶ß{/ö t9„`ëw`‡Ú°!» rC؇÷’%*/ION&è¤=`öØ QxIk«ówß©¼$QŸ—N@„GNѸî'â‹¡DâQ*ÿÿøG¼¯o^U’^SA$ƾ7ßôž1ƒ•ÆYDæÖÖºýü3·„SiŽæoÆDupÙø®]KP­Í‹/ò,ɰš˜]r‰Ãðá«W‹Õ@‚% žÑ.k*H ÉK Žmt] îò’ж6ÁPÒ,Ö Z¾Ü÷¯¿|Ä߬YncÇ«‘S\°l™)Ëy.¾Xèr–á8|8ÔMǼD«§+~œŠ l¢ ÅãìŒÿ踚]àpÁr0áXÜ|³×´iVÿý¯òˆ†—$x{ÃKXi¼ï­·†8„G…»œ>¡¸,¶ùòKÅ'¥a-a›6ùΜ©VÓK¬›&¢;;è‘¶‚ÜP!2{žy&),Lw7ïRB‰€D@"0м¤ë4ÀàRv——9bÿÉ'¨vÌ ÛÿûߢÖVÅGÓÒ¢ü:Ĺ²¶Eãg!V4`Å °leë‘sÎA£óN“¢–¯Å‹ab0®uáŒ:R”@MÀ)&Å#sî¹î“&±X,ÂèÂ9™Çûød¤¥™ßx#lƒ¿àõëñ¸Ž«„Ê ^âã£D¥ää ŠûÉkÆ Œ%&ûwÉyï+¯ -tÊøÜs…¡vuŠÛÚ`QŠ0› uëXìcùðÃÏ;©(ÑùrŒ.}€ËúI$~†€ä%Ç6º.P÷x ñ%åå˜0N(¾üÃ{æL1Ä”ÐgY'¶e a¤ û?ÿœ…µ ÂJ;†¨K`Šòš?_ðl8hˆ¥%Fä„·bpKËþ>‚)‘+—_df&7p–ìr=rïÞÔ„ËK\¹Vqà£T^ÂZßÌü|èn…•—µµYÞ?ò·û¹çØm–d7]=#ŒË?°òHñˤ§“sÄ®]äb±ýàƒd }à€ù•WR¤ÊgîÜö]LúÙ˜•âJ$Œ€ä%]§—²3^róÍh_þv±GĽ¢°ñœTTìyþy¡˜×_xáî—_¶ýðC›¡CY¶ƒw#ÞÕ5Îߟ( ‹ûï·~÷]»áÃ-À-ëçžãñœŠŠ°;6jÈÉîgŸÝþê«ì_¢ZNܡӻ®í|ì1á:ÙpÉ%6ï¼cóñÇVo¼Á¢@â== .±¸åü±ã_ÿ²2Äüª«ÄvpØK”hÙ¼<ôòøÎçžÛ÷ᇾþšµ9Jë¹ç²PH‰¥ÍÎvýùg“‹.¢:ä³ëùç•ê|ðÁ®W_]uÎ9l#ú˜ßzëž·ßÞ?l˜ÕK/Ÿs¼ ~ïí­„˜Èø’<¿ÉºI$ýÉK Žmt] Nx ª]ìö±å‘GR££ áX"a­¬ÕsÏ™þíoØNØz¥¾ù¦›,þõ/ ) –O>Iô ê_ì7OèëÞ7ßÄ³Ãæi™¹¹©‰‰®'n¹áÂv -ðæhóÆ?¹ˆ3Ëz7\t‘~ãÅïzúi¶Ìgn”0 v¤…÷ ªå£n¾ê*2;¦Ä¹ºâÇñY°`Ç£nºòJb\Èaã¹çî~ê)Ï?ÿÄ4¢|0?Oàºu¸x6]}5Ï"3cD±xàH;;Ì3ÖC‡nýç?×s½$Ø|íµÖo¾É¶rÊ2"¹¯Zÿ›²¤Ä‰ÀG@ò’®ÓƒKÙ1/”—ã” 43 41 ·±A7+›ª©»¶k¾ë›A@hÈæÍ&&¸T°y¤DD( d²³!.‰~~VV<Îf¬ÜbØ,H‰8²³ùïîlalfµw/ p:øzŸ Að¡ÌLö‰´µÅzbaãàûQf›5|@N‚LMƒLL’ÂÃc;xÓ¦ Í›ÙvÚ‘ž––ïæ¼y3òðmB’‰½O„8 ;),ÄñÄb"‚=ñ­`áÀƒ#¬í}SœiVĈ4ü¡×ÑÓÊ^gª¦×|ÝFû–ˆ‡mWä<γ$àA¶{¤GÿÐH"8Eˆ=òI/6Ukÿë’Ù?Md•Ÿ\l²…7Qy\•Ç5”¢ýqQ™ää&§°P©²ZŠf5²rKÍAÜÒXJ:–¹ÿ a)±D@" PH^Òu`p);æ%¢ÝIu°ÐåzL¢ý¢ð÷èç ÍltžíÄêÐQYíù‹§´ŸÕϧ#añÒÿ\°Î¸Ô®Ž> ’” ¨iLVF" @H^bpl£ë”— I‡J]‡°¨:^jg'·…tÈo:4œ¨òtà:Qå<æi:¸îrbšŽ v•õ™“vh˪H$†€ä%]§—Rå%ZYžJ$‰€D #PZZj$ƒS¼R Nظqceee®<$‰€D@"0Pà3gÕÕÕ’—ôK´`Á‚¨¨(ÿyH$‰€D`@ €R‹ŽŽ–¼¤_ò''§ðððyH$‰€D`!&yI¿ä%Rh‰€D@"  H$/Í*+%H$~‰€ä%ý²Ù¤Ð‰€D@" H^2 ›UVJ" H$ýÉKúe³I¡%‰€D@"0 ¼d@6«¬”D@" Hú%’—ôËf“BK$‰€D`@" yÉ€lVY)‰€D@" ôK$/é—Í&…–H$‰À€D@ò’Ù¬²R‰€D@" è—H^Ò/›M -H$‰€ä%²Ye¥$‰€D@"Ð/¼¤_6›Z" H$ÉKd³ÊJI$‰€D _" yI¿l6)´D@" H$’— Èf••’H$‰@¿D@ò’~ÙlRh‰€D@"  H$/Í*+%H$~‰€ä%ý²Ù´…nhhÈÎÎ>xðàY¯É‘#GŠ4‡*Immm^^^cccd;|øhë¡ÃGíÁ³]y¤¨¢¡ód›““ÓÔÔ$’>|8??¿¸¸¸+™ŸÝ4uuut‰úúú³+†,]" ôÉKzš=R^^þÃ?<ðÀIIIˆU\Ù°Ã5ÅÚ'Ã%,·¹åдªªêÏ?ÿ¼òÊ+kjj(º´´ô©§žúüóÏj›;‡æîóÍØâ¬ÈÙ•#"¹t‡{jU}ï𭪺朒ڶ¶ã,gºy°¾ Í-ɹ•⺷·÷#<2eÊñ““çŸþ?þàÜ#"¯o†[xžcp€WÕZÈCGŽ$dU9Ò1ÍÚ옴Û3-6³¼+Èœ2Ý‹/¾8bĈS¦” $‰€¡! y‰¡µH÷äá…~òäÉà±²š¦E–‘Û\R6;%®Ü³Þ6®¶¡µ{Ù^ê£hÝ£Gï¼óÎ’’rÊÊÊzúé§[ZZ°5ÛÅO5 Ú씼Ã-e¶EXWÊñ+\g_Q{j•ß•Ü<# –YEi§ì"4l³­]<ê²eË–_~ùE<õÊ+¯„„„ÔÔTikÛn_ÜK½þÚfb_VÕnSéD’ÖÃGÿ4í€ ñȘ•>Û\S,\’¡JöAÙ]©NçiZ[[ÿõ¯~V2‰€D@"p†¼ä ÞËÅÁK¦NA¾^QSÍBÔš[R²xgd\f'¼§:ǹ®±î²Ã-õùq6\üô/——ÆÛrÒzèÈð9n6>é¯N´ãçð¹®#—xá—áÜ54Çè¹µW Ù4Ý\É|µulyuÓMm1>ðåŸëzþ«ûaOf¡b_á0zbÅïš½:q?ç Å$4I)%§¸îÚ6_øê†Ñ˽ùùäO6×¾¿ùÜ—Ö‰üœœÆ/Î_{íµøøxqÎq°õð6×dŸ˜õÊøµ¾½f|ï;¼"Û/~<ÓéòwLžZMšUÖ1ç½²þ¶Ï¶nÉî¨^ÐI@\^'»„¡Ó"SKK*—îŽBNlHŠTÁÙŸÍrÙä?¿ÆÉ#RJa]³,Â2 ‰¡QÉKN=xd ‰€DÀ ¼Ä ›¥ËBió’ŠÚæ¼Òö%eU ·GTÔ6Mߟ¥˜4‚‹ßýÓ¡¶±å‡¥Þüt ÏG£&ÃSJÿÜÄ•ÿü°‡mý3×ÚÄqbæ˜h㫼‚¿6ÉBU²·öM‡—øD·û)°7  =5NœÒÊv^B®¾½:²Ñ..4±Ä%L1!@5 @”´‚jçМ¿ÌC¹xÕû›D½áɹU‘ieKvE­Üã®Ø!8ÞøÍ.«°&=¿*³Û;Q-ÝSEnß/ñâ:´ Z†WÛ Êû°–¾÷ŒÌG~m\ïûÊRüŒË,·òN7sL‚:ÀKF¯ôQ“uf/ij59àÙ.›©C‚iù5˜šüãŠÈŠLrJê2 ªŸÓ¸Ì¸òÕÅ.¥sü±1Ð÷˜3¨¸²§UXJéj›˜°äjcó‰QìL Í­ Ù?,óJͯ¶òΘ¹94£ †4DáÔh\?yeu€ùâ/ûDl¯ä%úPË+‰@¿@@ò’~ÑL'^2cÆ ‚ H‘QX½Ð2‚ ´5nŽi[aW@ýV‰gäÛÅžX)F/Wô®GD‚$ÂSK…½ä韔°ýYl•ˆÍΉû4ö’±«|÷($ ‹×qL,+öĨzT)´ æš÷ÍÓ•€qüûßÿVy 1â"‚©ñ%ü„1ð±bo Ô«Ã ó\flÝì”d鑺bO4×#ÒJ©ËÁ–Ö…–‘° žµÜa˜ýýÏÝ^i)¹U<Ë#\|e¢mfQ-l†ÄH‹¥‡j§J”P<~­˜ÿ†ýJûÁŠBrvy¤Á0öú¦cøÛa™ ÞV<èææ6aÂqN]22ŽûJê[ͼŽQ4¿ØB3‡$ŠÞî–²Ó#•|“Kñ4qED®à®Zacéž’˜Ó¾ÞG•mÜj?‚^iµùÛ#°”àÆÂîB&¸Õ?$±¤¤ªëˬ¦˜”7à˜3µO¤Ö”EuJ«áp4±Z9'$$ȸWay"ô#$/éGÕ¨ð’ï¾ûnÞ¼yl¶Áí”ÜjÞÚ±1 çÄk4 oš&–Åèÿ€x%þ”°Ð”üj, å5M©¥\± TÜ:¹%uIÙŠâLË«Î.RœÍ­s·†¯²Ž%ÏÒê&¬/ÅZ; 2!4ÍŠÇ„=TÒÒÒ.¼ðBVó“õ8÷Þ{oPPPEyiBvµN *KwÜ"ò Hë]@Xàu‚÷ìòL㜜á\?tø0^'Q¸4‹Õ="T–`–%[8'ùÅ)vÌB‹vF.²Œ"©„ µMYk÷Ų CÑM}•WZ}#놔S“®¬¬üý÷ß¿þúkqõ8ëÖ­ o>I„ö&(^QùMX«°ZaF"ÐUšš­Ý'ÐÖ9p½8ˆë‰Ù•ă9…Š`¯š·-œ–Í)nwÓÄC¼ XÙš+<¸xW$õU~¬Y³†dý‚䉀D@"`àH^bà t ñØAkåÊ•_~ù%åÌ×-¸`{„cH{ÑläellüÆoˆ½ÈØÅ„Å,3gÎÔËè]!ã‹ÑÍkmbçl Ç Ò»™GFF,5ÙZXXŒ;výúõ½[J_äæçç7fÌØj_d.ó”H$}Š€ä%} ï™ÈK ûj¶ 9Ó¼Ä#¢Ý’AÙ¬+ÆR"Œ%â`¿W6HU·LíuùRs«Oq ÍÁ¢Ð뙳M-†u³Z6¡.eeíAĽ^\/fADr¹ßk/B*³’HÎ’—œ1¨eA‰€D@" œÉKd‘H$‰€DÀP¼ÄPZBÊ!H$‰€ä%²H$‰€D@"`(H^b(-!åH$‰€D@òÙ$‰€D@" 0$/1”–rH$‰€D@" y‰ì‰€D@"  ’—JKH9$‰€D@" ¼Dö‰€D@" H ÉK ¥%¤‰€D@" H^"û€D@" H$†‚€ä%†ÒR‰€D@" H$/‘}@" H$CA@òCi‰nÉqøðáCòH$‰À€C@ò’nñCIìáá-‰€D@"  bcc%/1ªÑ-9¶nÝZTT”žžž!‰€D@"  PjÅÅÅ’—t‹Jâ}ûö9r¤¦¦¦V‰€D@"  Ôв’— Õè–ÖÖÖ---•òH$‰ÀB µµUò’nñCI¬ò’ªc‡N·¬ª¬Toõщ(±=óNGE×8!ÏŽê¦Ô«—ªÖ‰È]øX]M/ÓI$‰ÀÉ`N%ŠWòC¡Ý’C‡—´óƒêê*ñWU_8Nú`¨%*'‚(¨¥ëœtY%+!¼ó8ÎT4ÙŠz~ÕÚËêPæ. ¬Öº‹éû d–‰€D` ! yI·˜€a%Öæ%BIW×××65‰¿šææê†E‹÷’iA§ß·—XWWSW×N#jkkU´OL‡jt<Š4¢Ö44T×֪镂jj¨K õ"ÿÆFNºša§”œ›µ ÜØX­Vª“á~Œ”€€¸·¬8iŠ‘u‘H$ÝB@òâÝ’F‡—4=·sgà’%þ úÏŸ·eK~LŒb{¨©Ž]/Ï1«ƒþuÁ ´Ñ«N¸TQQ×Ò’åíí5kVÝÁƒð†Â„„ E‹üæÏG€ eËBW®ä$`áBßÙ³öï¯?t¨²¢BÍ¡ƒ 5L§þÈ©S³ýüj Ѥ¯&ª©‰ºDûΙCΙ^^…ÉÉÚ†“vó‰ ú5Õ\×»\ÙØÖæ>u*"'¸…¬X°x1?½ç̉۶­® C_ÊrsCׯO€šôЧ[X&–H$ ÉKºÅ +ñ ¼¤¢âH[Ûö‡^lddþÐC¦÷Ücy×]ûž>ÙÖ¥®8>°¦444µµ¡ŒkZ«?1r†8ª¿Ñúu­­¤ohkãÁvŠP_Ï•ÚæfL¤ç3g’‘'‡ÛÚòCC·>ðÀÆ;îØü¯­9ï¼EFFÿùÙÝwßt“ǤI-mmhz%ãG«êêÚUxMZ ÙVj°ÇE,^Ì Ep—²b·l±þï·ßr‹É=÷˜ÿóŸ6Ï<ãþí·ÅÙÙpd&Ïfj!ª)Ì8µµõ‡‹²¨]»?‹µ´ˆ‰‹­mm˯¼rÓÝw›ßÿú«¯^jddróÍ›î»oíM7¹ NJÒ“³‚@}}»ÀÕÕÈÉE·ææº#GŠÖ\{mà† ‡4b`}é#Õ›zdu$‰@‡H^bXT£[Òèó’ÝO™‡ÌŸ_”’’îî¾ýæ›ý§LAž’´4r#‡só²ÂÂÒ‚‚TGÇÐyó&O.-,¤ò„EA#¨Kð_%íÝ[’—WS_O‰0˜Üˆ¥,ssTOccAddQrry~~èªUÆW^™¶YNNA\ENhhÀï¿'ìÚ¤WÜd—ÿo¿Å˜šb³iÅíØ±á’Kì?ú(KÕ¤IyÑÑ’šÈÙV" ôÉKºÅ +±>/ÙùŸÿl»õV¤<¨yww5j÷ÓOÓÆ¼÷‡/_nõÈ#kŒŒ6m¿ýö33Òdz{£S>þxÏãsÝô‚ H† ¼¨È{òd‹›o^gddvñÅÛz(;0 3=X^\Œú?JÑß|³PcGQ(Q[œÃñóÏ7]v˜^x!+ö›úzŸßßrÓMë¹xþùæ7ÞóØvýõ«e»ÑÈõïöõ×.Æ)ƉC‡à1Ên£ÆÆú£G}&N4»äJGªg‚š@›\GŽÜtõÕfþ÷¿o¾õÖl__{O˜°ùúë)‹ôX_2ýý±ÄRå˜Ý»×_uU~D„°² ›ãС×\ƒ0&ç·ÿ7 sTÍoòä]÷ßOe7ž{î¶Ûo÷:´\#0ª¸­[!4ÒdÒã)I>( r$/1,ªÑ-iôy‰Õÿ»ùŠ+ò3ÜÜ"V¯¶¼çžÈU«0u¤:8Ø<ýt‚MMffUVVâž=»þùÏ’ŒŒÜ   W^é6n¥(66hÞ<Ó¿ÿ½²¼ýÔ⪫pv ïƒþüÓoâD#£ð Š££×üýïñ(‘‡5´¶òxÄŠN_~éøÍ7‚UEÊ\##(Bap0¦‚ø-[°µà­ ¢"béÒÙFFœÀH¦Ä¢VThóÅWkþìñÅàÙ³ÿ=lþ|Û§ŸÆhgÄâÆ·ÞqGrVT€‚s[Ët#£¨U«ÈÓš~õe—EíÜy/Ѩ}Îôñ9ðæ›;î¸cãEX³á⋉½Í 3¹ôÒ}Ï=£tDEHÉön[° pòäÐÙ³?ükJaJ &2Óæ%Ôº¼¤Ää‚ ¼ú*"&†Æî•WÈœ·ßqÇ–k®IÚ³‡4Â(…_Éì®»BÖ¯W0Ô8§$)éñ|$”H$’—Õè–4Æ— 5á"IûöÞEÙã}ØýÖ[¸°CÌÐüÍÔüKhgY\ÜšK/M°·¯gñKUTíîðÎ;;_xÁuÊô®âm©®†+üWXº´(<¿® t0Ö´2$ƒlIɪ™v{Ɖ¼¤®¹9ËË žD΢\þ 2jž*ÍÍ Y¼Øöõ×áCÖÏ>‹ÿˆè]x A0dŽ3¥¤ `÷#„.^Œ3¨}a£–­÷.LJÚuß}† aí #~ÇŠÈŠB6ì"3gî}æ®8}ò ¨"Þ–¿Ž 0ËÈh¢%ØöD^ÂãDÉ €"½³\]¡‘kÖxçp°¸å%æ&%Åô¶Û‚V¯V¢‰Yý¤AAÎ,‰€D@"Ð3$/é0¬ÄÆ—l½ñF–Æ@G¢7n4»è¢,??Ôø’%NC‡B/´¬,ÇUì%vvbIK¦¯/áÄ„͘½ÀRŒ\O9p€¸L ¹~~ /±°@yãá±¥èxŠP–ù°cŠÆ-¢ØK¾üENq(ò²’b5b֬ѯª¾¾¼¬ 2ÄQ_]mòÿ²hçÓà% r ‚…,\H˜–bÂ9rD1–45Á<ÖA­x„ĉç(?2RÙ¸¥¶VdK@+n¦Ü¨¨°¥K±è€ÁFp)m{ ù×¶¶Z=ú(á±ÚéAOYòSY ¶üÄ[ä4dHuAÁÆ[nñ_¼4 O]Úø¤gƒU>%H’—Õè–4¬~ä<&(ÈJÖÄ:äûÛo;ÿùÏœˆˆÒ¬¬}/½´ë¡‡f ×ñª8úi†··Õþcõä“?üàþý÷vo¼u„U»ÉXÞy§ë×_»Kˆ.þšV ¥¥!ÀÞ§žrûñG¢b†ß|å•y±±b0¼$ÂÂbõ%—°ˆI‰®=xLˆÒ=ðöÛÀ‚À£úJÈÎþ×_wúà·±cÉŸXÝÀ)SꛚìÞ{ê­ÃС Ì ˜=d%‰@ï# yI·˜€a%Öá%°ß~‹7D! ìMÒЀ[Äõ«¯`”¯¾ C¢²… Ù<ùäzöù׿XlŒu¤º©)ÕÞÞêùç·ßy§ßï¿'ÙÚš<ú(¼„õ8ÞcÇîzê© ·ßîðé§D™Àlˆ\Ájâ;nÜŽÿþ×ä®»ìÞ}sKYq±÷Êz¥ƒcíí·¿ðBžÆ³µbý¦&Ï‘#-îºËôŸÿ´óM`apÄÚµv/½¤`øÈ#Ñ6(+‡£äùÃ`Å’" ’¼¤÷'*™£D@"0h¼Ä°¨F·¤Ñ݇ž}]5±j†²Y{}={oô@˜ª°(»†À<4­Y>>øq’ÝÝq—°É•8Њ ³².—;H̃‡+kLDæš dÕýS•P–5lBßÔ$Ô¼“"öe?¶*d…˜P ¥ ÖVe¯Íž"Ê.m!Vÿ¶´ˆôÊ~órQÙwD#R!ƒžë<%"L•dšÍ鹋´UeeäО˜½ä5²Á9ÄΰA2ET ÷ªc{7„_öÑ|‘G9ÑTM¡\šmåÙt®¾^žÀ^Ͷ. ,šÝÕ” ,I)  ì‘¯1À š DVT" ô2’—t‹ Vbýïö)– u=ˆÐ¸‚¦ÛU*i°dº»/=眛†C‡&¡~LG¨VÔ/‰©jññ%~Bë›;í )WëºrQSª¡E‡à+í)Õ½Y5)…¢ˆö”Z¶‘§"¼º©<òpQ|LGÈvìûy¢¦í<éØ6üÇÐ*®½\MeUÚÃWµn¯ƒ®íXÉÅ8½:‰Où¬D@" è1L¡Ú¼DåÄ\¨=éõ¸ˆþò ä%g„;ôe!*/ÑèüÊÃÍÍö‘.ùÖ>5–Ó,M6ª­>Îú®_êð ÂvÂQsÌf£C5H }¥±±‡¢HŒ1Su “··ÐŸœ‹ü9a0ìyD$à„DMÅ•q"F¸¸¥RU’3Ãáú®dΉ@?E@‡—h^2kD¤ÿ¶´´ j"yI_R†3’·à%èmúqSC]xLþþ8GçBkë,“M1sWnñ9Úz&:´6/Aª¾xñâeË–ÁuŒ¡¶¶9aÔq…»Ä7YYYýú믄§ÀB¸xÓM7sÎ9Xð{ì±¢¢"†%O‰CÍŠÌW¬XAA¹¹¹ûÛßþüóO†îÑ£G¿úê«à›åR eqÞÐÐ@þüäD”®J"²ùKjÒO§u)¶D _# ÃK˜²˜ §OŸ.æææLƒƒ„šH^rF¸C_ÒÎK*+±‹Õ8FÙfZÚæn^è=šbýíÜÂZ6õµºÕæ%Œ(À°aÃÞ}÷]Aàfff0 ‹ŒŒ ÞÒÓÓ¹ÅÁx#ÁÌ™3Ÿxâ‰M›6q~É%—À0fyyy¿üò 'AAAëÖ­[²dÉþýû¹K­_|ñÅ·ß~;"""++ë…^2dˆˆûì³Ïà%‡¶³³ƒqdffrÝÄÄ$..nùòå111þþþk×®MMMFš ¬ZµŠÒqñJjÒ¯'w)¼D Ÿ" ÃK˜Á˜3™ÍÄLx饗òúÔ×3¹! 'yI_R†3’·êÇ©«© ŠI5µØ—µqIà3¿¹”?gï˜ß6Ì­*kª«U\$}×ç´y‰0„|üñǯ¿þú”)ScáÂ…¨À¤I“Ö¯_±xï½÷`0 &OžüÈ#@à#GŽ455Ý·oF???‡C\HO_~ùe`` ìáÉ'Ÿ„Žxxx$$$ÌŸ?ÿÃ?høðáØ`à%”Ë#\tg̘1Ó¦Mà‚mæ?þ²ÁŸcÍš5Èð×_q¥Oê»&9K$ý}^²}ûö/¾øB¨‘ë®»®¤¤Dò’3¢Te!§€à%¸+òò*7yìÙo’WŸlæ73:;°©©þ½%×Úô‘‹_lS6À>T¸Ú¼DœC86nÜÈ ¾Œ °Ù³gcáøöÛo!p… &ÀH€ÏÅÆÆG ç0{S§N7nì4žžž¾¾¾˜^¸2wîÜÛo¿]d‹ýcÆ œÄÆÆ’'fžÚ¶mØÛÛsÝÍÍmâĉsæÌÁËÃO|C¡¡¡˜F)ÚÕÕòôé§Ÿb×ÁF é™1cÆ|×!å _¤×gv)¹D ÿ" y‰ÚvÒ^rÚ¼àlg/!€³¾ºÁ%$ô£×üR^]ÔrHÙålÝÞYC–ÜúùºG§Ï)-!„¢M&úñ%({ì‚— :ãN !X8à%ðƒ-[¶C)H³uëÖ±cÇrQ(..&*Elª·øßÿþŸ€Ö`áHIJJ æÍ›' $ðŒ(<Åùµ×^‹Íƒ"¼¼¼¾þúkJܽ{÷Í7ßÌ­k®¹Ip ýôÓO˜Xðþ'ùÀKx/Á„0ŽŽŽ¤>¤oýwÖ”’K$}‰€>/aú¶^Ž«¯¾š)NÚKζ¾•åw xIC]mFvñLÛÙs"^™`ûô¨¯ûEx´<üÁäÇ?˜ÿÏÏ–ÜÿÚ¸§,÷»l>ØwW‡—À*víÚ5~üxaÒÀG!ìcõêÕ¼0ÐÜ4?þ8  ?þø#Öø !"™¥¥%&Ü+ÉÉÉä)ÁÂIHHìp˜Gdd$¼{ <ƒ|pÇ\tÑE$ ,Ì!8tœ¹Â-ø£:;;—mXX.Ø`…yöÙgñøà6‚ñ¬\¹’”}‡R_Nk2o‰€D # ÃK°ó~ÅdÅ4¸wïÞG}”º ’è7i/éšò7àTð’¦úƘÔÔÑ{?\šöä ßg¾ÚxïÇ=<ÕxØÐiwŸ÷À—óx`ÈEÎûóPëaeÉlߌ\ýuÂÄmÁ-¾ùæÀCHÆèÑ£1r@2SµpÛ‰X ‡øý÷߉Q…sàß!Ü•ƒÀ–ÏpâA5j±`Ä¥óy Y!Œ¡Ë˙ʊ†:$ؼy3¦œAÂC„ß >Ú={ö@bÅE<2Áˆ2bÄ„!?ÉIßô™«D@"ÐCô÷/ÁxÌ›“Þ?ü@PïldÝgSxÅî‹Ç$/1`ÆÑ5ÑP¥ÊÚ׺†ñ g]qÑí×]{¹ÑEí»ä‰ÿÝqÏq‰ñÍMÍ}×§õ÷U«rIJ{”='b—±6˜Ø‹â¸È Õ‰Ez±šv¢^[’ˆÅý\'ÏŠ‹ä™ð¬x„‚Db±O‰x„+â)ÎE![ßAÔXæ) ôy‰˜BÅ$6xH ­)yI×”¿§ûÐ×TUu.#¤„ÆÖÞbµwÏå>ô½‹§ÌM" TÈ}èÕæ–¼Ä€G×DÃ1AsÒåüüèSR‚êwûÊÊÊÕl"++HN¦Píïö~†ý:–ün_×(€á¥"6·…!bùŒáÈc˜H$‰@׳h×Óà”@6ë”Ã𔯔¨3D¤ÅY?p…"%!xϺ0R‰€D@"п¡oÌ¢"úm0@Aõa]’—ôWöÅ~,rÑ>ÒÓR3ÓÓt¯ê$êÕŸñññ ˆñ½Þ{5c™™D@" ø°©»+1‹2Ÿ'%% ü Ÿ¼†‰‰‰Ü$æWò’þÊKèͬ­Õ>ò²³B£’½‚bsX›¥s³¯~²@1–0¨N¿ 6oU®ä¦žó®<¢Ÿ¦[%ö¬ù”D@" è´´4¶<`å.»+©iļ4¨@£úT™”’— ^BïÍÉÎŒ‹Ë·‹ñؽ×Å/¥0/÷Ìôi^B¡ì`ÆÑ•ÒIÊÉɉé”ùùù QNN–ƒš?ÏŠôâ_®t^®Z¢š’+"þ=åãƒjŽ••HÎú¼„I‰YQÌ„ƒjR’¼¤¿ÒUnÕ^‚NÏÈH/ÈγõówÊ·q/ß1mïÊô”ÜÜìS(é^r:¼„QÄÕAW‡þ3&IŒ$œà\d?V> Ì— ßxJûqR’ÛŒ®lTϾC˜þx$ €”\ï¤DÁZ0–ªÂ°Üšï ó,ÈbM$éd9œ²Rƒð§Wz‘ÌD"0hÐá%Ì!ÐÐàÛ¥ìÙÅ×¼ ä%„—hHIFQ~žoHÚ$ç"«Ýë²ÌWoó¬,)Uîõ±%P›—Ы0Á©ß¯ájž­Àš Ó0H‹ˆ€ž+0;w²ã*? w‚aüûßÿ¾ûî»ï¼ó·~˜Oç°šåÇ"<›­ÏĈ廀lWÏö¡ùå—|ðA¢¶Ù­™}||ØþU,ºã€g¢ –H†ÄÁ°=Ž'Îù×ÉÉé¾ûî£Äx€md‘»‹HOøSWA\9 ÄO¢ÕDÖÄòCk̲ ‰À@@‡—°i5aì^Íç½øæ(Ÿé<¦\ÉK /ÉÀƒ“˜eá{ Çr®ùT‡ÏÛ·†¤„nØæRQZÜ×ÌD›—ÀƒEÍó!_>¤'˜Á+¯¼Â9Ÿ¤‰ˆˆ@¯“à–[n¹í¶Û^zé%¶2|çw`ÿùÏx- cR4 kúùn0 Ùa'p”«®ºŠÝèYB†„ôçŸ>_†@nH,V“qRâYñ² qÇwÜx㯽öhüüóϤçÓ9˜død1ÌÆCR²÷3ƒë|» ‘Jp‘;v@\®¸â v¬gTxxø%—\¬ÁFÑp&Ö"ñmB\zé¥ìpT’—œÙ\!hóΙúÖ¯_ÏIÅLxå•W2)©ÎîQå“ÕBò’ÂKhàìÌ\ŸÈ¸mÑÛöd­[8Ú.ju›bùÙDÓ?Ó’KsrúÖ›£ÍKÐÇhñI“&ýöÛohw¬Ÿþ9_«ï¯[·ŽÖ@; Pîâ=Á\ÁäË™ÑÑÑ0 (‚­­-×!¤”ð‘?¾6,¬ Ÿ|ò ß$ì+äOVÂg¤òÎ!7|j˜Jp—·àî 7Ü€%3 ¥@ø&_ûÃL‚xP¾x ¡áYŒ¥PÆ?\ w¸ºº¾ð | oháåáÀa Öð,ï4 .œ:u*ö>ëƒØräHŒ$æ£Þj«`ÛxöÙg±U¼þúëX# 2ß}÷nÂTqšÀ3ÈŸJéóÄ##ÎɹEzH‰aÁ†ÁOÒeBįP"Š [A$þ%2—IEÈ”ˆ¤±³³#[,=ä@¡À B<‚w ™ýýý!4$صk÷©×l`OвvAˆ€þþ%ÌK؆y©ã*88^2H M/yÉ@à%èììœ5ÛÌÞøþÓÇ~7däWÿ>ô…÷_{ãã!o~ôÞ o¾úõ¨oÃÂÃòòNºGÙéÏúûª1„PÏ:DÆÀ9ú[Œ.NøÉ!å‹e·¤ ŒH,Ò‹W†(̃+Ø!„ÊçA|%* ˆÍÁSb0¬\çAÎI#öjãà„Ÿ‚Ö›‰źbä%еÄj 2ó8‘1B$~ò”[•ðôQ•9H$ƒ÷{åý‡)…y† pð¼êH^Òïy‰ØW“¬ŒìÔäÌôÔìô4ÂM²33²2Ò³ùKOËäV^n^Ÿvk}{‰Ðý‚à«çžœ2þS:ˆ™K-®»ê§?e]I0HæSYM‰€Dàôèp¿W©ïôKé9tÀKÚ?+,ÿ'H$‰€Dà¬"ðÿ­ 4ëMX3pIEND®B`‚surefire-2.10/maven-surefire-report-plugin/src/main/0000755000175000017500000000000011645102475021301 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/main/java/0000755000175000017500000000000011645102475022222 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/main/java/org/0000755000175000017500000000000011645102475023011 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/0000755000175000017500000000000011645102475024232 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/0000755000175000017500000000000011645102475025340 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/0000755000175000017500000000000011645102475027021 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/0000755000175000017500000000000011645102475030645 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/0000755000175000017500000000000011645102475032160 5ustar tonytony././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.javasurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/Te0000644000175000017500000002102311565265037032456 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; /* * 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. */ import java.io.File; import java.io.IOException; import java.text.NumberFormat; import java.text.ParseException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.StringTokenizer; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; /** * @version $Id: TestSuiteXmlParser.java 1125058 2011-05-19 19:06:07Z krosenvold $ */ public class TestSuiteXmlParser extends DefaultHandler { private ReportTestSuite defaultSuite; private ReportTestSuite currentSuite; private Map classesToSuites; private final NumberFormat numberFormat = NumberFormat.getInstance( Locale.ENGLISH); /** * @noinspection StringBufferField */ private StringBuffer currentElement; private ReportTestCase testCase; public Collection parse( String xmlPath ) throws ParserConfigurationException, SAXException, IOException { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); classesToSuites = new HashMap(); saxParser.parse( new File( xmlPath ), this ); if ( currentSuite != defaultSuite ) { // omit the defaultSuite if it's empty and there are alternatives if ( defaultSuite.getNumberOfTests() == 0 ) { classesToSuites.remove( defaultSuite.getFullClassName() ); } } return classesToSuites.values(); } /** {@inheritDoc} */ public void startElement( String uri, String localName, String qName, Attributes attributes ) throws SAXException { try { if ( "testsuite".equals( qName ) ) { currentSuite = defaultSuite = new ReportTestSuite(); try { Number time = numberFormat.parse( attributes.getValue( "time" ) ); defaultSuite.setTimeElapsed( time.floatValue() ); } catch ( NullPointerException npe ) { System.err.println( "WARNING: no time attribute found on testsuite element" ); } //check if group attribute is existing if ( attributes.getValue( "group" ) != null && !"".equals( attributes.getValue( "group" ) ) ) { String packageName = attributes.getValue( "group" ); String name = attributes.getValue( "name" ); defaultSuite.setFullClassName( packageName + "." + name ); } else { String fullClassName = attributes.getValue( "name" ); defaultSuite.setFullClassName( fullClassName ); } classesToSuites.put( defaultSuite.getFullClassName(), defaultSuite ); } else if ( "testcase".equals( qName ) ) { currentElement = new StringBuffer(); testCase = new ReportTestCase(); testCase.setName( attributes.getValue( "name" ) ); String fullClassName = attributes.getValue( "classname" ); // if the testcase declares its own classname, it may need to belong to its own suite if ( fullClassName != null ) { currentSuite = (ReportTestSuite) classesToSuites.get( fullClassName ); if ( currentSuite == null ) { currentSuite = new ReportTestSuite(); currentSuite.setFullClassName( fullClassName ); classesToSuites.put( fullClassName, currentSuite ); } } testCase.setFullClassName( currentSuite.getFullClassName() ); testCase.setClassName( currentSuite.getName() ); testCase.setFullName( currentSuite.getFullClassName() + "." + testCase.getName() ); String timeAsString = attributes.getValue( "time" ); Number time = new Integer( 0 ); if ( timeAsString != null ) { time = numberFormat.parse( timeAsString ); } testCase.setTime( time.floatValue() ); if ( currentSuite != defaultSuite ) { currentSuite.setTimeElapsed( time.floatValue() + currentSuite.getTimeElapsed() ); } } else if ( "failure".equals( qName ) ) { testCase.addFailure( attributes.getValue( "message" ), attributes.getValue( "type" ) ); currentSuite.setNumberOfFailures( 1 + currentSuite.getNumberOfFailures() ); } else if ( "error".equals( qName ) ) { testCase.addFailure( attributes.getValue( "message" ), attributes.getValue( "type" ) ); currentSuite.setNumberOfErrors( 1 + currentSuite.getNumberOfErrors() ); } else if ( "skipped".equals( qName ) ) { testCase.addFailure( "skipped", "skipped" ); // TODO extract real reasons currentSuite.setNumberOfSkipped( 1 + currentSuite.getNumberOfSkipped() ); } } catch ( ParseException e ) { throw new SAXException( e.getMessage(), e ); } } /** {@inheritDoc} */ public void endElement( String uri, String localName, String qName ) throws SAXException { if ( "testcase".equals( qName ) ) { currentSuite.getTestCases().add( testCase ); } else if ( "failure".equals( qName ) ) { Map failure = testCase.getFailure(); failure.put( "detail", parseCause( currentElement.toString() ) ); } else if ( "error".equals( qName ) ) { Map error = testCase.getFailure(); error.put( "detail", parseCause( currentElement.toString() ) ); } else if ( "time".equals( qName ) ) { try { Number time = numberFormat.parse( currentElement.toString() ); defaultSuite.setTimeElapsed( time.floatValue() ); } catch ( ParseException e ) { throw new SAXException( e.getMessage(), e ); } } // TODO extract real skipped reasons } /** {@inheritDoc} */ public void characters( char[] ch, int start, int length ) throws SAXException { String s = new String( ch, start, length ); if ( !"".equals( s.trim() ) ) { currentElement.append( s ); } } private List parseCause( String detail ) { String fullName = testCase.getFullName(); String name = fullName.substring( fullName.lastIndexOf( "." ) + 1 ); return parseCause( detail, name ); } private List parseCause( String detail, String compareTo ) { StringTokenizer stringTokenizer = new StringTokenizer( detail, "\n" ); List parsedDetail = new ArrayList( stringTokenizer.countTokens() ); while ( stringTokenizer.hasMoreTokens() ) { String lineString = stringTokenizer.nextToken().trim(); parsedDetail.add( lineString ); if ( lineString.indexOf( compareTo ) >= 0 ) { break; } } return parsedDetail; } } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportMojo.javasurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/Su0000644000175000017500000000433311605575204032475 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; /* * 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. */ import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.ResourceBundle; import org.apache.maven.doxia.siterenderer.Renderer; import org.apache.maven.model.ReportPlugin; import org.apache.maven.project.MavenProject; import org.apache.maven.reporting.AbstractMavenReport; import org.apache.maven.reporting.MavenReportException; import org.codehaus.plexus.util.PathTool; import org.codehaus.plexus.util.StringUtils; /** * Creates a nicely formatted Surefire Test Report in html format. * * @author Johnny R. Ruiz III * @version $Id: SurefireReportMojo.java 1144289 2011-07-08 12:39:32Z stephenc $ * @goal report * @execute phase="test" lifecycle="surefire" */ public class SurefireReportMojo extends AbstractSurefireReportMojo { /** * The filename to use for the report. * * @parameter expression="${outputName}" default-value="surefire-report" * @required * @noinspection UnusedDeclaration */ private String outputName; protected File getSurefireReportsDirectory( MavenProject subProject ) { String buildDir = subProject.getBuild().getDirectory(); return new File( buildDir + "/surefire-reports" ); } public String getOutputName() { return outputName; } } ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportParser.javasurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/Su0000644000175000017500000002024611532042545032472 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; /* * 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. */ import java.io.File; import java.io.IOException; import java.text.NumberFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.ListIterator; import java.util.Locale; import java.util.Map; import javax.xml.parsers.ParserConfigurationException; import org.apache.maven.reporting.MavenReportException; import org.codehaus.plexus.util.DirectoryScanner; import org.codehaus.plexus.util.StringUtils; import org.xml.sax.SAXException; /** * @version $Id: SurefireReportParser.java 1074755 2011-02-26 00:12:21Z hboutemy $ */ public class SurefireReportParser { private NumberFormat numberFormat = NumberFormat.getInstance(); private List reportsDirectories; private final List testSuites = new ArrayList(); private static final int PCENT = 100; public SurefireReportParser() { } public SurefireReportParser( List reportsDirectoriesFiles , Locale locale ) { this.reportsDirectories = reportsDirectoriesFiles; setLocale( locale ); } public List parseXMLReportFiles() throws MavenReportException { List xmlReportFileList = new ArrayList(); for ( int i = 0; i < reportsDirectories.size(); i++ ) { File reportsDirectory = (File) reportsDirectories.get( i ); if ( !reportsDirectory.exists() ) { continue; } String[] xmlReportFiles = getIncludedFiles( reportsDirectory, "*.xml", "*.txt, testng-failed.xml, testng-failures.xml, testng-results.xml" ); for ( int j = 0; j < xmlReportFiles.length; j++ ) { File xmlReport = new File( reportsDirectory, xmlReportFiles[j] ); xmlReportFileList.add( xmlReport ); } } TestSuiteXmlParser parser = new TestSuiteXmlParser(); for ( int index = 0; index < xmlReportFileList.size(); index++ ) { Collection suites; File currentReport = (File) xmlReportFileList.get( index ); try { suites = parser.parse( currentReport.getAbsolutePath() ); } catch ( ParserConfigurationException e ) { throw new MavenReportException( "Error setting up parser for JUnit XML report", e ); } catch ( SAXException e ) { throw new MavenReportException( "Error parsing JUnit XML report " + currentReport, e ); } catch ( IOException e ) { throw new MavenReportException( "Error reading JUnit XML report " + currentReport, e ); } testSuites.addAll( suites ); } return testSuites; } protected String parseTestSuiteName( String lineString ) { return lineString.substring( lineString.lastIndexOf( "." ) + 1, lineString.length() ); } protected String parseTestSuitePackageName( String lineString ) { return lineString.substring( lineString.indexOf( ":" ) + 2, lineString.lastIndexOf( "." ) ); } protected String parseTestCaseName( String lineString ) { return lineString.substring( 0, lineString.indexOf( "(" ) ); } public Map getSummary( List suites ) { Map totalSummary = new HashMap(); ListIterator iter = suites.listIterator(); int totalNumberOfTests = 0; int totalNumberOfErrors = 0; int totalNumberOfFailures = 0; int totalNumberOfSkipped = 0; float totalElapsedTime = 0.0f; while ( iter.hasNext() ) { ReportTestSuite suite = (ReportTestSuite) iter.next(); totalNumberOfTests += suite.getNumberOfTests(); totalNumberOfErrors += suite.getNumberOfErrors(); totalNumberOfFailures += suite.getNumberOfFailures(); totalNumberOfSkipped += suite.getNumberOfSkipped(); totalElapsedTime += suite.getTimeElapsed(); } String totalPercentage = computePercentage( totalNumberOfTests, totalNumberOfErrors, totalNumberOfFailures, totalNumberOfSkipped ); totalSummary.put( "totalTests", Integer.toString( totalNumberOfTests ) ); totalSummary.put( "totalErrors", Integer.toString( totalNumberOfErrors ) ); totalSummary.put( "totalFailures", Integer.toString( totalNumberOfFailures ) ); totalSummary.put( "totalSkipped", Integer.toString( totalNumberOfSkipped ) ); totalSummary.put( "totalElapsedTime", numberFormat.format( totalElapsedTime ) ); totalSummary.put( "totalPercentage", totalPercentage ); return totalSummary; } public void setReportsDirectory( File reportsDirectory ) { this.reportsDirectories = Collections.singletonList( reportsDirectory ); } public final void setLocale( Locale locale ) { numberFormat = NumberFormat.getInstance( locale ); } public NumberFormat getNumberFormat() { return this.numberFormat; } public Map getSuitesGroupByPackage( List testSuitesList ) { ListIterator iter = testSuitesList.listIterator(); Map suitePackage = new HashMap(); while ( iter.hasNext() ) { ReportTestSuite suite = (ReportTestSuite) iter.next(); List suiteList = new ArrayList(); if ( suitePackage.get( suite.getPackageName() ) != null ) { suiteList = (List) suitePackage.get( suite.getPackageName() ); } suiteList.add( suite ); suitePackage.put( suite.getPackageName(), suiteList ); } return suitePackage; } public String computePercentage( int tests, int errors, int failures, int skipped ) { float percentage; if ( tests == 0 ) { percentage = 0; } else { percentage = ( (float) ( tests - errors - failures - skipped ) / (float) tests ) * PCENT; } return numberFormat.format( percentage ); } public List getFailureDetails( List testSuitesList ) { ListIterator iter = testSuitesList.listIterator(); List failureDetailList = new ArrayList(); while ( iter.hasNext() ) { ReportTestSuite suite = (ReportTestSuite) iter.next(); List testCaseList = suite.getTestCases(); if ( testCaseList != null ) { ListIterator caseIter = testCaseList.listIterator(); while ( caseIter.hasNext() ) { ReportTestCase tCase = (ReportTestCase) caseIter.next(); if ( tCase.getFailure() != null ) { failureDetailList.add( tCase ); } } } } return failureDetailList; } private String[] getIncludedFiles( File directory, String includes, String excludes ) { DirectoryScanner scanner = new DirectoryScanner(); scanner.setBasedir( directory ); scanner.setIncludes( StringUtils.split( includes, "," ) ); scanner.setExcludes( StringUtils.split( excludes, "," ) ); scanner.scan(); return scanner.getIncludedFiles(); } } ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportGenerator.javasurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/Su0000644000175000017500000006047011533676447032514 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; /* * 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. */ import org.apache.maven.doxia.markup.HtmlMarkup; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.doxia.sink.SinkEventAttributeSet; import org.apache.maven.doxia.sink.SinkEventAttributes; import org.apache.maven.reporting.MavenReportException; import java.text.NumberFormat; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; import java.util.StringTokenizer; /** * @version $Id: SurefireReportGenerator.java 1076592 2011-03-03 11:36:07Z ltheussl $ */ public class SurefireReportGenerator { private final SurefireReportParser report; private List testSuites; private final boolean showSuccess; private final String xrefLocation; public SurefireReportGenerator( List reportsDirectories, Locale locale, boolean showSuccess, String xrefLocation ) { report = new SurefireReportParser( reportsDirectories, locale ); this.xrefLocation = xrefLocation; this.showSuccess = showSuccess; } public void doGenerateReport( ResourceBundle bundle, Sink sink ) throws MavenReportException { testSuites = report.parseXMLReportFiles(); sink.head(); sink.title(); sink.text( bundle.getString( "report.surefire.header" ) ); sink.title_(); sink.head_(); sink.body(); SinkEventAttributeSet atts = new SinkEventAttributeSet(); atts.addAttribute( SinkEventAttributes.TYPE, "text/javascript" ); sink.unknown( "script", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_START )}, atts ); sink.unknown( "cdata", new Object[]{new Integer( HtmlMarkup.CDATA_TYPE ), javascriptToggleDisplayCode() }, null ); sink.unknown( "script", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_END )}, null ); sink.section1(); sink.sectionTitle1(); sink.text( bundle.getString( "report.surefire.header" ) ); sink.sectionTitle1_(); sink.section1_(); constructSummarySection( bundle, sink ); Map suitePackages = report.getSuitesGroupByPackage( testSuites ); if ( !suitePackages.isEmpty() ) { constructPackagesSection( bundle, sink, suitePackages ); } if ( !testSuites.isEmpty() ) { constructTestCasesSection( bundle, sink ); } List failureList = report.getFailureDetails( testSuites ); if ( !failureList.isEmpty() ) { constructFailureDetails( sink, bundle, failureList ); } sink.body_(); sink.flush(); sink.close(); } private void constructSummarySection( ResourceBundle bundle, Sink sink ) { Map summary = report.getSummary( testSuites ); sink.section1(); sink.sectionTitle1(); sink.text( bundle.getString( "report.surefire.label.summary" ) ); sink.sectionTitle1_(); sinkAnchor( sink, "Summary" ); constructHotLinks( sink, bundle ); sinkLineBreak( sink ); sink.table(); sink.tableRow(); sinkHeader( sink, bundle.getString( "report.surefire.label.tests" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.errors" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.failures" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.skipped" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.successrate" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.time" ) ); sink.tableRow_(); sink.tableRow(); sinkCell( sink, (String) summary.get( "totalTests" ) ); sinkCell( sink, (String) summary.get( "totalErrors" ) ); sinkCell( sink, (String) summary.get( "totalFailures" ) ); sinkCell( sink, (String) summary.get( "totalSkipped" ) ); sinkCell( sink, summary.get( "totalPercentage" ) + "%" ); sinkCell( sink, (String) summary.get( "totalElapsedTime" ) ); sink.tableRow_(); sink.table_(); sink.lineBreak(); sink.paragraph(); sink.text( bundle.getString( "report.surefire.text.note1" ) ); sink.paragraph_(); sinkLineBreak( sink ); sink.section1_(); } private void constructPackagesSection( ResourceBundle bundle, Sink sink, Map suitePackages ) { NumberFormat numberFormat = report.getNumberFormat(); sink.section1(); sink.sectionTitle1(); sink.text( bundle.getString( "report.surefire.label.packagelist" ) ); sink.sectionTitle1_(); sinkAnchor( sink, "Package_List" ); constructHotLinks( sink, bundle ); sinkLineBreak( sink ); sink.table(); sink.tableRow(); sinkHeader( sink, bundle.getString( "report.surefire.label.package" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.tests" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.errors" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.failures" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.skipped" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.successrate" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.time" ) ); sink.tableRow_(); Iterator packIter = suitePackages.keySet().iterator(); while ( packIter.hasNext() ) { sink.tableRow(); String packageName = (String) packIter.next(); List testSuiteList = (List) suitePackages.get( packageName ); Map packageSummary = report.getSummary( testSuiteList ); sinkCellLink( sink, packageName, "#" + packageName ); sinkCell( sink, (String) packageSummary.get( "totalTests" ) ); sinkCell( sink, (String) packageSummary.get( "totalErrors" ) ); sinkCell( sink, (String) packageSummary.get( "totalFailures" ) ); sinkCell( sink, (String) packageSummary.get( "totalSkipped" ) ); sinkCell( sink, packageSummary.get( "totalPercentage" ) + "%" ); sinkCell( sink, (String) packageSummary.get( "totalElapsedTime" ) ); sink.tableRow_(); } sink.table_(); sink.lineBreak(); sink.paragraph(); sink.text( bundle.getString( "report.surefire.text.note2" ) ); sink.paragraph_(); packIter = suitePackages.keySet().iterator(); while ( packIter.hasNext() ) { String packageName = (String) packIter.next(); List testSuiteList = (List) suitePackages.get( packageName ); Iterator suiteIterator = testSuiteList.iterator(); sink.section2(); sink.sectionTitle2(); sink.text( packageName ); sink.sectionTitle2_(); sinkAnchor( sink, packageName ); sink.table(); sink.tableRow(); sinkHeader( sink, "" ); sinkHeader( sink, bundle.getString( "report.surefire.label.class" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.tests" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.errors" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.failures" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.skipped" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.successrate" ) ); sinkHeader( sink, bundle.getString( "report.surefire.label.time" ) ); sink.tableRow_(); while ( suiteIterator.hasNext() ) { ReportTestSuite suite = (ReportTestSuite) suiteIterator.next(); if ( showSuccess || suite.getNumberOfErrors() != 0 || suite.getNumberOfFailures() != 0 ) { sink.tableRow(); sink.tableCell(); sink.link( "#" + suite.getPackageName() + suite.getName() ); if ( suite.getNumberOfErrors() > 0 ) { sinkIcon( "error", sink ); } else if ( suite.getNumberOfFailures() > 0 ) { sinkIcon( "junit.framework", sink ); } else if ( suite.getNumberOfSkipped() > 0 ) { sinkIcon( "skipped", sink ); } else { sinkIcon( "success", sink ); } sink.link_(); sink.tableCell_(); sinkCellLink( sink, suite.getName(), "#" + suite.getPackageName() + suite.getName() ); sinkCell( sink, Integer.toString( suite.getNumberOfTests() ) ); sinkCell( sink, Integer.toString( suite.getNumberOfErrors() ) ); sinkCell( sink, Integer.toString( suite.getNumberOfFailures() ) ); sinkCell( sink, Integer.toString( suite.getNumberOfSkipped() ) ); String percentage = report.computePercentage( suite.getNumberOfTests(), suite.getNumberOfErrors(), suite.getNumberOfFailures(), suite .getNumberOfSkipped() ); sinkCell( sink, percentage + "%" ); sinkCell( sink, numberFormat.format( suite.getTimeElapsed() ) ); sink.tableRow_(); } } sink.table_(); sink.section2_(); } sinkLineBreak( sink ); sink.section1_(); } private void constructTestCasesSection( ResourceBundle bundle, Sink sink ) { NumberFormat numberFormat = report.getNumberFormat(); sink.section1(); sink.sectionTitle1(); sink.text( bundle.getString( "report.surefire.label.testcases" ) ); sink.sectionTitle1_(); sinkAnchor( sink, "Test_Cases" ); constructHotLinks( sink, bundle ); ListIterator suiteIterator = testSuites.listIterator(); while ( suiteIterator.hasNext() ) { ReportTestSuite suite = (ReportTestSuite) suiteIterator.next(); List testCases = suite.getTestCases(); if ( testCases != null && !testCases.isEmpty() ) { ListIterator caseIterator = testCases.listIterator(); sink.section2(); sink.sectionTitle2(); sink.text( suite.getName() ); sink.sectionTitle2_(); sinkAnchor( sink, suite.getPackageName() + suite.getName() ); sink.table(); while ( caseIterator.hasNext() ) { ReportTestCase testCase = (ReportTestCase) caseIterator.next(); if ( testCase.getFailure() != null || showSuccess ) { sink.tableRow(); sink.tableCell(); Map failure = testCase.getFailure(); if ( failure != null ) { sink.link( "#" + testCase.getFullName() ); sinkIcon( (String) failure.get( "type" ), sink ); sink.link_(); } else { sinkIcon( "success", sink ); } sink.tableCell_(); if ( failure != null ) { sink.tableCell(); sinkLink( sink, testCase.getName(), "#" + testCase.getFullName() ); SinkEventAttributeSet atts = new SinkEventAttributeSet(); atts.addAttribute( SinkEventAttributes.CLASS, "detailToggle" ); atts.addAttribute( SinkEventAttributes.STYLE, "display:inline" ); sink.unknown( "div", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_START )}, atts ); sink.link( "javascript:toggleDisplay('" + toHtmlId( testCase.getFullName() ) + "');" ); atts = new SinkEventAttributeSet(); atts.addAttribute( SinkEventAttributes.STYLE, "display:inline;" ); atts.addAttribute( SinkEventAttributes.ID, toHtmlId( testCase.getFullName() ) + "off" ); sink.unknown( "span", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_START )}, atts ); sink.text( " + " ); sink.unknown( "span", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_END )}, null ); atts = new SinkEventAttributeSet(); atts.addAttribute( SinkEventAttributes.STYLE, "display:none;" ); atts.addAttribute( SinkEventAttributes.ID, toHtmlId( testCase.getFullName() ) + "on" ); sink.unknown( "span", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_START )}, atts ); sink.text( " - " ); sink.unknown( "span", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_END )}, null ); sink.text( "[ Detail ]" ); sink.link_(); sink.unknown( "div", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_END )}, null ); sink.tableCell_(); } else { sinkCell( sink, testCase.getName() ); } sinkCell( sink, numberFormat.format( testCase.getTime() ) ); sink.tableRow_(); if ( failure != null ) { sink.tableRow(); sinkCell( sink, "" ); sinkCell( sink, (String) failure.get( "message" ) ); sinkCell( sink, "" ); sink.tableRow_(); List detail = (List) failure.get( "detail" ); if ( detail != null ) { sink.tableRow(); sinkCell( sink, "" ); sink.tableCell(); SinkEventAttributeSet atts = new SinkEventAttributeSet(); atts.addAttribute( SinkEventAttributes.ID, toHtmlId( testCase.getFullName() ) + "error" ); atts.addAttribute( SinkEventAttributes.STYLE, "display:none;" ); sink.unknown( "div", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_START )}, atts ); Iterator it = detail.iterator(); sink.verbatim( null ); while ( it.hasNext() ) { sink.text( it.next().toString() ); sink.lineBreak(); } sink.verbatim_(); sink.unknown( "div", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_END )}, null ); sink.tableCell_(); sinkCell( sink, "" ); sink.tableRow_(); } } } } sink.table_(); sink.section2_(); } } sinkLineBreak( sink ); sink.section1_(); } private String toHtmlId(String id){ return id.replace(".", "_"); } private void constructFailureDetails( Sink sink, ResourceBundle bundle, List failureList ) { Iterator failIter = failureList.iterator(); if ( failIter != null ) { sink.section1(); sink.sectionTitle1(); sink.text( bundle.getString( "report.surefire.label.failuredetails" ) ); sink.sectionTitle1_(); sinkAnchor( sink, "Failure_Details" ); constructHotLinks( sink, bundle ); sinkLineBreak( sink ); sink.table(); while ( failIter.hasNext() ) { ReportTestCase tCase = (ReportTestCase) failIter.next(); Map failure = tCase.getFailure(); sink.tableRow(); sink.tableCell(); String type = (String) failure.get( "type" ); sinkIcon( type, sink ); sink.tableCell_(); sinkCellAnchor( sink, tCase.getName(), tCase.getFullName() ); sink.tableRow_(); String message = (String) failure.get( "message" ); sink.tableRow(); sinkCell( sink, "" ); StringBuffer sb = new StringBuffer(); sb.append( type ); if ( message != null ) { sb.append( ": " ); sb.append( message ); } sinkCell( sink, sb.toString() ); sink.tableRow_(); List detail = (List) failure.get( "detail" ); if ( detail != null ) { Iterator it = detail.iterator(); boolean firstLine = true; String techMessage = ""; while ( it.hasNext() ) { techMessage = it.next().toString(); if ( firstLine ) { firstLine = false; } else { sink.text( " " ); } } sink.tableRow(); sinkCell( sink, "" ); sink.tableCell(); SinkEventAttributeSet atts = new SinkEventAttributeSet(); atts.addAttribute( SinkEventAttributes.ID, tCase.getName() + "error" ); sink.unknown( "div", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_START )}, atts ); if ( xrefLocation != null ) { String path = tCase.getFullClassName().replace( '.', '/' ); sink.link( xrefLocation + "/" + path + ".html#" + getErrorLineNumber( tCase.getFullName(), techMessage ) ); } sink.text( tCase.getFullClassName() + ":" + getErrorLineNumber( tCase.getFullName(), techMessage ) ); if ( xrefLocation != null ) { sink.link_(); } sink.unknown( "div", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_END )}, null ); sink.tableCell_(); sink.tableRow_(); } } sink.table_(); } sinkLineBreak( sink ); sink.section1_(); } private String getErrorLineNumber( String className, String source ) { StringTokenizer tokenizer = new StringTokenizer( source ); String lineNo = ""; while ( tokenizer.hasMoreTokens() ) { String token = tokenizer.nextToken(); if ( token.startsWith( className ) ) { int idx = token.indexOf( ":" ); lineNo = token.substring( idx + 1, token.indexOf( ")" ) ); break; } } return lineNo; } private void constructHotLinks( Sink sink, ResourceBundle bundle ) { if ( !testSuites.isEmpty() ) { sink.paragraph(); sink.text( "[" ); sinkLink( sink, bundle.getString( "report.surefire.label.summary" ), "#Summary" ); sink.text( "]" ); sink.text( " [" ); sinkLink( sink, bundle.getString( "report.surefire.label.packagelist" ), "#Package_List" ); sink.text( "]" ); sink.text( " [" ); sinkLink( sink, bundle.getString( "report.surefire.label.testcases" ), "#Test_Cases" ); sink.text( "]" ); sink.paragraph_(); } } private void sinkLineBreak( Sink sink ) { sink.lineBreak(); } private void sinkIcon( String type, Sink sink ) { sink.figure(); if ( type.startsWith( "junit.framework" ) || "skipped".equals( type ) ) { sink.figureGraphics( "images/icon_warning_sml.gif" ); } else if ( type.startsWith( "success" ) ) { sink.figureGraphics( "images/icon_success_sml.gif" ); } else { sink.figureGraphics( "images/icon_error_sml.gif" ); } sink.figure_(); } private void sinkHeader( Sink sink, String header ) { sink.tableHeaderCell(); sink.text( header ); sink.tableHeaderCell_(); } private void sinkCell( Sink sink, String text ) { sink.tableCell(); sink.text( text ); sink.tableCell_(); } private void sinkLink( Sink sink, String text, String link ) { sink.link( link ); sink.text( text ); sink.link_(); } private void sinkCellLink( Sink sink, String text, String link ) { sink.tableCell(); sinkLink( sink, text, link ); sink.tableCell_(); } private void sinkCellAnchor( Sink sink, String text, String anchor ) { sink.tableCell(); sinkAnchor( sink, anchor ); sink.text( text ); sink.tableCell_(); } private void sinkAnchor( Sink sink, String anchor ) { sink.anchor( anchor ); sink.anchor_(); } private static String javascriptToggleDisplayCode() { final StringBuffer str = new StringBuffer( 64 ); // the javascript code is emitted within a commented CDATA section // so we have to start with a newline and comment the CDATA closing in the end str.append( "\n" ); str.append( "function toggleDisplay(elementId) {\n" ); str.append( " var elm = document.getElementById(elementId + 'error');\n" ); str.append( " if (elm && typeof elm.style != \"undefined\") {\n" ); str.append( " if (elm.style.display == \"none\") {\n" ); str.append( " elm.style.display = \"\";\n" ); str.append( " document.getElementById(elementId + 'off').style.display = \"none\";\n" ); str.append( " document.getElementById(elementId + 'on').style.display = \"inline\";\n" ); str.append( " }" ); str.append( " else if (elm.style.display == \"\") {" ); str.append( " elm.style.display = \"none\";\n" ); str.append( " document.getElementById(elementId + 'off').style.display = \"inline\";\n" ); str.append( " document.getElementById(elementId + 'on').style.display = \"none\";\n" ); str.append( " } \n" ); str.append( " } \n" ); str.append( " }\n" ); str.append( "//" ); return str.toString(); } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.javasurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/Re0000644000175000017500000000733611502774112032455 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; /* * 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. */ import java.util.ArrayList; import java.util.List; /** * @version $Id: ReportTestSuite.java 1050534 2010-12-17 23:54:50Z hboutemy $ */ public class ReportTestSuite { private List testCases = new ArrayList(); private int numberOfErrors; private int numberOfFailures; private int numberOfSkipped; private Integer numberOfTests; private String name; private String fullClassName; private String packageName; private float timeElapsed; public List getTestCases() { return this.testCases; } public int getNumberOfErrors() { return numberOfErrors; } public void setNumberOfErrors( int numberOfErrors ) { this.numberOfErrors = numberOfErrors; } public int getNumberOfFailures() { return numberOfFailures; } public void setNumberOfFailures( int numberOfFailures ) { this.numberOfFailures = numberOfFailures; } public int getNumberOfSkipped() { return numberOfSkipped; } public void setNumberOfSkipped( int numberOfSkipped ) { this.numberOfSkipped = numberOfSkipped; } public int getNumberOfTests() { if ( numberOfTests != null ) { return numberOfTests.intValue(); } if ( testCases != null ) { return testCases.size(); } return 0; } public void setNumberOfTests( int numberOfTests ) { this.numberOfTests = new Integer( numberOfTests ); } public String getName() { return name; } public void setName( String name ) { this.name = name; } public String getFullClassName() { return fullClassName; } public void setFullClassName( String fullClassName ) { this.fullClassName = fullClassName; int lastDotPosition = fullClassName.lastIndexOf( "." ); name = fullClassName.substring( lastDotPosition + 1, fullClassName.length() ); if ( lastDotPosition < 0 ) { /* no package name */ packageName = ""; } else { packageName = fullClassName.substring( 0, lastDotPosition ); } } public String getPackageName() { return packageName; } public void setPackageName( String packageName ) { this.packageName = packageName; } public float getTimeElapsed() { return this.timeElapsed; } public void setTimeElapsed( float timeElapsed ) { this.timeElapsed = timeElapsed; } public void setTestCases( List testCases ) { this.testCases = testCases; } /** {@inheritDoc} */ public String toString() { return fullClassName + " [" + getNumberOfTests() + "/" + getNumberOfFailures() + "/" + getNumberOfErrors() + "/" + getNumberOfSkipped() + "]"; } } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/FailsafeReportMojo.javasurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/Fa0000644000175000017500000000367511605575204032444 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; /* * 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. */ import org.apache.maven.project.MavenProject; import java.io.File; /** * Creates a nicely formatted Failsafe Test Report in html format. * This goal does not run the tests, it only builds the reports. * See http://jira.codehaus.org/browse/SUREFIRE-257 * * @author Stephen Connolly * @version $Id: FailsafeReportMojo.java 1144289 2011-07-08 12:39:32Z stephenc $ * @goal failsafe-report-only * @execute phase="validate" lifecycle="surefire" * @since 2.10 */ public class FailsafeReportMojo extends AbstractSurefireReportMojo { /** * The filename to use for the report. * * @parameter expression="${outputName}" default-value="failsafe-report" * @required * @noinspection UnusedDeclaration */ private String outputName; protected File getSurefireReportsDirectory( MavenProject subProject ) { String buildDir = subProject.getBuild().getDirectory(); return new File( buildDir + "/failsafe-reports" ); } public String getOutputName() { return outputName; } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportOnlyMojo.javasurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/Su0000644000175000017500000000264611321155410032466 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; /* * 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. */ /** * Creates a nicely formatted Surefire Test Report in html format. * This goal does not run the tests, it only builds the reports. * This is a workaround for * http://jira.codehaus.org/browse/SUREFIRE-257 * * @author Barrie Treloar * @version $Id: SurefireReportOnlyMojo.java 896616 2010-01-06 18:48:40Z dennisl $ * @goal report-only * @execute phase="validate" lifecycle="surefire" * @since 2.3 */ public class SurefireReportOnlyMojo extends SurefireReportMojo { } ././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/AbstractSurefireReportMojo.javasurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/Ab0000644000175000017500000002116411605575204032431 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; import org.apache.maven.doxia.siterenderer.Renderer; import org.apache.maven.model.ReportPlugin; import org.apache.maven.project.MavenProject; import org.apache.maven.reporting.AbstractMavenReport; import org.apache.maven.reporting.MavenReportException; import org.codehaus.plexus.util.PathTool; import org.codehaus.plexus.util.StringUtils; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.ResourceBundle; /** * Abstract base class for reporting test results using Surefire. * * @author Stephen Connolly * @version $Id$ */ public abstract class AbstractSurefireReportMojo extends AbstractMavenReport { /** * Location where generated html will be created. * * @parameter expression="${project.reporting.outputDirectory}" * @noinspection UnusedDeclaration */ private File outputDirectory; /** * Doxia Site Renderer * * @component * @noinspection UnusedDeclaration */ private Renderer siteRenderer; /** * Maven Project * * @parameter expression="${project}" * @required @readonly * @noinspection UnusedDeclaration */ private MavenProject project; /** * If set to false, only failures are shown. * * @parameter expression="${showSuccess}" default-value="true" * @required * @noinspection UnusedDeclaration */ private boolean showSuccess; /** * Directories containing the XML Report files that will be parsed and rendered to HTML format. * * @parameter * @noinspection UnusedDeclaration */ private File[] reportsDirectories; /** * (Deprecated, use reportsDirectories) This directory contains the XML Report files that will be parsed and rendered to HTML format. * * @parameter * @deprecated * @noinspection UnusedDeclaration */ private File reportsDirectory; /** * The projects in the reactor for aggregation report. * * @parameter expression="${reactorProjects}" * @readonly * @noinspection MismatchedQueryAndUpdateOfCollection, UnusedDeclaration */ private List reactorProjects; /** * Location of the Xrefs to link. * * @parameter default-value="${project.reporting.outputDirectory}/xref-test" * @noinspection UnusedDeclaration */ private File xrefLocation; /** * Whether to link the XRef if found. * * @parameter expression="${linkXRef}" default-value="true" * @noinspection UnusedDeclaration */ private boolean linkXRef; /** * Whether to build an aggregated report at the root, or build individual reports. * * @parameter expression="${aggregate}" default-value="false" * @noinspection UnusedDeclaration */ private boolean aggregate; /** * {@inheritDoc} */ public void executeReport( Locale locale ) throws MavenReportException { final List reportsDirectoryList = new ArrayList(); if ( reportsDirectories != null ) { reportsDirectoryList.addAll( Arrays.asList( reportsDirectories ) ); } //noinspection deprecation if ( reportsDirectory != null ) { //noinspection deprecation reportsDirectoryList.add( reportsDirectory ); } if ( aggregate ) { if ( !project.isExecutionRoot() ) { return; } if ( reportsDirectories == null ) { for ( Iterator i = getProjectsWithoutRoot().iterator(); i.hasNext(); ) { reportsDirectoryList.add( getSurefireReportsDirectory( (MavenProject) i.next() ) ); } } else { // Multiple report directories are configured. // Let's see if those directories exist in each sub-module to fix SUREFIRE-570 String parentBaseDir = getProject().getBasedir().getAbsolutePath(); for ( Iterator i = getProjectsWithoutRoot().iterator(); i.hasNext(); ) { MavenProject subProject = (MavenProject) i.next(); String moduleBaseDir = subProject.getBasedir().getAbsolutePath(); for ( int d = 0; d < reportsDirectories.length; d++ ) { String reportDir = reportsDirectories[d].getPath(); if ( reportDir.startsWith( parentBaseDir ) ) { reportDir = reportDir.substring( parentBaseDir.length() ); } File reportsDirectory = new File( moduleBaseDir, reportDir ); if ( reportsDirectory.exists() && reportsDirectory.isDirectory() ) { getLog().debug( "Adding report dir : " + moduleBaseDir + reportDir ); reportsDirectoryList.add( reportsDirectory ); } } } } } else { if ( reportsDirectoryList.size() == 0 ) { reportsDirectoryList.add( getSurefireReportsDirectory( project ) ); } } SurefireReportGenerator report = new SurefireReportGenerator( reportsDirectoryList, locale, showSuccess, determineXrefLocation() ); report.doGenerateReport( getBundle( locale ), getSink() ); } /** * Gets the default surefire reports directory for the specified project. * @param subProject the project to query. * @return the default surefire reports directory for the specified project. */ protected abstract File getSurefireReportsDirectory( MavenProject subProject ); private List getProjectsWithoutRoot() { List result = new ArrayList(); for ( Iterator i = reactorProjects.iterator(); i.hasNext(); ) { MavenProject subProject = (MavenProject) i.next(); if ( !project.equals( subProject ) ) { result.add( subProject ); } } return result; } private String determineXrefLocation() { String location = null; if ( linkXRef ) { String relativePath = PathTool.getRelativePath( getOutputDirectory(), xrefLocation.getAbsolutePath() ); if ( StringUtils.isEmpty( relativePath ) ) { relativePath = "."; } relativePath = relativePath + "/" + xrefLocation.getName(); if ( xrefLocation.exists() ) { // XRef was already generated by manual execution of a lifecycle binding location = relativePath; } else { // Not yet generated - check if the report is on its way for ( Iterator reports = project.getReportPlugins().iterator(); reports.hasNext(); ) { ReportPlugin report = (ReportPlugin) reports.next(); String artifactId = report.getArtifactId(); if ( "maven-jxr-plugin".equals( artifactId ) || "jxr-maven-plugin".equals( artifactId ) ) { location = relativePath; } } } if ( location == null ) { getLog().warn( "Unable to locate Test Source XRef to link to - DISABLED" ); } } return location; } /** * {@inheritDoc} */ public String getName( Locale locale ) { return getBundle( locale ).getString( "report.surefire.name" ); } /** * {@inheritDoc} */ public String getDescription( Locale locale ) { return getBundle( locale ).getString( "report.surefire.description" ); } /** * {@inheritDoc} */ protected Renderer getSiteRenderer() { return siteRenderer; } /** * {@inheritDoc} */ protected MavenProject getProject() { return project; } /** * {@inheritDoc} */ public abstract String getOutputName(); /** * {@inheritDoc} */ protected String getOutputDirectory() { return outputDirectory.getAbsolutePath(); } private ResourceBundle getBundle( Locale locale ) { return ResourceBundle.getBundle( "surefire-report", locale, this.getClass().getClassLoader() ); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootsurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestCase.javasurefire-2.10/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/Re0000644000175000017500000000441611241014145032442 0ustar tonytonypackage org.apache.maven.plugins.surefire.report; /* * 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. */ import java.util.HashMap; import java.util.Map; /** * @version $Id: ReportTestCase.java 803879 2009-08-13 13:43:01Z vsiveton $ */ public class ReportTestCase { private String fullClassName; private String className; private String fullName; private String name; private float time; private Map failure; public String getName() { return name; } public void setName( String name ) { this.name = name; } public String getFullClassName() { return fullClassName; } public void setFullClassName( String name ) { this.fullClassName = name; } public String getClassName() { return className; } public void setClassName( String name ) { this.className = name; } public float getTime() { return time; } public void setTime( float time ) { this.time = time; } public Map getFailure() { return failure; } public String getFullName() { return fullName; } public void setFullName( String fullName ) { this.fullName = fullName; } public void addFailure( String message, String type ) { failure = new HashMap(); failure.put( "message", message ); failure.put( "type", type ); } /** {@inheritDoc} */ public String toString() { return fullName; } } surefire-2.10/maven-surefire-report-plugin/src/main/resources/0000755000175000017500000000000011645102475023313 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/main/resources/surefire-report_sv.properties0000644000175000017500000000332711320655752031304 0ustar tonytony# # 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. # report.surefire.name=Surefire-rapport report.surefire.description=Rapport om testresultaten f\u00f6r projektet. report.surefire.header=Surefire-rapport report.surefire.label.summary=\u00d6versikt report.surefire.label.tests=Tester report.surefire.label.errors=Felaktiga report.surefire.label.failures=Misslyckade report.surefire.label.skipped=\u00d6verhoppade report.surefire.label.successrate=Framg\u00e5ngsrika report.surefire.label.time=Tid report.surefire.label.packagelist=Paketlista report.surefire.label.package=Paket report.surefire.label.class=Klass report.surefire.label.testcases=Testfall report.surefire.label.failuredetails=Detaljer om misslyckade tester report.surefire.text.note1=Notera: misslyckade tester \u00e4r f\u00f6rv\u00e4ntade och har kontrollerats med assertions medan felaktiga tester \u00e4r ov\u00e4ntade. report.surefire.text.note2=Notera: paketstatistiken ber\u00e4knas inte rekursivt, den summerar bara alla testsviters antal. surefire-2.10/maven-surefire-report-plugin/src/main/resources/surefire-report_de.properties0000644000175000017500000000335310765055242031243 0ustar tonytony# # 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. # report.surefire.description=Bericht \u00FCber die Testresultate des Projekts. report.surefire.header=Surefire Bericht report.surefire.label.class=Klasse report.surefire.label.errors=Fehler report.surefire.label.failuredetails=Details der Fehlschl\u00E4ge report.surefire.label.failures=Fehlschl\u00E4ge report.surefire.label.package=Paket report.surefire.label.packagelist=Pakete report.surefire.label.skipped=Ausgelassen report.surefire.label.successrate=Erfolgsrate report.surefire.label.summary=Zusammenfassung report.surefire.label.testcases=Testf\u00E4lle report.surefire.label.tests=Tests report.surefire.label.time =Zeit report.surefire.name=Surefire Bericht report.surefire.text.note1 =Hinweis: Fehlschl\u00E4ge werden erwartet und durch Behauptungen \u00FCberpr\u00FCft w\u00E4hrend Fehler unerwartet sind. report.surefire.text.note2 =Hinweis: Die Paketstatistiken werden nicht rekursiv berechnet, es werden lediglich die Ergebnisse aller enthaltenen Tests aufsummiert. surefire-2.10/maven-surefire-report-plugin/src/main/resources/META-INF/0000755000175000017500000000000011645102475024453 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/main/resources/META-INF/maven/0000755000175000017500000000000011645102475025561 5ustar tonytonysurefire-2.10/maven-surefire-report-plugin/src/main/resources/META-INF/maven/lifecycle.xml0000644000175000017500000000210410567521075030242 0ustar tonytony surefire test true surefire-2.10/maven-surefire-report-plugin/src/main/resources/surefire-report.properties0000644000175000017500000000321110765054434030566 0ustar tonytony# # 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. # report.surefire.name=Surefire Report report.surefire.description=Report on the test results of the project. report.surefire.header=Surefire Report report.surefire.label.summary=Summary report.surefire.label.tests=Tests report.surefire.label.errors=Errors report.surefire.label.failures=Failures report.surefire.label.skipped=Skipped report.surefire.label.successrate=Success Rate report.surefire.label.time=Time report.surefire.label.packagelist=Package List report.surefire.label.package=Package report.surefire.label.class=Class report.surefire.label.testcases=Test Cases report.surefire.label.failuredetails=Failure Details report.surefire.text.note1=Note: failures are anticipated and checked for with assertions while errors are unanticipated. report.surefire.text.note2=Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers. surefire-2.10/maven-surefire-report-plugin/src/main/resources/surefire-report_en.properties0000644000175000017500000000230410743236620031245 0ustar tonytony# # 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. # # NOTE: # This bundle is intentionally empty because English strings are provided by the base bundle via the parent chain. It # must be provided nevertheless such that a request for locale "en" will not errorneously pick up the bundle for the # JVM's default locale (which need not be "en"). See the method javadoc about # ResourceBundle.getBundle(String, Locale, ClassLoader) # for a full description of the lookup strategy. surefire-2.10/surefire-shadefire/0000755000175000017500000000000011645102475015605 5ustar tonytonysurefire-2.10/surefire-shadefire/pom.xml0000644000175000017500000001042211640163725017121 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire-shadefire 2.10 ShadeFire JUnit3 Provider A super-shaded junit3 provider that is used by surefire to build itself, that basically has ALL classes relocated to facilitate no API-conflict whatsover with ourself. The only remaining point of conflict is around the booter properties file format The Apache Software License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0.txt repo 2.8 org.codehaus.plexus plexus-utils 2.1 org.apache.maven.surefire surefire-junit3 ${shadedVersion} org.apache.maven.surefire surefire-api ${shadedVersion} org.apache.maven.surefire surefire-booter ${shadedVersion} org.apache.maven.plugins maven-shade-plugin 1.4 package shade org.apache.maven.surefire:surefire-api org.apache.maven.surefire:surefire-booter org.apache.maven.surefire:surefire-junit3 org.codehaus.plexus:plexus-utils org.codehaus.plexus.util org.apache.maven.shadefire.org.codehaus.plexus.util org.apache.maven.surefire org.apache.maven.surefire.shadefire maven-surefire-plugin ${shadedVersion} true maven-deploy-plugin 2.6 true surefire-2.10/surefire-shadefire/src/0000755000175000017500000000000011645102475016374 5ustar tonytonysurefire-2.10/surefire-shadefire/src/main/0000755000175000017500000000000011645102475017320 5ustar tonytonysurefire-2.10/surefire-shadefire/src/main/resources/0000755000175000017500000000000011645102475021332 5ustar tonytonysurefire-2.10/surefire-shadefire/src/main/resources/META-INF/0000755000175000017500000000000011645102475022472 5ustar tonytonysurefire-2.10/surefire-shadefire/src/main/resources/META-INF/services/0000755000175000017500000000000011645102475024315 5ustar tonytony././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootsurefire-2.10/surefire-shadefire/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvidersurefire-2.10/surefire-shadefire/src/main/resources/META-INF/services/org.apache.maven.surefire.prov0000644000175000017500000000152011577127107032165 0ustar tonytony# # 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. # org.apache.maven.surefire.shadefire.junit.JUnit3Provider surefire-2.10/.gitignore0000644000175000017500000000015211556535446014030 0ustar tonytony*.iml *.ipr target *.iws .classpath dependency-reduced-pom.xml build .classpath .project .settings .idea surefire-2.10/surefire-api/0000755000175000017500000000000011645102475014424 5ustar tonytonysurefire-2.10/surefire-api/pom.xml0000644000175000017500000000601011640163725015736 0ustar tonytony 4.0.0 org.apache.maven.surefire surefire 2.10 ../pom.xml surefire-api SureFire API org.codehaus.plexus plexus-utils maven-surefire-plugin org.apache.maven.surefire surefire-shadefire ${project.version} org.apache.maven.plugins maven-shade-plugin package shade true org.codehaus.plexus:plexus-utils commons-lang:commons-lang org.codehaus.plexus.util org.apache.maven.surefire.shade.org.codehaus.plexus.util org.apache.commons.lang org.apache.maven.surefire.shade.org.apache.commons.lang surefire-2.10/surefire-api/src/0000755000175000017500000000000011645102475015213 5ustar tonytonysurefire-2.10/surefire-api/src/test/0000755000175000017500000000000011645102474016171 5ustar tonytonysurefire-2.10/surefire-api/src/test/java/0000755000175000017500000000000011645102474017112 5ustar tonytonysurefire-2.10/surefire-api/src/test/java/org/0000755000175000017500000000000011645102474017701 5ustar tonytonysurefire-2.10/surefire-api/src/test/java/org/apache/0000755000175000017500000000000011645102474021122 5ustar tonytonysurefire-2.10/surefire-api/src/test/java/org/apache/maven/0000755000175000017500000000000011645102474022230 5ustar tonytonysurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/0000755000175000017500000000000011645102474024054 5ustar tonytonysurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/0000755000175000017500000000000011645102475025032 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/SurefireDirectoryScannerTest.javasurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/SurefireDirectoryScannerTest0000644000175000017500000000375511603272271032606 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ import junit.framework.TestCase; import org.apache.maven.surefire.testset.TestSetFailedException; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Test of the directory scanner. */ public class SurefireDirectoryScannerTest extends TestCase { public void testLocateTestClasses() throws IOException, TestSetFailedException { // use target as people can configure ide to compile in an other place than maven File baseDir = new File( new File( "target" ).getCanonicalPath() ); List include = new ArrayList(); include.add( "**/*ZT*A.java" ); List exclude = new ArrayList(); DefaultDirectoryScanner surefireDirectoryScanner = new DefaultDirectoryScanner( baseDir, include, exclude, RunOrder.FILESYSTEM ); String[] classNames = surefireDirectoryScanner.collectTests(); assertNotNull( classNames ); System.out.println("classNames " + Arrays.asList( classNames )); assertEquals( 4, classNames.length ); } } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/0000755000175000017500000000000011645102474026642 5ustar tonytonysurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/java/0000755000175000017500000000000011645102474027563 5ustar tonytonysurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/java/javascript/0000755000175000017500000000000011645102474031731 5ustar tonytony././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootsurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/java/javascript/DataJavaZT4A.javasurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/java/javascript/Dat0000644000175000017500000000176611432416426032375 0ustar tonytony/* * 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. */ package org.apache.maven.surefire.util.testdata.java.javascript; /** * Test data class for SUREFIRE-638 * User: sslavic * Date: August 16, 2010 * Time: 11:13:18 PM */ public class DataJavaZT4A { } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT1A.java0000644000175000017500000000156711557340256031033 0ustar tonytony/* * 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. */ package org.apache.maven.surefire.util.testdata; public class DataZT1A { } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT2A.java0000644000175000017500000000157011557340256031026 0ustar tonytony/* * 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. */ package org.apache.maven.surefire.util.testdata; public class DataZT2A { } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT3A.java0000644000175000017500000000157011557340256031027 0ustar tonytony/* * 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. */ package org.apache.maven.surefire.util.testdata; public class DataZT3A { } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/RelocatorTest.java0000644000175000017500000000276611532463230030474 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ import junit.framework.TestCase; /** * @author Kristian Rosenvold */ public class RelocatorTest extends TestCase { public void testFoo(){ Relocator relocator = new Relocator( "shadefire" ); String cn = "org.apache.maven.surefire.report.ForkingConsoleReporter"; assertEquals( "org.apache.maven.surefire.shadefire.report.ForkingConsoleReporter", relocator.relocate( cn )); } public void testRelocation(){ Relocator relocator = new Relocator( "shadefire" ); String org1 = "org.apache.maven.surefire.fooz.Baz"; assertEquals( "org.apache.maven.surefire.shadefire.fooz.Baz", relocator.relocate( org1 )); } } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java0000644000175000017500000000300511501143743030617 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ import junit.framework.TestCase; import java.util.Arrays; /* * @author Kristian Rosenvold */ public class TestsToRunTest extends TestCase { public void testGetTestSets() throws Exception { TestsToRun testsToRun = new TestsToRun( Arrays.asList( new Class[]{ T1.class, T2.class } ) ); assertEquals( 2, testsToRun.size() ); Class[] stringJUnitCoreTestSetMap = testsToRun.getLocatedClasses(); assertEquals( stringJUnitCoreTestSetMap[0], T1.class ); assertEquals( stringJUnitCoreTestSetMap[1], T2.class ); assertEquals( 2, stringJUnitCoreTestSetMap.length ); } class T1 { } class T2 { } } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/UrlUtilsTest.java0000644000175000017500000000665211425320042030315 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ import junit.framework.TestCase; import java.io.File; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.net.URL; /** * Test the URL utilities. */ public class UrlUtilsTest extends TestCase { private String homeDir; public void setUp() throws Exception { super.setUp(); homeDir = System.getProperty( "user.dir" ); if ( !homeDir.startsWith( "/" ) ) { homeDir = "/" + homeDir; } } private void verifyFileName( String fileName ) throws Exception { verifyFileName( fileName, fileName ); } private void verifyFileName( String fileName, String expectedFileName ) throws Exception { File f = new File( homeDir, fileName ); URL u = UrlUtils.getURL( f ); String url = u.toString(); assertStartsWith( url, "file:" ); assertEndsWith( url, expectedFileName ); try { // use reflection to do "URI uri = u.toURI()" if JDK 1.5+ Method toURI = URL.class.getMethod( "toURI", null ); Object uri = toURI.invoke( u, null ); // use reflection to do "File urlFile = new File( uri )" if JDK 1.4+ Constructor newFile = File.class.getConstructor( new Class[] { uri.getClass() } ); File urlFile = (File) newFile.newInstance( new Object[] { uri } ); assertEquals( f, urlFile ); } catch (NoSuchMethodException e ) { // URL.toURI() method in JDK 1.5+, not available currently // we won't be able to check for file equality... } } private void assertStartsWith( String string, String substring ) { assertTrue( "<" + string + "> should start with <" + substring + ">", string.startsWith( substring ) ); } private void assertEndsWith( String string, String substring ) { assertTrue( "<" + string + "> should end with <" + substring + ">", string.endsWith( substring ) ); } public void testTestNoSpecialCharacters() throws Exception { verifyFileName( "foo.txt" ); verifyFileName( "qwertyuiopasdfghjklzxcvbnm.txt" ); verifyFileName( "QWERTYUIOPASDFGHJKLZXCVBNM.txt" ); verifyFileName( "1234567890.txt" ); verifyFileName( ")('*~!._-.txt" ); } public void testTestWithSpaces() throws Exception { verifyFileName( "foo bar.txt", "foo%20bar.txt" ); } public void testTestWithUmlaut() throws Exception { verifyFileName( "fo\u00DC.txt", "fo%c3%9c.txt" ); } } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/RunOrderTest.java0000644000175000017500000000312011603272271030265 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ import junit.framework.TestCase; public class RunOrderTest extends TestCase { public void testShouldReturnRunOrderForLowerCaseName() { assertEquals( RunOrder.HOURLY, RunOrder.valueOf( "hourly" ) ); } public void testShouldReturnRunOrderForUpperCaseName() { assertEquals( RunOrder.HOURLY, RunOrder.valueOf( "HOURLY" ) ); } public void testShouldReturnNullForNullName() { assertNull( RunOrder.valueOf( null ) ); } public void testShouldThrowExceptionForInvalidName() { try { RunOrder.valueOf( "arbitraryName" ); fail( "IllegalArgumentException not thrown." ); } catch ( IllegalArgumentException expected ) { } } }surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/0000755000175000017500000000000011645102475026646 5ustar tonytony././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ByteBufferTest.javasurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ByteBufferTest.java0000644000175000017500000000266211543316163032412 0ustar tonytonypackage org.apache.maven.surefire.util.internal; /* * 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. */ import junit.framework.TestCase; /** * @author Kristian Rosenvold */ public class ByteBufferTest extends TestCase { public void testAppend() throws Exception { ByteBuffer byteBuffer = new ByteBuffer( 30 ); byteBuffer.append( 'C' ); byteBuffer.append( (byte) 'D' ); assertEquals( "CD", byteBuffer.toString() ); } public void testJoin() { byte[] b1 = "ABC".getBytes(); byte[] b2 = "DE".getBytes(); final byte[] join = ByteBuffer.join( b1, 0, 3, b2, 0, 2 ); assertEquals( 5, join.length ); } } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/StringUtilsTest.javasurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/StringUtilsTest.jav0000644000175000017500000000317611556104214032500 0ustar tonytonypackage org.apache.maven.surefire.util.internal; /* * 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. */ import junit.framework.TestCase; /** * @author Kristian Rosenvold */ public class StringUtilsTest extends TestCase { public void testUnescape() { byte[] buffer = new byte[80]; final int abc = StringUtils.unescapeJava( buffer, "ABC" ); assertEquals( 3, abc ); } public void testUnescapeWithEscape() { byte[] buffer = new byte[80]; final int abc = StringUtils.unescapeJava( buffer, "AB\tC" ); assertEquals( 4, abc ); } public void testEscape() { ByteBuffer buffer = new ByteBuffer( 80 ); StringUtils.escapeJavaStyleString( buffer, "AB\tC".getBytes(), 0, 4 ); assertEquals( 5, buffer.getlength() ); String temp = buffer.toString(); assertEquals( "AB\\tC", temp ); } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootsurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/TwoThreadBlockingQueueTest.javasurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/TwoThreadBlockingQu0000644000175000017500000001257611556167534032474 0ustar tonytonypackage org.apache.maven.surefire.util.internal; /* * 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. */ import java.util.ArrayList; import java.util.LinkedList; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; import java.util.concurrent.LinkedBlockingQueue; import junit.framework.TestCase; /** * @author Kristian Rosenvold */ public class TwoThreadBlockingQueueTest extends TestCase { final int num = 100000; public void testPut() throws Exception { BlockingQueue twoThreadBlockingQueue = new TwoThreadBlockingQueue(); String[] items = generate( num ); long start = System.currentTimeMillis(); for ( int i = 0; i < num; i++ ) { twoThreadBlockingQueue.add( items[i] ); } long elapsed = System.currentTimeMillis() - start; //System.out.println( "TwoThreadBlockingQueue insert " + num + " elements in = " + elapsed ); System.gc(); } public void testFunkyPut() throws Exception { FunkyTwoThreadBlockingQueue twoThreadBlockingQueue = new FunkyTwoThreadBlockingQueue(); String[] items = generate( num ); long start = System.currentTimeMillis(); for ( int i = 0; i < num; i++ ) { twoThreadBlockingQueue.put( items[i] ); } long elapsed = System.currentTimeMillis() - start; //System.out.println( "FunkyTwoThreadBlockingQueue insert " + num + " elements in = " + elapsed ); System.gc(); } public void testPutAndTake() throws Exception { final FunkyTwoThreadBlockingQueue twoThreadBlockingQueue = new FunkyTwoThreadBlockingQueue(); Callable consumer = new Callable() { public Object call() throws Exception { int num = 0; Object taken; do { taken = twoThreadBlockingQueue.take(); if (taken != TwoThreadBlockingQueue.poison) { assertEquals( "item" + num++, taken ); } } while ( taken != TwoThreadBlockingQueue.poison); return taken; } }; FutureTask futureTask = new FutureTask( consumer ); Thread thread = new Thread( futureTask ); thread.start(); String[] items = generate( num ); long start = System.currentTimeMillis(); for ( int i = 0; i < num; i++ ) { twoThreadBlockingQueue.put( items[i] ); } twoThreadBlockingQueue.put( TwoThreadBlockingQueue.poison ); long elapsed = System.currentTimeMillis() - start; futureTask.get(); // System.out.println( "TwoThreadBlockingQueue produced and taken " + num + " elements in = " + elapsed ); System.gc(); } public void testLBQPut() throws Exception { LinkedBlockingQueue twoThreadBlockingQueue = new LinkedBlockingQueue(); String[] items = generate( num ); long start = System.currentTimeMillis(); for ( int i = 0; i < num; i++ ) { twoThreadBlockingQueue.put( items[i] ); } long elapsed = System.currentTimeMillis() - start; //System.out.println( "LinkedBlockingQueue insert " + num + " elements in = " + elapsed ); System.gc(); } public void testArrayList() throws Exception { ArrayList twoThreadBlockingQueue = new ArrayList( num); String[] items = generate( num ); long start = System.currentTimeMillis(); for ( int i = 0; i < num; i++ ) { twoThreadBlockingQueue.add( items[i] ); } long elapsed = System.currentTimeMillis() - start; //System.out.println( "ArrayList insert " + num + " elements in = " + elapsed ); System.gc(); } public void testLinkedList() throws Exception { LinkedList twoThreadBlockingQueue = new LinkedList( ); String[] items = generate( num ); long start = System.currentTimeMillis(); for ( int i = 0; i < num; i++ ) { twoThreadBlockingQueue.add( items[i] ); } long elapsed = System.currentTimeMillis() - start; //System.out.println( "LinkedList insert " + num + " elements in = " + elapsed ); System.gc(); } public void testTake() throws Exception { } String[] generate( int num ) { String[] result = new String[num]; for ( int i = 0; i < num; i++ ) { result[i] = "item" + i; } return result; } } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/0000755000175000017500000000000011645102474025367 5ustar tonytony././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootsurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/PojoStackTraceWriterTest.javasurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/PojoStackTraceWriterTest.j0000644000175000017500000001755411557340256032473 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.PrintWriter; import junit.framework.TestCase; public class PojoStackTraceWriterTest extends TestCase { public void testWriteTrimmedTraceToString() { String stackTrace = "junit.framework.AssertionFailedError: blah\n" + " at junit.framework.Assert.fail(Assert.java:47)\n" + " at TestSurefire3.testQuote(TestSurefire3.java:23)\n" + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n" + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n" + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n" + " at java.lang.reflect.Method.invoke(Method.java:585)\n" + " at junit.framework.TestCase.runTest(TestCase.java:154)\n" + " at junit.framework.TestCase.runBare(TestCase.java:127)\n" + " at junit.framework.TestResult$1.protect(TestResult.java:106)\n" + " at junit.framework.TestResult.runProtected(TestResult.java:124)\n" + " at junit.framework.TestResult.run(TestResult.java:109)\n" + " at junit.framework.TestCase.run(TestCase.java:118)\n" + " at junit.framework.TestSuite.runTest(TestSuite.java:208)\n" + " at junit.framework.TestSuite.run(TestSuite.java:203)\n" + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n" + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n" + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n" + " at java.lang.reflect.Method.invoke(Method.java:585)\n" + " at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)\n" + " at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)\n" + " at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)\n" + " at org.apache.maven.surefire.Surefire.run(Surefire.java:132)\n" + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n" + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n" + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n" + " at java.lang.reflect.Method.invoke(Method.java:585)\n" + " at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:318)\n" + " at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:956)\n"; MockThrowable t = new MockThrowable(stackTrace); PojoStackTraceWriter w = new PojoStackTraceWriter("TestSurefire3", "testQuote", t); String out = w.writeTrimmedTraceToString(); String expected = "junit.framework.AssertionFailedError: blah\n" + " at junit.framework.Assert.fail(Assert.java:47)\n" + " at TestSurefire3.testQuote(TestSurefire3.java:23)\n"; assertEquals( expected, out ); } public void testCausedBy() { String stackTrace = "java.lang.RuntimeException: blah\n" + " at TestSurefire3.testBlah(TestSurefire3.java:45)\n" + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n" + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n" + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n" + " at java.lang.reflect.Method.invoke(Method.java:585)\n" + " at junit.framework.TestCase.runTest(TestCase.java:154)\n" + " at junit.framework.TestCase.runBare(TestCase.java:127)\n" + " at junit.framework.TestResult$1.protect(TestResult.java:106)\n" + " at junit.framework.TestResult.runProtected(TestResult.java:124)\n" + " at junit.framework.TestResult.run(TestResult.java:109)\n" + " at junit.framework.TestCase.run(TestCase.java:118)\n" + " at junit.framework.TestSuite.runTest(TestSuite.java:208)\n" + " at junit.framework.TestSuite.run(TestSuite.java:203)\n" + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n" + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n" + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n" + " at java.lang.reflect.Method.invoke(Method.java:585)\n" + " at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)\n" + " at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)\n" + " at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)\n" + " at org.apache.maven.surefire.Surefire.run(Surefire.java:132)\n" + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n" + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n" + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n" + " at java.lang.reflect.Method.invoke(Method.java:585)\n" + " at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:318)\n" + " at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:956)\n" + "Caused by: junit.framework.AssertionFailedError: \"\n" + " at junit.framework.Assert.fail(Assert.java:47)\n" + " at TestSurefire3.testQuote(TestSurefire3.java:23)\n" + " at TestSurefire3.testBlah(TestSurefire3.java:43)\n" + " at TestSurefire3.testBlah(TestSurefire3.java:43)\n" + " ... 26 more\n"; MockThrowable t = new MockThrowable(stackTrace); PojoStackTraceWriter w = new PojoStackTraceWriter("TestSurefire3", "testBlah", t); String out = w.writeTrimmedTraceToString(); String expected = "java.lang.RuntimeException: blah\n" + " at TestSurefire3.testBlah(TestSurefire3.java:45)\n" + "Caused by: junit.framework.AssertionFailedError: \"\n" + " at junit.framework.Assert.fail(Assert.java:47)\n" + " at TestSurefire3.testQuote(TestSurefire3.java:23)\n" + " at TestSurefire3.testBlah(TestSurefire3.java:43)\n" + " at TestSurefire3.testBlah(TestSurefire3.java:43)\n" + " ... 26 more\n"; assertEquals( expected, out ); } class MockThrowable extends Throwable { private static final long serialVersionUID = 1L; private final String stackTrace; public MockThrowable(String stackTrace) { this.stackTrace = stackTrace; } public void printStackTrace( PrintWriter s ) { s.write( stackTrace ); } } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/ConsoleOutputFileReporterTest.javasurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/ConsoleOutputFileReporterT0000644000175000017500000000552111604702065032604 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.File; import junit.framework.TestCase; public class ConsoleOutputFileReporterTest extends TestCase { private ConsoleOutputFileReporter reporter; private ReportEntry reportEntry; private static final String testName = "org.apache.maven.surefire.report.ConsoleOutputFileReporterTest"; /* * Test method for 'org.codehaus.surefire.report.ConsoleOutputFileReporter.testSetCompleted(ReportEntry report)' */ public void testFileNameWithoutSuffix() { File reportDir = new File( System.getProperty( "java.io.tmpdir" ) ); reportEntry = new SimpleReportEntry( this.getClass().getName(), testName ); reporter = new ConsoleOutputFileReporter( reportDir ); reporter.testSetStarting( reportEntry ); reporter.writeMessage( "some text".getBytes(), 0, 5 ); reporter.testSetCompleted( reportEntry ); File expectedReportFile = new File( reportDir, testName + "-output.txt" ); assertTrue("Report file (" + expectedReportFile.getAbsolutePath() + ") doesn't exist", expectedReportFile.exists() ); expectedReportFile.delete(); } /* * Test method for 'org.codehaus.surefire.report.ConsoleOutputFileReporter.testSetCompleted(ReportEntry report)' */ public void testFileNameWithSuffix() { File reportDir = new File( System.getProperty( "java.io.tmpdir" ) ); String suffixText = "sampleSuffixText"; reportEntry = new SimpleReportEntry( this.getClass().getName(), testName ); reporter = new ConsoleOutputFileReporter( reportDir, suffixText ); reporter.testSetStarting( reportEntry ); reporter.writeMessage( "some text".getBytes(), 0, 5 ); reporter.testSetCompleted( reportEntry ); File expectedReportFile = new File( reportDir, testName + "-" + suffixText + "-output.txt" ); assertTrue("Report file (" + expectedReportFile.getAbsolutePath() + ") doesn't exist", expectedReportFile.exists() ); expectedReportFile.delete(); } } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/XMLReporterTest.java0000644000175000017500000000747411604702065031266 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.File; import org.codehaus.plexus.util.xml.Xpp3Dom; import junit.framework.AssertionFailedError; import junit.framework.TestCase; public class XMLReporterTest extends TestCase { private XMLReporter reporter; private ReportEntry reportEntry; private String message; protected void setUp() throws Exception { super.setUp(); reporter = new XMLReporter( true, new File( "." )); message = "junit.framework.AssertionFailedError"; reportEntry = new SimpleReportEntry( this.getClass().getName(), "XMLReporterTest", new PojoStackTraceWriter( "", "", new AssertionFailedError() ) ); } /* * Test method for 'org.codehaus.surefire.report.XMLReporter.testError(ReportEntry, String, String)' */ public void testTestError() { reporter.testError( reportEntry, "", "" ); assertResult( reporter, message ); } /* * Test method for 'org.codehaus.surefire.report.XMLReporter.testFailed(ReportEntry, String, String)' */ public void testTestFailed() { reporter.testError( reportEntry, "", "" ); assertResult( reporter, message ); } private void assertResult( XMLReporter reporter, String message ) { Xpp3Dom result = (Xpp3Dom) reporter.getResults().next(); Xpp3Dom child = result.getChild( "error" ); assertEquals( message, child.getAttribute( "type" ) ); } /* * Test method for 'org.codehaus.surefire.report.XMLReporter.testSetCompleted(ReportEntry report)' */ public void testFileNameWithoutSuffix() { File reportDir = new File( "." ); String testName = "org.apache.maven.surefire.report.XMLReporterTest"; reportEntry = new SimpleReportEntry( this.getClass().getName(), testName ); reporter = new XMLReporter( true, reportDir, null ); reporter.testSetCompleted( reportEntry ); File expectedReportFile = new File( reportDir, "TEST-" + testName + ".xml" ); assertTrue("Report file (" + expectedReportFile.getAbsolutePath() + ") doesn't exist", expectedReportFile.exists() ); expectedReportFile.delete(); } /* * Test method for 'org.codehaus.surefire.report.XMLReporter.testSetCompleted(ReportEntry report)' */ public void testFileNameWithSuffix() { File reportDir = new File( "." ); String testName = "org.apache.maven.surefire.report.XMLReporterTest"; String suffixText = "sampleSuffixText"; reportEntry = new SimpleReportEntry( this.getClass().getName(), testName ); reporter = new XMLReporter( true, reportDir, suffixText ); reporter.testSetCompleted( reportEntry ); File expectedReportFile = new File( reportDir, "TEST-" + testName + "-" + suffixText + ".xml" ); assertTrue("Report file (" + expectedReportFile.getAbsolutePath() + ") doesn't exist", expectedReportFile.exists() ); expectedReportFile.delete(); } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootsurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/TestConsoleOutputRunListenerTest.javasurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/TestConsoleOutputRunListen0000644000175000017500000000435611561564522032654 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.File; import org.apache.maven.plugin.surefire.report.FileReporterFactory; import org.apache.maven.surefire.booter.StartupReportConfiguration; import junit.framework.TestCase; /** * @author Kristian Rosenvold */ public class TestConsoleOutputRunListenerTest extends TestCase { public void testGetCurrentReportEntry() throws Exception { MockReporter mockReporter = new MockReporter(); ReporterFactory reporterFactory = createReporterFactory(); TestConsoleOutputRunListener testConsoleOutputRunListener = TestConsoleOutputRunListener.createInstance( reporterFactory, true ); /* assertNull( TestConsoleOutputRunListener.getCurrentReportEntry() ); ReportEntry reportEntry = new SimpleReportEntry( "srcClass", "testName" ); testConsoleOutputRunListener.testStarting( reportEntry ); assertEquals( reportEntry, TestConsoleOutputRunListener.getCurrentReportEntry() ); testConsoleOutputRunListener.testSucceeded( reportEntry ); assertNull( TestConsoleOutputRunListener.getCurrentReportEntry() ); */ } private ReporterFactory createReporterFactory() { return new FileReporterFactory( StartupReportConfiguration.defaultValue() ); } public static ReporterConfiguration getTestReporterConfiguration() { return new ReporterConfiguration( new File( "." ), Boolean.TRUE ); } } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/MockReporter.java0000644000175000017500000001053011561564522030650 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; /** * Internal use only */ public class MockReporter implements RunListener, ConsoleLogger { private final List events = new ArrayList(); private final List data = new ArrayList(); public static final String SET_STARTING = "SET_STARTED"; public static final String SET_COMPLETED = "SET_COMPLETED"; public static final String TEST_STARTING = "TEST_STARTED"; public static final String TEST_SUCCEEDED = "TEST_COMPLETED"; public static final String TEST_FAILED = "TEST_FAILED"; public static final String TEST_ERROR = "TEST_ERROR"; public static final String TEST_SKIPPED = "TEST_SKIPPED"; public static final String TEST_ASSUMPTION_FAIL = "TEST_ASSUMPTION_SKIPPED"; public static final String CONSOLE_OUTPUT = "CONSOLE_OUTPUT"; public static final String STDOUT = "STDOUT"; public static final String STDERR = "STDERR"; private final AtomicInteger testSucceeded = new AtomicInteger(); private final AtomicInteger testIgnored = new AtomicInteger(); private final AtomicInteger testFailed = new AtomicInteger(); private final AtomicInteger testError = new AtomicInteger(); public MockReporter() { } public void testSetStarting( ReportEntry report ) { events.add( SET_STARTING ); data.add( report ); } public void testSetCompleted( ReportEntry report ) { events.add( SET_COMPLETED ); data.add( report ); } public void testStarting( ReportEntry report ) { events.add( TEST_STARTING ); data.add( report ); } public void testSucceeded( ReportEntry report ) { events.add( TEST_SUCCEEDED ); testSucceeded.incrementAndGet(); data.add( report ); } public void testError( ReportEntry report ) { events.add( TEST_ERROR ); data.add( report ); testFailed.incrementAndGet(); } public void testFailed( ReportEntry report ) { events.add( TEST_FAILED ); data.add( report ); testFailed.incrementAndGet(); } public void testSkipped( ReportEntry report ) { events.add( TEST_SKIPPED ); data.add( report ); testIgnored.incrementAndGet(); } public String getFirstEvent() { return (String) events.get( 0 ); } public ReportEntry getFirstData() { return (ReportEntry) data.get( 0 ); } public String getFirstStringData() { return (String) data.get( 0 ); } public int getTestSucceeded() { return testSucceeded.get(); } public int getTestIgnored() { return testIgnored.get(); } public int getTestFailed() { return testFailed.get(); } public void testAssumptionFailure( ReportEntry report ) { events.add( TEST_ASSUMPTION_FAIL ); data.add( report ); testIgnored.incrementAndGet(); } public void writeTestOutput() { //To change body of implemented methods use File | Settings | File Templates. } public void info( String message ) { events.add( CONSOLE_OUTPUT ); data.add( message ); //To change body of implemented methods use File | Settings | File Templates. } public void writeTestOutput( byte[] buf, int off, int len, boolean stdout ) { events.add( stdout ? STDOUT : STDERR ); data.add( new String( buf, off, len ) ); } } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/FileReporterTest.java0000644000175000017500000000472011604702065031474 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.File; import junit.framework.TestCase; public class FileReporterTest extends TestCase { private FileReporter reporter; private ReportEntry reportEntry; private static final String testName = "org.apache.maven.surefire.report.FileReporterTest"; /* * Test method for 'org.codehaus.surefire.report.FileReporter.testSetStarting(ReportEntry report)' */ public void testFileNameWithoutSuffix() { File reportDir = new File( "." ); reportEntry = new SimpleReportEntry( this.getClass().getName(), testName ); reporter = new FileReporter( true, reportDir, null ); reporter.testSetStarting( reportEntry ); File expectedReportFile = new File( reportDir, testName + ".txt" ); assertTrue("Report file (" + expectedReportFile.getAbsolutePath() + ") doesn't exist", expectedReportFile.exists() ); expectedReportFile.delete(); } /* * Test method for 'org.codehaus.surefire.report.FileReporter.testSetStarting(ReportEntry report)' */ public void testFileNameWithSuffix() { File reportDir = new File( "." ); String suffixText = "sampleSuffixText"; reportEntry = new SimpleReportEntry( this.getClass().getName(), testName ); reporter = new FileReporter( true, reportDir, suffixText ); reporter.testSetStarting( reportEntry ); File expectedReportFile = new File( reportDir, testName + "-" + suffixText + ".txt" ); assertTrue("Report file (" + expectedReportFile.getAbsolutePath() + ") doesn't exist", expectedReportFile.exists() ); expectedReportFile.delete(); } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/AsynchRunListenerTest.javasurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/AsynchRunListenerTest.java0000644000175000017500000000452011557245722032521 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import junit.framework.TestCase; /** * @author Kristian Rosenvold */ public class AsynchRunListenerTest extends TestCase { class MockConsoleOutputReceiver implements ConsoleOutputReceiver { byte[] buf; int len; boolean stdout; public void writeTestOutput( byte[] buf, int off, int len, boolean stdout ) { this.buf = buf; this.len = len; this.stdout = stdout; } public byte[] getBuf() { return buf; } public int getLen() { return len; } } public void testCombiner() { final MockConsoleOutputReceiver consoleOutputReceiver = new MockConsoleOutputReceiver(); AsynchRunListener.JoinableTestOutput joinableTestOutput = new AsynchRunListener.JoinableTestOutput( "ABC".getBytes(), 0, 3, true, consoleOutputReceiver ); AsynchRunListener.JoinableTestOutput joinableTestOutput2 = new AsynchRunListener.JoinableTestOutput( "DEF".getBytes(), 0, 3, true, consoleOutputReceiver ); final AsynchRunListener.JoinableTestOutput append = joinableTestOutput.append( joinableTestOutput2 ); append.run(); final byte[] expected = "ABCDEF".getBytes(); for ( int i = 0; i < expected.length; i++ ) { assertEquals( expected[i], consoleOutputReceiver.getBuf()[i] ); } assertEquals( expected.length, consoleOutputReceiver.getLen() ); } } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/report/RunStatisticsTest.java0000644000175000017500000001157211513156632031716 0ustar tonytonypackage org.apache.maven.surefire.report; import java.util.Collection; import junit.framework.TestCase; /* * Copyright 2002-2009 the original author or authors. * * 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. * */ public class RunStatisticsTest extends TestCase { private static final String DUMMY_ERROR_SOURCE = "dummy error source"; private static final String DUMMY_FAILURE_SOURCE = "dummy failure source"; private static final String DUMMY_MESSAGE = "dummy message"; public void testAddErrorSourceWithThrowableMessage() { RuntimeException throwable = new RuntimeException( DUMMY_MESSAGE ); RunStatistics statistics = createRunStatisticsAndAddErrorSourceWithThrowable( throwable ); assertRunStatisticsHasErrorSource( statistics, DUMMY_ERROR_SOURCE + ": " + DUMMY_MESSAGE ); } public void testAddErrorSourceWithoutStackTraceWriter() { RunStatistics statistics = new RunStatistics(); statistics.addErrorSource( DUMMY_ERROR_SOURCE, null ); assertRunStatisticsHasErrorSource( statistics, DUMMY_ERROR_SOURCE ); } public void testAddErrorSourceWithoutThrowable() { RunStatistics statistics = createRunStatisticsAndAddErrorSourceWithThrowable( null ); assertRunStatisticsHasErrorSource( statistics, DUMMY_ERROR_SOURCE ); } public void testAddErrorSourceWithThrowableWithoutMessage() { RuntimeException throwable = new RuntimeException(); RunStatistics statistics = createRunStatisticsAndAddErrorSourceWithThrowable( throwable ); assertRunStatisticsHasErrorSource( statistics, DUMMY_ERROR_SOURCE ); } public void testAddFailureSourceWithThrowableMessage() { RuntimeException throwable = new RuntimeException( DUMMY_MESSAGE ); RunStatistics statistics = createRunStatisticsAndAddFailureSourceWithThrowable( throwable ); assertRunStatisticsHasFailureSource( statistics, DUMMY_FAILURE_SOURCE + ": " + DUMMY_MESSAGE ); } public void testAddFailureSourceWithoutStackTraceWriter() { RunStatistics statistics = new RunStatistics(); statistics.addFailureSource( DUMMY_FAILURE_SOURCE, null ); assertRunStatisticsHasFailureSource( statistics, DUMMY_FAILURE_SOURCE ); } public void testAddFailureSourceWithoutThrowable() { RunStatistics statistics = createRunStatisticsAndAddFailureSourceWithThrowable( null ); assertRunStatisticsHasFailureSource( statistics, DUMMY_FAILURE_SOURCE ); } public void testAddFailureSourceWithThrowableWithoutMessage() { RuntimeException throwable = new RuntimeException(); RunStatistics statistics = createRunStatisticsAndAddFailureSourceWithThrowable( throwable ); assertRunStatisticsHasFailureSource( statistics, DUMMY_FAILURE_SOURCE ); } private RunStatistics createRunStatisticsAndAddErrorSourceWithThrowable( Throwable throwable ) { StackTraceWriter stackTraceWriter = new PojoStackTraceWriter( null, null, throwable ); RunStatistics statistics = new RunStatistics(); statistics.addErrorSource( DUMMY_ERROR_SOURCE, stackTraceWriter ); return statistics; } private RunStatistics createRunStatisticsAndAddFailureSourceWithThrowable( Throwable throwable ) { StackTraceWriter stackTraceWriter = new PojoStackTraceWriter( null, null, throwable ); RunStatistics statistics = new RunStatistics(); statistics.addFailureSource( DUMMY_FAILURE_SOURCE, stackTraceWriter ); return statistics; } private void assertRunStatisticsHasErrorSource( RunStatistics statistics, String expectedErrorSource ) { Collection errorSources = statistics.getErrorSources(); assertNotNull( "No error sources.", errorSources ); assertEquals( "Wrong number of error sources.", 1, errorSources.size() ); assertEquals( "Wrong error sources.", expectedErrorSource, errorSources.iterator().next() ); } private void assertRunStatisticsHasFailureSource( RunStatistics statistics, String expectedFailureSource ) { Collection failureSources = statistics.getFailureSources(); assertNotNull( "No failure sources.", failureSources ); assertEquals( "Wrong number of failure sources.", 1, failureSources.size() ); assertEquals( "Wrong failure sources.", expectedFailureSource, failureSources.iterator().next() ); } } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/suite/0000755000175000017500000000000011645102474025205 5ustar tonytonysurefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/suite/RunResultTest.java0000644000175000017500000000417511556104214030655 0ustar tonytonypackage org.apache.maven.surefire.suite; /* * 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. */ import junit.framework.TestCase; /** * @author Kristian Rosenvold */ public class RunResultTest extends TestCase { public void testGetAsString() throws Exception { } public void testFromString() throws Exception { RunResult original = new RunResult( 4,3,2,1, true,false); final String asString = original.getAsString(); final RunResult runResult = RunResult.fromString( asString ); verifySame( original, runResult ); } public void testFromString2() throws Exception { RunResult original = new RunResult( 5,6,7,8, false,true ); final String asString = original.getAsString(); final RunResult runResult = RunResult.fromString( asString ); verifySame( original, runResult ); } private void verifySame( RunResult original, RunResult runResult ) { assertEquals( original.getCompletedCount(), runResult.getCompletedCount()); assertEquals( original.getErrors(), runResult.getErrors() ); assertEquals( original.getFailures(), runResult.getFailures()); assertEquals( original.getSkipped(), runResult.getSkipped()); assertEquals( original.isFailure(), runResult.isFailure()); assertEquals( original.isTimeout(), runResult.isTimeout()); } } surefire-2.10/surefire-api/src/test/java/org/apache/maven/surefire/assertion/0000755000175000017500000000000011645102474026063 5ustar tonytonysurefire-2.10/surefire-api/src/site/0000755000175000017500000000000011645102475016157 5ustar tonytonysurefire-2.10/surefire-api/src/site/apt/0000755000175000017500000000000011645102475016743 5ustar tonytonysurefire-2.10/surefire-api/src/site/apt/index.apt0000644000175000017500000000227510766555661020602 0ustar tonytony ----- Surefire API Design ----- Brett Porter ----- 3 March 2007 ----- Surefire API * Definitions *-------------+-----------------------------------------------+ | test method | individual test method within a class | *-------------+-----------------------------------------------+ | test | 1..N test methods in 1 or more classes. | *-------------+-----------------------------------------------+ | suite | 1..N tests. | *-------------+-----------------------------------------------+ | group | A named subset of test methods within a test. | *-------------+-----------------------------------------------+ How each definition is applied depends on the provider, and the test suite being used. Directory test suite: this constructs a single suite from a directory file set. Each discovered class is treated as a test. TestNG XML test suite: this constructs a single suite from a testng.xml file. The definitions inside the file will match those above. JUnit 3.x: Groups are not supported. See {{{providers/index.html}}} for more information on specific providers. | ~~TODO: fix up URLs, move some to providers/javadoc. surefire-2.10/surefire-api/src/main/0000755000175000017500000000000011645102475016137 5ustar tonytonysurefire-2.10/surefire-api/src/main/appended-resources/0000755000175000017500000000000011645102475021727 5ustar tonytonysurefire-2.10/surefire-api/src/main/appended-resources/META-INF/0000755000175000017500000000000011645102475023067 5ustar tonytonysurefire-2.10/surefire-api/src/main/appended-resources/META-INF/NOTICE0000644000175000017500000000015410567627041023776 0ustar tonytony This product includes software developed by the Spring Framework Project (http://www.springframework.org). surefire-2.10/surefire-api/src/main/java/0000755000175000017500000000000011645102475017060 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/0000755000175000017500000000000011645102475017647 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/0000755000175000017500000000000011645102475021070 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/0000755000175000017500000000000011645102475022176 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/0000755000175000017500000000000011645102475024022 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/0000755000175000017500000000000011645102475024777 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/NestedRuntimeException.java0000644000175000017500000001267211557340256032322 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ /* * Copyright 2002-2005 the original author or authors. * * 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. */ import java.io.PrintStream; import java.io.PrintWriter; /** *

Copied from Spring framework to keep Java 1.3 compatability.

*

*

Handy class for wrapping runtime Exceptions with a root cause.

*

*

This time-honoured technique is no longer necessary in Java 1.4, which * finally provides built-in support for exception nesting. Thus exceptions in * applications written to use Java 1.4 need not extend this class. To ease * migration, this class mirrors Java 1.4's nested exceptions as closely as possible. *

*

Abstract to force the programmer to extend the class. getMessage * will include nested exception information; printStackTrace etc will * delegate to the wrapped exception, if any. *

*

The similarity between this class and the NestedCheckedException class is * unavoidable, as Java forces these two classes to have different superclasses * (ah, the inflexibility of concrete inheritance!). *

*

As discussed in * Expert One-On-One J2EE Design and * Development, runtime exceptions are often a better alternative to checked exceptions. * However, all exceptions should preserve their stack trace, if caused by a * lower-level exception. * * @author Rod Johnson * @author Juergen Hoeller * @see #getMessage * @see #printStackTrace * @see NestedCheckedException */ public class NestedRuntimeException extends RuntimeException { /** * Root cause of this nested exception */ private final Throwable cause; /** * Construct a NestedRuntimeException with the specified detail message * and nested exception. * * @param msg the detail message * @param ex the nested exception */ public NestedRuntimeException( String msg, Throwable ex ) { super( msg ); this.cause = ex; } /** * Construct a NestedRuntimeException with the specified nested exception. * * @param ex the nested exception */ public NestedRuntimeException( Throwable ex ) { super(); this.cause = ex; } /** * Return the nested cause, or null if none. *

Note that this will only check one level of nesting. * Use getRootCause() to retrieve the innermost cause. * */ public Throwable getCause() { // Even if you cannot set the cause of this exception other than through // the constructor, we check for the cause being "this" here, as the cause // could still be set to "this" via reflection: for example, by a remoting // deserializer like Hessian's. return ( this.cause == this ? null : this.cause ); } /** * Return the detail message, including the message from the nested exception * if there is one. */ public String getMessage() { if ( getCause() == null ) { return super.getMessage(); } else { return super.getMessage() + "; nested exception is " + getCause().getClass().getName() + ": " + getCause().getMessage(); } } /** * Print the composite message and the embedded stack trace to the specified stream. * * @param ps the print stream */ public void printStackTrace( PrintStream ps ) { if ( getCause() == null ) { super.printStackTrace( ps ); } else { ps.println( this ); getCause().printStackTrace( ps ); } } /** * Print the composite message and the embedded stack trace to the specified writer. * * @param pw the print writer */ public void printStackTrace( PrintWriter pw ) { if ( getCause() == null ) { super.printStackTrace( pw ); } else { pw.println( this ); getCause().printStackTrace( pw ); } } }surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/Relocator.java0000644000175000017500000000332211557272216027577 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ /** * Relocates class names when running with relocated provider * * @author Kristian Rosenvold */ public class Relocator { private final String relocation; private static final String relocationBase = "org.apache.maven.surefire."; public Relocator( String relocation ) { this.relocation = relocation; } public Relocator() { relocation = "shadefire"; } private String getRelocation() { return relocation; } public String relocate( String className ) { if ( relocation == null ) { return className; } if (className.indexOf( relocation) >= 0){ return className; } String rest = className.substring( "org.apache.maven.surefire.".length() ); final String s = relocationBase + getRelocation() + "."; return s + rest; } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/RunOrder.java0000644000175000017500000000600111603272271027373 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ /** * A RunOrder specifies the order in which the tests will be run. * * @author Stefan Birkner */ public class RunOrder { public static final RunOrder ALPHABETICAL = new RunOrder( "alphabetical" ); public static final RunOrder FILESYSTEM = new RunOrder( "filesystem" ); public static final RunOrder HOURLY = new RunOrder( "hourly" ); public static final RunOrder RANDOM = new RunOrder( "random" ); public static final RunOrder REVERSE_ALPHABETICAL = new RunOrder( "reversealphabetical" ); public static RunOrder valueOf( String name ) { if ( name == null ) { return null; } else { RunOrder[] runOrders = values(); for ( int i = 0; i < runOrders.length; i++ ) { if ( runOrders[i].matches( name ) ) { return runOrders[i]; } } StringBuffer errorMessage = createMessageForMissingRunOrder( name ); throw new IllegalArgumentException( errorMessage.toString() ); } } private static StringBuffer createMessageForMissingRunOrder( String name ) { RunOrder[] runOrders = values(); StringBuffer message = new StringBuffer(); message.append( "There's no RunOrder with the name " ); message.append( name ); message.append( ". Please use one of the following RunOrders: " ); for ( int i = 0; i < runOrders.length; i++ ) { if ( i != 0 ) { message.append( ", " ); } message.append( runOrders[i] ); } message.append( "." ); return message; } private static RunOrder[] values() { return new RunOrder[] { ALPHABETICAL, FILESYSTEM, HOURLY, RANDOM, REVERSE_ALPHABETICAL }; } private final String name; private RunOrder( String name ) { this.name = name; } private boolean matches( String anotherName ) { return name.equalsIgnoreCase( anotherName ); } public String name() { return name; } public String toString() { return name; } }surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/TestsToRun.java0000644000175000017500000000506611503742760027743 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ import org.apache.maven.surefire.testset.TestSetFailedException; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; /** * Contains all the tests that have been found according to specified include/exclude * specification for a given surefire run. * * @author Kristian Rosenvold (junit core adaption) */ public class TestsToRun { private final List locatedClasses; /** * Constructor * * @param locatedClasses A list of java.lang.Class objects representing tests to run */ public TestsToRun( List locatedClasses ) { this.locatedClasses = Collections.unmodifiableList( locatedClasses ); Set testSets = new HashSet(); for ( Iterator iterator = locatedClasses.iterator(); iterator.hasNext(); ) { Class testClass = (Class) iterator.next(); if ( testSets.contains( testClass ) ) { throw new RuntimeException( "Duplicate test set '" + testClass.getName() + "'" ); } testSets.add( testClass ); } } public static TestsToRun fromClass( Class clazz ) throws TestSetFailedException { return new TestsToRun( Arrays.asList( new Class[]{ clazz } ) ); } public int size() { return locatedClasses.size(); } public Class[] getLocatedClasses() { return (Class[]) locatedClasses.toArray( new Class[locatedClasses.size()] ); } /** * Returns an iterator over the located java.lang.Class objects * * @return an unmodifiable iterator */ public Iterator iterator() { return locatedClasses.iterator(); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/DirectoryScanner.java0000644000175000017500000000241211501143743031111 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ /** * @author Kristian Rosenvold */ public interface DirectoryScanner { /** * Locates tests based on scanning directories * * @param classLoader The classloader to use when loading classes * @param scannerFilter The filter to include/exclude test classes * @return The found classes that match the filter */ TestsToRun locateTestClasses( ClassLoader classLoader, ScannerFilter scannerFilter ); } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/NestedCheckedException.java0000644000175000017500000001241411557272216032217 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ /* * Copyright 2002-2005 the original author or authors. * * 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. */ import java.io.PrintStream; import java.io.PrintWriter; /** *

Copied from Spring framework to keep Java 1.3 compatibility.

*

*

Handy class for wrapping checked Exceptions with a root cause.

*

*

This time-honored technique is no longer necessary in Java 1.4, which * finally provides built-in support for exception nesting. Thus exceptions in * applications written to use Java 1.4 need not extend this class. To ease * migration, this class mirrors Java 1.4's nested exceptions as closely as possible. *

*

Abstract to force the programmer to extend the class. getMessage * will include nested exception information; printStackTrace etc will * delegate to the wrapped exception, if any. *

*

The similarity between this class and the NestedRuntimeException class is * unavoidable, as Java forces these two classes to have different superclasses * (ah, the inflexibility of concrete inheritance!). *

*

As discussed in * Expert One-On-One J2EE Design and * Development, runtime exceptions are often a better alternative to checked exceptions. * However, all exceptions should preserve their stack trace, if caused by a * lower-level exception. * * @author Rod Johnson * @author Juergen Hoeller * @see #getMessage * @see #printStackTrace * @see NestedRuntimeException */ public class NestedCheckedException extends Exception { /** * Root cause of this nested exception */ private Throwable cause; /** * Construct a NestedCheckedException with the specified detail message. * * @param msg the detail message */ public NestedCheckedException( String msg ) { super( msg ); } /** * Construct a NestedCheckedException with the specified detail message * and nested exception. * * @param msg the detail message * @param ex the nested exception */ public NestedCheckedException( String msg, Throwable ex ) { super( msg ); this.cause = ex; } /** * Return the nested cause, or null if none. */ public Throwable getCause() { // Even if you cannot set the cause of this exception other than through // the constructor, we check for the cause being "this" here, as the cause // could still be set to "this" via reflection: for example, by a remoting // deserializer like Hessian's. return ( this.cause == this ? null : this.cause ); } /** * Return the detail message, including the message from the nested exception * if there is one. */ public String getMessage() { if ( getCause() == null ) { return super.getMessage(); } else { return super.getMessage() + "; nested exception is " + getCause().getClass().getName() + ": " + getCause().getMessage(); } } /** * Print the composite message and the embedded stack trace to the specified stream. * * @param ps the print stream */ public void printStackTrace( PrintStream ps ) { if ( getCause() == null ) { super.printStackTrace( ps ); } else { ps.println( this ); getCause().printStackTrace( ps ); } } /** * Print the composite message and the embedded stack trace to the specified print writer. * * @param pw the print writer */ public void printStackTrace( PrintWriter pw ) { if ( getCause() == null ) { super.printStackTrace( pw ); } else { pw.println( this ); getCause().printStackTrace( pw ); } } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultDirectoryScanner.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultDirectoryScanner.java0000644000175000017500000001535111637254455032441 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ import java.io.File; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; /** * Scans directories looking for tests. * * @author Karl M. Davis * @author Kristian Rosenvold */ public class DefaultDirectoryScanner implements DirectoryScanner { private static final String FS = System.getProperty( "file.separator" ); private static final String[] EMPTY_STRING_ARRAY = new String[0]; private static final String JAVA_SOURCE_FILE_EXTENSION = ".java"; private static final String JAVA_CLASS_FILE_EXTENSION = ".class"; private final File basedir; private final List includes; private final List excludes; private final List classesSkippedByValidation = new ArrayList(); private final Comparator sortOrder; private final RunOrder runOrder; public DefaultDirectoryScanner( File basedir, List includes, List excludes, RunOrder runOrder ) { this.basedir = basedir; this.includes = includes; this.excludes = excludes; this.runOrder = runOrder; this.sortOrder = getSortOrderComparator(); } public TestsToRun locateTestClasses( ClassLoader classLoader, ScannerFilter scannerFilter ) { String[] testClassNames = collectTests(); List result = new ArrayList(); for ( int i = 0; i < testClassNames.length; i++ ) { String className = testClassNames[i]; Class testClass = loadClass( classLoader, className ); if ( scannerFilter == null || scannerFilter.accept( testClass ) ) { result.add( testClass ); } else { classesSkippedByValidation.add( testClass ); } } orderTestClasses( result ); return new TestsToRun( result ); } private static Class loadClass( ClassLoader classLoader, String className ) { Class testClass; try { testClass = classLoader.loadClass( className ); } catch ( ClassNotFoundException e ) { throw new NestedRuntimeException( "Unable to create test class '" + className + "'", e ); } return testClass; } String[] collectTests() { String[] tests = EMPTY_STRING_ARRAY; if ( basedir.exists() ) { org.codehaus.plexus.util.DirectoryScanner scanner = new org.codehaus.plexus.util.DirectoryScanner(); scanner.setBasedir( basedir ); if ( includes != null ) { scanner.setIncludes( processIncludesExcludes( includes ) ); } if ( excludes != null ) { scanner.setExcludes( processIncludesExcludes( excludes ) ); } scanner.scan(); tests = scanner.getIncludedFiles(); for ( int i = 0; i < tests.length; i++ ) { String test = tests[i]; test = test.substring( 0, test.indexOf( "." ) ); tests[i] = test.replace( FS.charAt( 0 ), '.' ); } } return tests; } private static String[] processIncludesExcludes( List list ) { List newList = new ArrayList(); Iterator iter = list.iterator(); while (iter.hasNext()) { String include = (String) iter.next(); String [] includes = include.split( "," ); for ( int i = 0; i < includes.length; ++i ) { newList.add( includes[i] ); } } String[] incs = new String[newList.size()]; for ( int i = 0; i < incs.length; i++ ) { String inc = (String) newList.get( i ); if ( inc.endsWith( JAVA_SOURCE_FILE_EXTENSION ) ) { inc = new StringBuffer( inc.length() - JAVA_SOURCE_FILE_EXTENSION.length() + JAVA_CLASS_FILE_EXTENSION.length() ).append( inc.substring( 0, inc.lastIndexOf( JAVA_SOURCE_FILE_EXTENSION ) ) ).append( JAVA_CLASS_FILE_EXTENSION ).toString(); } incs[i] = inc; } return incs; } public List getClassesSkippedByValidation() { return classesSkippedByValidation; } private void orderTestClasses( List testClasses ) { if ( RunOrder.RANDOM.equals( runOrder ) ) { Collections.shuffle( testClasses ); } else if ( sortOrder != null ) { Collections.sort( testClasses, sortOrder ); } } private Comparator getSortOrderComparator() { if ( RunOrder.ALPHABETICAL.equals( runOrder ) ) { return getAlphabeticalComparator(); } else if ( RunOrder.REVERSE_ALPHABETICAL.equals( runOrder ) ) { return getReverseAlphabeticalComparator(); } else if ( RunOrder.HOURLY.equals( runOrder ) ) { final int hour = Calendar.getInstance().get( Calendar.HOUR_OF_DAY ); return ( ( hour % 2 ) == 0 ) ? getAlphabeticalComparator() : getReverseAlphabeticalComparator(); } else { return null; } } private Comparator getReverseAlphabeticalComparator() { return new Comparator() { public int compare( Object o1, Object o2 ) { return ( (Class) o2 ).getName().compareTo( ( (Class) o1 ).getName() ); } }; } private Comparator getAlphabeticalComparator() { return new Comparator() { public int compare( Object o1, Object o2 ) { return ( (Class) o1 ).getName().compareTo( ( (Class) o2 ).getName() ); } }; } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/UrlUtils.java0000644000175000017500000000602211503742760027425 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ import java.io.File; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.util.BitSet; /** * Utility for dealing with URLs in pre-JDK 1.4. */ public class UrlUtils { private static final BitSet UNRESERVED = new BitSet( Byte.MAX_VALUE - Byte.MIN_VALUE + 1 ); private static final int RADIX = 16; private static final int MASK = 0xf; private UrlUtils() { } private static final String ENCODING = "UTF-8"; static { try { byte[] bytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.!~*'():/".getBytes( ENCODING ); for ( int i = 0; i < bytes.length; i++ ) { UNRESERVED.set( bytes[i] ); } } catch ( UnsupportedEncodingException e ) { // can't happen as UTF-8 must be present } } public static URL getURL( File file ) throws MalformedURLException { // with JDK 1.4+, code would be: return new URL( file.toURI().toASCIIString() ); //noinspection deprecation URL url = file.toURL(); // encode any characters that do not comply with RFC 2396 // this is primarily to handle Windows where the user's home directory contains spaces try { byte[] bytes = url.toString().getBytes( ENCODING ); StringBuffer buf = new StringBuffer( bytes.length ); for ( int i = 0; i < bytes.length; i++ ) { byte b = bytes[i]; if ( b > 0 && UNRESERVED.get( b ) ) { buf.append( (char) b ); } else { buf.append( '%' ); buf.append( Character.forDigit( b >>> 4 & MASK, RADIX ) ); buf.append( Character.forDigit( b & MASK, RADIX ) ); } } return new URL( buf.toString() ); } catch ( UnsupportedEncodingException e ) { // should not happen as UTF-8 must be present throw new NestedRuntimeException( e ); } } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/SurefireReflectionException.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/SurefireReflectionException.0000644000175000017500000000312411503742760032456 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ /** * Exception indicating that surefire hard problems with reflection. This may be due * to programming errors, incorrect configuration or incorrect dependencies, but is * generally not recoverable and not relevant to handle. * * @author Kristian Rosenvold */ public class SurefireReflectionException extends NestedRuntimeException { /** * Create a SurefireReflectionException with the specified cause. The * getMessage method of this exception object will return * (cause == null ? "" : cause.toString()). * @param cause The cause of this exception */ public SurefireReflectionException( Throwable cause ) { super( cause == null ? "" : cause.toString(), cause ); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/ReflectionUtils.java0000644000175000017500000001414611557340256030766 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * @author Kristian Rosenvold */ public class ReflectionUtils { private static final Class[] NO_ARGS = new Class[0]; private static final Object[] NO_ARGS_VALUES = new Object[0]; public static Method getMethod( Object instance, String methodName, Class[] parameters ) { return getMethod( instance.getClass(), methodName, parameters ); } public static Method getMethod( Class clazz, String methodName, Class[] parameters ) { try { return clazz.getMethod( methodName, parameters ); } catch ( NoSuchMethodException e ) { throw new NestedRuntimeException( "When finding method " + methodName, e ); } } public static Method tryGetMethod( Class clazz, String methodName, Class[] parameters ) { try { return clazz.getMethod( methodName, parameters ); } catch ( NoSuchMethodException e ) { return null; } } public static Object invokeGetter( Object instance, String methodName ) { final Method method = getMethod( instance, methodName, NO_ARGS ); return invokeMethodWithArray( instance, method, NO_ARGS_VALUES ); } public static Constructor getConstructor( Class clazz, Class[] arguments ) { try { return clazz.getConstructor( arguments ); } catch ( NoSuchMethodException e ) { throw new SurefireReflectionException( e ); } } public static Object newInstance( Constructor constructor, Object[] params ) { try { return constructor.newInstance( params ); } catch ( InvocationTargetException e ) { throw new SurefireReflectionException( e ); } catch ( InstantiationException e ) { throw new SurefireReflectionException( e ); } catch ( IllegalAccessException e ) { throw new SurefireReflectionException( e ); } } public static Object instantiate( ClassLoader classLoader, String classname ) { try { Class clazz = loadClass( classLoader, classname ); return clazz.newInstance(); } catch ( InstantiationException e ) { throw new SurefireReflectionException( e ); } catch ( IllegalAccessException e ) { throw new SurefireReflectionException( e ); } } public static Object instantiateOneArg( ClassLoader classLoader, String className, Class param1Class, Object param1 ) { try { Class aClass = loadClass( classLoader, className ); Constructor constructor = ReflectionUtils.getConstructor( aClass, new Class[]{ param1Class } ); return constructor.newInstance( new Object[]{ param1 } ); } catch ( InvocationTargetException e ) { throw new SurefireReflectionException( e ); } catch ( InstantiationException e ) { throw new SurefireReflectionException( e ); } catch ( IllegalAccessException e ) { throw new SurefireReflectionException( e ); } } public static void invokeSetter( Object o, String name, Class value1clazz, Object value ) { final Method setter = getMethod( o, name, new Class[]{ value1clazz } ); invokeSetter( o, setter, value ); } public static Object invokeSetter( Object target, Method method, Object value ) { return invokeMethodWithArray( target, method, new Object[]{ value } ); } public static Object invokeMethodWithArray( Object target, Method method, Object[] args ) { try { return method.invoke( target, args ); } catch ( IllegalAccessException e ) { throw new SurefireReflectionException( e ); } catch ( InvocationTargetException e ) { throw new SurefireReflectionException( e ); } } public static Object instantiateObject( String className, Class[] types, Object[] params, ClassLoader classLoader ) { Class clazz = loadClass( classLoader, className ); final Constructor constructor = getConstructor( clazz, types ); return newInstance( constructor, params ); } public static Class tryLoadClass( ClassLoader classLoader, String className ) { try { return classLoader.loadClass( className ); } catch ( NoClassDefFoundError ignore ) { } catch ( ClassNotFoundException ignore ) { } return null; } public static Class loadClass( ClassLoader classLoader, String className ) { try { return classLoader.loadClass( className ); } catch ( NoClassDefFoundError e ) { throw new SurefireReflectionException( e ); } catch ( ClassNotFoundException e ) { throw new SurefireReflectionException( e ); } } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/ScannerFilter.java0000644000175000017500000000224111474322775030407 0ustar tonytonypackage org.apache.maven.surefire.util; /* * 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. */ /** * @author Kristian Rosenvold */ public interface ScannerFilter { /** * Indicates if the class should be accepted by the directory scanner * * @param testClass The class in question * @return true if the class should be part of the directory scan result. */ boolean accept( Class testClass ); } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/0000755000175000017500000000000011645102475026613 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ByteBuffer.java0000644000175000017500000000666111557340256031527 0ustar tonytonypackage org.apache.maven.surefire.util.internal; /* * 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. */ /** * @author Kristian Rosenvold */ public class ByteBuffer { private final byte[] data; private int position; public ByteBuffer( int length ) { this.data = new byte[length]; } public ByteBuffer( byte[] buf, int off, int len ) { this.data = new byte[len]; append( buf, off, len ); } public void append( char chararcter ) { data[position++] = (byte) chararcter; } public void append( byte chararcter ) { data[position++] = chararcter; } private static final byte comma = (byte) ','; public void comma() { data[position++] = comma; } public void advance( int i ) { // Oooh nice break of encapsulation position += i; } public void append( Integer integer ) { toHex( integer.intValue() ); } /** * Convert the integer to an unsigned number. * @param i the value */ private void toHex( int i ) { byte[] buf = new byte[32]; int charPos = 32; int radix = 1 << 4; int mask = radix - 1; do { buf[--charPos] = (byte) digits[i & mask]; i >>>= 4; } while ( i != 0 ); append( buf, charPos, ( 32 - charPos ) ); } private final static char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; public byte[] getData() { return data; } public int getlength() { return position; } public String toString() { return new String( data, 0, position ); } public static byte[] copy( byte[] src1, int off1, int len1 ) { byte[] combined = new byte[len1]; int pos = 0; for ( int i = off1; i < off1 + len1; i++ ) { combined[pos++] = src1[i]; } return combined; } void append( byte[] src1, int off1, int len1 ) { for ( int i = off1; i < off1 + len1; i++ ) { data[position++] = src1[i]; } } public static byte[] join( byte[] src1, int off1, int len1, byte[] src2, int off2, int len2 ) { byte[] combined = new byte[len1 + len2]; int pos = 0; for ( int i = off1; i < off1 + len1; i++ ) { combined[pos++] = src1[i]; } for ( int i = off2; i < off2 + len2; i++ ) { combined[pos++] = src2[i]; } return combined; } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/TwoThreadBlockingQueue.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/TwoThreadBlockingQu0000644000175000017500000000551011556104214032411 0ustar tonytonypackage org.apache.maven.surefire.util.internal; /* * 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. */ /** * A producer/consumer queue that is optimized for *one* producer thread * and *one* consumer thread, and solely optimized for efficient inserts * by the producer, minimizing producer locking for hand-off to * a second consumer. * * The producer can actually come in on different threads * (because lastInserted is volatile), but can/will lose * items if they arrive concurrently. Take only supports a single * client. * * This runs like crazy, but is not the most garbage friendly around. * * TwoThreadBlockingQueue insert 5000000 elements in = 52ms * LinkedBlockingQueue insert 5000000 elements in = 179ms * LikedBlockingDeque insert 5000000 elements in = 114ms * ArrayList insert 5000000 elements in = 18ms (sized at correct size from start) * * @author Kristian Rosenvold */ public class TwoThreadBlockingQueue implements BlockingQueue { private volatile Element lastInserted; private volatile Element lastTaken; private volatile Element first; public static final Object poison = new Object(); public void add( Object object ) { Element next = new Element( object); if (lastInserted == null){ first = lastInserted = next; } else { lastInserted.next = next; lastInserted = next; } } public Object take() throws InterruptedException { if (lastTaken == null){ while (first == null){ Thread.sleep(1); } lastTaken = first; first = null; } else { Element next = lastTaken.next; while (next == null){ Thread.sleep(1); next = lastTaken.next; } lastTaken = next; } return lastTaken.object; } private static class Element { private final Object object; private volatile Element next; Element( Object object ) { this.object = object; } } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/Java15BlockingQueue.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/Java15BlockingQueue0000644000175000017500000000243611556104214032242 0ustar tonytonypackage org.apache.maven.surefire.util.internal; /* * 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. */ import java.util.concurrent.LinkedBlockingQueue; /** * @author Kristian Rosenvold */ public class Java15BlockingQueue implements BlockingQueue { private final java.util.concurrent.BlockingQueue blockingQueue = new LinkedBlockingQueue( ); public void add( Object object ) { blockingQueue.add( object ); } public Object take() throws InterruptedException { return blockingQueue.take(); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/BlockingQueue.java0000644000175000017500000000215311556104214032206 0ustar tonytonypackage org.apache.maven.surefire.util.internal; /* * 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. */ /** * A very simple blocking queue that might have stricter constraints than the standard jdk1.5 blockingqueues. * @author Kristian Rosenvold */ public interface BlockingQueue { void add( Object object ); Object take() throws InterruptedException; } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/BlockingQueueFactory.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/BlockingQueueFactor0000644000175000017500000000254211556104214032427 0ustar tonytonypackage org.apache.maven.surefire.util.internal; /* * 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. */ import org.apache.maven.surefire.util.ReflectionUtils; /** * Creates blocking queues that work at different language levels. * @author Kristian Rosenvold */ public class BlockingQueueFactory { public static BlockingQueue createBlockingQueue(){ return isJdk15() ? new Java15BlockingQueue() : (BlockingQueue) new Java13BlockingQueue(); } private static boolean isJdk15(){ return ReflectionUtils.tryGetMethod( String.class, "contains", new Class[]{CharSequence.class}) != null; } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/StringUtils.java0000644000175000017500000006305211560207303031743 0ustar tonytonypackage org.apache.maven.surefire.util.internal; /* * 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. */ import java.io.IOException; import java.io.PrintStream; import java.io.StringWriter; import java.io.Writer; import java.util.StringTokenizer; import org.apache.maven.surefire.util.NestedRuntimeException; /** *

Common String manipulation routines.

*

*

Originally from * Turbine and the * GenerationJavaCore library.

* * @author Jon S. Stevens * @author Daniel Rall * @author Greg Coladonato * @author Henri Yandell * @author Ed Korthof * @author Rand McNeely * @author Stephen Colebourne * @author Fredrik Westermarck * @author Holger Krauth * @author Alexander Day Chaffee * @author Vincent Siveton * @version $Id: StringUtils.java 8001 2009-01-03 13:17:09Z vsiveton $ * @noinspection JavaDoc *

* A quick borrow from plexus-utils by Kristian Rosenvold, to restore jdk1.3 compat * Threw away all the unused stuff. *

* NOTE: This class is not part of any api and is public purely for technical reasons ! * @since 1.0 */ public class StringUtils { // Splitting //-------------------------------------------------------------------------- public static String[] split( String text, String separator ) { int max = -1; StringTokenizer tok; if ( separator == null ) { // Null separator means we're using StringTokenizer's default // delimiter, which comprises all whitespace characters. tok = new StringTokenizer( text ); } else { tok = new StringTokenizer( text, separator ); } int listSize = tok.countTokens(); if ( ( max > 0 ) && ( listSize > max ) ) { listSize = max; } String[] list = new String[listSize]; int i = 0; int lastTokenBegin; int lastTokenEnd = 0; while ( tok.hasMoreTokens() ) { if ( ( max > 0 ) && ( i == listSize - 1 ) ) { // In the situation where we hit the max yet have // tokens left over in our input, the last list // element gets all remaining text. String endToken = tok.nextToken(); lastTokenBegin = text.indexOf( endToken, lastTokenEnd ); list[i] = text.substring( lastTokenBegin ); break; } else { list[i] = tok.nextToken(); lastTokenBegin = text.indexOf( list[i], lastTokenEnd ); lastTokenEnd = lastTokenBegin + list[i].length(); } i++; } return list; } /** *

Checks if a (trimmed) String is null or blank.

* * @param str the String to check * @return true if the String is null, or * length zero once trimmed */ public static boolean isBlank( String str ) { return ( ( str == null ) || ( str.trim().length() == 0 ) ); } // Ripped from commons-lang StringEscapeUtils. Maybe Use dependency instead public static void unescapeJava( StringWriter out, String str ) { if ( out == null ) { throw new IllegalArgumentException( "The Writer must not be null" ); } if ( str == null ) { return; } int sz = str.length(); StringBuffer unicode = new StringBuffer( 4 ); boolean hadSlash = false; boolean inUnicode = false; for ( int i = 0; i < sz; i++ ) { char ch = str.charAt( i ); if ( inUnicode ) { // if in unicode, then we're reading unicode // values in somehow unicode.append( ch ); if ( unicode.length() == 4 ) { // unicode now contains the four hex digits // which represents our unicode character try { int value = Integer.parseInt( unicode.toString(), 16 ); out.write( (char) value ); unicode.setLength( 0 ); inUnicode = false; hadSlash = false; } catch ( NumberFormatException nfe ) { throw new NestedRuntimeException( "Unable to parse unicode value: " + unicode, nfe ); } } continue; } if ( hadSlash ) { // handle an escaped value hadSlash = false; switch ( ch ) { case '\\': out.write( '\\' ); break; case '\'': out.write( '\'' ); break; case '\"': out.write( '"' ); break; case 'r': out.write( '\r' ); break; case 'f': out.write( '\f' ); break; case 't': out.write( '\t' ); break; case 'n': out.write( '\n' ); break; case 'b': out.write( '\b' ); break; case 'u': { // uh-oh, we're in unicode country.... inUnicode = true; break; } default: out.write( ch ); break; } continue; } else if ( ch == '\\' ) { hadSlash = true; continue; } out.write( ch ); } if ( hadSlash ) { // then we're in the weird case of a \ at the end of the // string, let's output it anyway. out.write( '\\' ); } } // Ripped from commons-lang StringEscapeUtils. Maybe Use dependency instead public static int unescapeJava( byte[] out, String str ) { int outPos = 0; if ( out == null ) { throw new IllegalArgumentException( "The Writer must not be null" ); } if ( str == null ) { return 0; } int sz = str.length(); StringBuffer unicode = new StringBuffer( 4 ); boolean hadSlash = false; boolean inUnicode = false; for ( int i = 0; i < sz; i++ ) { char ch = str.charAt( i ); if ( inUnicode ) { // if in unicode, then we're reading unicode // values in somehow unicode.append( ch ); if ( unicode.length() == 4 ) { // unicode now contains the four hex digits // which represents our unicode character try { int value = Integer.parseInt( unicode.toString(), 16 ); out[outPos++] = (byte) value; unicode.setLength( 0 ); inUnicode = false; hadSlash = false; } catch ( NumberFormatException nfe ) { throw new NestedRuntimeException( "Unable to parse unicode value: " + unicode, nfe ); } } continue; } if ( hadSlash ) { // handle an escaped value hadSlash = false; switch ( ch ) { case '\\': out[outPos++] = '\\'; break; case '\'': out[outPos++] = '\''; break; case '\"': out[outPos++] = '"'; break; case 'r': out[outPos++] = '\r'; break; case 'f': out[outPos++] = '\f'; break; case 't': out[outPos++] = '\t'; break; case 'n': out[outPos++] = '\n'; break; case 'b': out[outPos++] = '\b'; break; case 'u': { // uh-oh, we're in unicode country.... inUnicode = true; break; } default: out[outPos++] = (byte) ch; break; } continue; } else if ( ch == '\\' ) { hadSlash = true; continue; } out[outPos++] = (byte) ch; } if ( hadSlash ) { // then we're in the weird case of a \ at the end of the // string, let's output it anyway. out[outPos++] = '\\'; } return outPos; } // Ripped from commons-lang StringEscapeUtils. With a minor modification, we unicode-quote commas // to avoid csv decoding problems ;) /** * @param out write to receieve the escaped string * @param str String to escape values in, may be null * @param escapeSingleQuote escapes single quotes if true * @throws java.io.IOException if an IOException occurs */ public static void escapeJavaStyleString( Writer out, String str, boolean escapeSingleQuote ) throws IOException { if ( out == null ) { throw new IllegalArgumentException( "The Writer must not be null" ); } if ( str == null ) { return; } int sz; sz = str.length(); for ( int i = 0; i < sz; i++ ) { char ch = str.charAt( i ); // handle unicode if ( ch > 0xfff ) { out.write( "\\u" + hex( ch ) ); } else if ( ch > 0xff ) { out.write( "\\u0" + hex( ch ) ); } else if ( ch > 0x7f || ch == ',' ) { // Kr - this line modified from commons out.write( "\\u00" + hex( ch ) ); } else if ( ch < 32 ) { switch ( ch ) { case '\b': out.write( '\\' ); out.write( 'b' ); break; case '\n': out.write( '\\' ); out.write( 'n' ); break; case '\t': out.write( '\\' ); out.write( 't' ); break; case '\f': out.write( '\\' ); out.write( 'f' ); break; case '\r': out.write( '\\' ); out.write( 'r' ); break; default: if ( ch > 0xf ) { out.write( "\\u00" + hex( ch ) ); } else { out.write( "\\u000" + hex( ch ) ); } break; } } else { switch ( ch ) { case '\'': if ( escapeSingleQuote ) { out.write( '\\' ); } out.write( '\'' ); break; case '"': out.write( '\\' ); out.write( '"' ); break; case '\\': out.write( '\\' ); out.write( '\\' ); break; case '/': out.write( '\\' ); out.write( '/' ); break; default: out.write( ch ); break; } } } } public static void escapeJavaStyleString( ByteBuffer out, byte[] str, int off, int len ) { if ( out == null ) { throw new IllegalArgumentException( "The Writer must not be null" ); } final int inputLength = str.length; if ( str == null || inputLength == 0 ) { return; } int outputPos = 0; int end = off + len; for ( int i = off; i < end; i++ ) { char ch = (char) str[i]; // handle unicode if ( ch > 0xfff ) { outputPos = writeOut( out, outputPos, "\\u" + hex( ch ) ); } else if ( ch > 0xff ) { outputPos = writeOut( out, outputPos, "\\u0" + hex( ch ) ); } else if ( ch > 0x7f || ch == ',' ) { // Kr - this line modified from commons outputPos = writeOut( out, outputPos, "\\u00" + hex( ch ) ); } else if ( ch < 32 ) { switch ( ch ) { case '\b': out.append( '\\' ); out.append( 'b' ); break; case '\n': out.append( '\\' ); out.append( 'n' ); break; case '\t': out.append( '\\' ); out.append( 't' ); break; case '\f': out.append( '\\' ); out.append( 'f' ); break; case '\r': out.append( '\\' ); out.append( 'r' ); break; default: if ( ch > 0xf ) { outputPos = writeOut( out, outputPos, "\\u00" + hex( ch ) ); } else { outputPos = writeOut( out, outputPos, "\\u000" + hex( ch ) ); } break; } } else { switch ( ch ) { case '\'': out.append( '\\' ); out.append( '\'' ); break; case '"': out.append( '\\' ); out.append( '"' ); break; case '\\': out.append( '\\' ); out.append( '\\' ); break; case '/': out.append( '\\' ); out.append( '/' ); break; default: out.append( ch ); break; } } } } public static void escapeJavaStyleString( PrintStream out, byte[] str, int off, int len ) { if ( out == null ) { throw new IllegalArgumentException( "The Writer must not be null" ); } final int inputLength = str.length; if ( str == null || inputLength == 0 ) { return; } int outputPos = 0; int end = off + len; for ( int i = off; i < end; i++ ) { char ch = (char) str[i]; // handle unicode if ( ch > 0xfff ) { outputPos = writeOut( out, outputPos, "\\u" + hex( ch ) ); } else if ( ch > 0xff ) { outputPos = writeOut( out, outputPos, "\\u0" + hex( ch ) ); } else if ( ch > 0x7f || ch == ',' ) { // Kr - this line modified from commons outputPos = writeOut( out, outputPos, "\\u00" + hex( ch ) ); } else if ( ch < 32 ) { switch ( ch ) { case '\b': out.append( '\\' ); out.append( 'b' ); break; case '\n': out.append( '\\' ); out.append( 'n' ); break; case '\t': out.append( '\\' ); out.append( 't' ); break; case '\f': out.append( '\\' ); out.append( 'f' ); break; case '\r': out.append( '\\' ); out.append( 'r' ); break; default: if ( ch > 0xf ) { outputPos = writeOut( out, outputPos, "\\u00" + hex( ch ) ); } else { outputPos = writeOut( out, outputPos, "\\u000" + hex( ch ) ); } break; } } else { switch ( ch ) { case '\'': out.append( '\\' ); out.append( '\'' ); break; case '"': out.append( '\\' ); out.append( '"' ); break; case '\\': out.append( '\\' ); out.append( '\\' ); break; case '/': out.append( '\\' ); out.append( '/' ); break; default: out.append( ch ); break; } } } } public static int escapeJavaStyleString( byte[] out, int outoff, byte[] str, int off, int len ) { if ( out == null ) { throw new IllegalArgumentException( "The Writer must not be null" ); } final int inputLength = str.length; if ( str == null || inputLength == 0 ) { return 0; } int outputPos = outoff; int end = off + len; for ( int i = off; i < end; i++ ) { char ch = (char) str[i]; // handle unicode if ( ch > 0xfff ) { outputPos = writeOut( out, outputPos, "\\u" + hex( ch ) ); } else if ( ch > 0xff ) { outputPos = writeOut( out, outputPos, "\\u0" + hex( ch ) ); } else if ( ch > 0x7f || ch == ',' ) { // Kr - this line modified from commons outputPos = writeOut( out, outputPos, "\\u00" + hex( ch ) ); } else if ( ch < 32 ) { switch ( ch ) { case '\b': out[outputPos++] = '\\'; out[outputPos++] = 'b'; break; case '\n': out[outputPos++] = '\\'; out[outputPos++] = 'n'; break; case '\t': out[outputPos++] = '\\'; out[outputPos++] = 't'; break; case '\f': out[outputPos++] = '\\'; out[outputPos++] = 'f'; break; case '\r': out[outputPos++] = '\\'; out[outputPos++] = 'r'; break; default: if ( ch > 0xf ) { outputPos = writeOut( out, outputPos, "\\u00" + hex( ch ) ); } else { outputPos = writeOut( out, outputPos, "\\u000" + hex( ch ) ); } break; } } else { switch ( ch ) { case '\'': out[outputPos++] = '\\'; out[outputPos++] = '\''; break; case '"': out[outputPos++] = '\\'; out[outputPos++] = '"'; break; case '\\': out[outputPos++] = '\\'; out[outputPos++] = '\\'; break; case '/': out[outputPos++] = '\\'; out[outputPos++] = '/'; break; default: out[outputPos++] = (byte) ch; break; } } } return outputPos - outoff; } private static int writeOut( ByteBuffer out, int outputPos, final String msg ) { byte[] bytes = msg.getBytes(); for ( int cnt = 0; cnt < bytes.length; cnt++ ) { out.append( bytes[cnt] ); } return outputPos; } private static int writeOut( PrintStream out, int outputPos, final String msg ) { byte[] bytes = msg.getBytes(); for ( int cnt = 0; cnt < bytes.length; cnt++ ) { out.write( bytes[cnt] ); } return outputPos; } private static int writeOut( byte[] out, int outputPos, final String msg ) { byte[] bytes = msg.getBytes(); for ( int cnt = 0; cnt < bytes.length; cnt++ ) { out[outputPos++] = bytes[cnt]; } return outputPos; } public static String hex( char ch ) { return Integer.toHexString( ch ).toUpperCase(); } /** * Courtesy of commons-lang StringEscapeUtils, slightly modified, see below * * @param str String to escape values in, may be null * @return the escaped string */ public static void escapeJavaStyleString( StringBuffer target, String str ) { if ( str == null ) { return; } try { StringWriter writer = new StringWriter( str.length() * 2 ); escapeJavaStyleString( writer, str, true ); target.append( writer.toString() ); // todo: be bit smarter } catch ( IOException ioe ) { // this should never ever happen while writing to a StringWriter ioe.printStackTrace(); } } public static void escapeJavaStyleString( PrintStream target, String str ) { if ( str == null ) { return; } try { StringWriter writer = new StringWriter( str.length() * 2 ); escapeJavaStyleString( writer, str, true ); target.append( writer.toString() ); // todo: be bit smarter } catch ( IOException ioe ) { // this should never ever happen while writing to a StringWriter ioe.printStackTrace(); } } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/StreamUtils.java0000644000175000017500000000406611560207303031730 0ustar tonytonypackage org.apache.maven.surefire.util.internal; /* * 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. */ import org.apache.maven.surefire.util.NestedRuntimeException; import java.io.IOException; import java.io.OutputStream; public class StreamUtils { public static void toHex( OutputStream target, Integer i ) { if ( i != null ) { toHex( target, i.intValue() ); } } /** * Convert the integer to an unsigned number. * * @param target The stream that will receive the encoded value * @param i the value */ public static void toHex( OutputStream target, int i ) { byte[] buf = new byte[32]; int charPos = 32; int radix = 1 << 4; int mask = radix - 1; do { buf[--charPos] = (byte) digits[i & mask]; i >>>= 4; } while ( i != 0 ); try { target.write( buf, charPos, ( 32 - charPos ) ); } catch (IOException e) { throw new NestedRuntimeException(e); } } private final static char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/Java13BlockingQueue.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/Java13BlockingQueue0000644000175000017500000000271011556104214032233 0ustar tonytonypackage org.apache.maven.surefire.util.internal; /* * 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. */ import java.util.LinkedList; /** * @author Kristian Rosenvold */ public class Java13BlockingQueue implements BlockingQueue { private final java.util.List items = new LinkedList(); public void add( Object object ) { synchronized ( items ) { items.add( object ); items.notifyAll(); } } public Object take() throws InterruptedException { synchronized ( items ) { if ( items.size() == 0 ) { items.wait(); } return items.remove( 0 ); } } } ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/FunkyTwoThreadBlockingQueue.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/FunkyTwoThreadBlock0000644000175000017500000000546511556104214032433 0ustar tonytonypackage org.apache.maven.surefire.util.internal; /* * 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. */ /** * A producer/consumer queue that is optimized for *one* producer thread * and *one* consumer thread, and solely optimized for efficient inserts * by the producer, minimizing producer locking for hand-off to * a second consumer. * * TwoThreadBlockingQueue insert 5000000 elements in = 52 * FunkyTwoThreadBlockingQueue insert 5000000 elements in = 42 * TwoThreadBlockingQueue produced and taken 5000000 elements in = 104 * LinkedBlockingQueue insert 5000000 elements in = 1815 * LinkedBlockingDeque insert 5000000 elements in = 113 * ArrayList insert 5000000 elements in = 18 * LinkedList insert 5000000 elements in = 334 * * @author Kristian Rosenvold */ public class FunkyTwoThreadBlockingQueue implements BlockingQueue { final int chunkSize = 100; private Chunk takeChunk = new Chunk(); private int takePos = 0; private Chunk insertChunk = takeChunk; private int insertPos = 0; private volatile boolean memoryModelGuard; public void put( Object object ) { insertChunk.elements[insertPos] = object; if ( ++insertPos == chunkSize) { Chunk newChunk = new Chunk(); insertChunk.next = newChunk; insertChunk = newChunk; insertPos = 0; } memoryModelGuard = true; } public void add( Object object ) { put( object ); } public Object take() throws InterruptedException { if ( takePos >= chunkSize ) { takeChunk = takeChunk.next; takePos = 0; } boolean fud = memoryModelGuard; Object next = takeChunk.elements[takePos]; while ( next == null ) { Thread.sleep( 1 ); fud = memoryModelGuard; next = takeChunk.elements[takePos]; } takePos++; return next; } final class Chunk { final Object[] elements = new Object[chunkSize]; volatile Chunk next; } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/0000755000175000017500000000000011645102475025335 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/Reporter.java0000644000175000017500000000636711557340256030021 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ /** * Persists reports somewhere *

* An instance of a reporter is not guaranteed to be thread-safe and concurrent test frameworks * must request an instance of a reporter per-thread from the ReporterFactory. */ public interface Reporter { /** * Indicates the start of a given test-set * * @param report the report entry describing the testset * @throws org.apache.maven.surefire.report.ReporterException * When reporting fails */ void testSetStarting( ReportEntry report ) throws ReporterException; /** * Indicates end of a given test-set * * @param report the report entry describing the testset * @throws org.apache.maven.surefire.report.ReporterException * When reporting fails */ void testSetCompleted( ReportEntry report ) throws ReporterException; // Tests /** * Event fired when a test is about to start * * @param report The report entry to log for */ void testStarting( ReportEntry report ); /** * Event fired when a test ended successfully * * @param report The report entry to log for */ void testSucceeded( ReportEntry report ); void testSkipped( ReportEntry report ); /** * Event fired when a test ended with an error (non anticipated problem) * * @param report The report entry to log for * @param stdOut standard output from the test case * @param stdErr error output from the test case */ void testError( ReportEntry report, String stdOut, String stdErr ); /** * Event fired when a test ended with a failure (anticipated problem) * * @param report The report entry to log for * @param stdOut standard output from the test case * @param stdErr error output from the test case */ void testFailed( ReportEntry report, String stdOut, String stdErr ); /** * Writes a message that will be displayed in all free-text format reporters. * These messages will be output regardless, as opposed to #writeDetailMessage, * which is controlled by reportFormat. * * @param message The message to write. */ void writeMessage( String message ); void writeMessage( byte[] b, int off, int len ); /** * Restores the instance of the reporter, making the instance re-usable for a subsequent run in the * same thread. */ void reset(); } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputDirectReporter.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputDirectReporte0000644000175000017500000000403211557602632032600 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.PrintStream; /** * Outputs test system out/system err directly to the console *

* Just a step on the road to getting the separation of reporting concerns * operating properly. * * @author Kristian Rosenvold */ public class ConsoleOutputDirectReporter implements Reporter { private final PrintStream reportsDirectory; public ConsoleOutputDirectReporter( PrintStream reportsDirectory ) { this.reportsDirectory = reportsDirectory; } public void testSetStarting( ReportEntry reportEntry ) { } public void testSetCompleted( ReportEntry report ) { } public void testStarting( ReportEntry report ) { } public void testSucceeded( ReportEntry report ) { } public void testSkipped( ReportEntry report ) { } public void testError( ReportEntry report, String stdOut, String stdErr ) { } public void testFailed( ReportEntry report, String stdOut, String stdErr ) { } public void writeMessage( String message ) { } public void writeMessage( byte[] b, int off, int len ) { reportsDirectory.write( b, off, len ); } public void reset() { } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/StackTraceWriter.java0000644000175000017500000000270610567521075031431 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ /** * Ability to write a stack trace, filtered to omit locations inside Surefire and Maven. * * @author Brett Porter */ public interface StackTraceWriter { /** * Write the throwable to a string, without trimming. * * @return the trace */ String writeTraceToString(); /** * Write the throwable to a string, trimming extra locations. * * @return the trace */ String writeTrimmedTraceToString(); /** * Retrieve the throwable for this writer. * * @return the throwable */ Throwable getThrowable(); } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java0000644000175000017500000002470611604702065030370 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.Iterator; import java.util.List; import java.util.Properties; import java.util.StringTokenizer; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.xml.Xpp3Dom; import org.codehaus.plexus.util.xml.Xpp3DomWriter; /** * XML format reporter. * * @author Johnny R. Ruiz III * @version $Id: XMLReporter.java 1143207 2011-07-05 21:37:57Z pgier $ */ public class XMLReporter extends AbstractReporter { private static final String LS = System.getProperty( "line.separator" ); private final File reportsDirectory; private final boolean deleteOnStarting; private final String reportNameSuffix; private final List results = Collections.synchronizedList( new ArrayList() ); public XMLReporter( boolean trimStackTrace, File reportsDirectory ) { this( trimStackTrace, reportsDirectory, null ); } public XMLReporter( boolean trimStackTrace, File reportsDirectory, String reportNameSuffix ) { super( trimStackTrace ); this.reportsDirectory = reportsDirectory; this.deleteOnStarting = false; this.reportNameSuffix = reportNameSuffix; } public void writeMessage( String message ) { } public void writeMessage( byte[] b, int off, int len ) { } public void testSetStarting( ReportEntry report ) throws ReporterException { super.testSetStarting( report ); if ( deleteOnStarting ) { final File reportFile = getReportFile( report ); deleteIfExisting( reportFile ); } } public void testSetCompleted( ReportEntry report ) throws ReporterException { super.testSetCompleted( report ); long runTime = System.currentTimeMillis() - testSetStartTime; Xpp3Dom testSuite = createTestSuiteElement( report, runTime ); showProperties( testSuite ); testSuite.setAttribute( "tests", String.valueOf( this.getNumTests() ) ); testSuite.setAttribute( "errors", String.valueOf( this.getNumErrors() ) ); testSuite.setAttribute( "skipped", String.valueOf( this.getNumSkipped() ) ); testSuite.setAttribute( "failures", String.valueOf( this.getNumFailures() ) ); for ( Iterator i = results.iterator(); i.hasNext(); ) { Xpp3Dom testcase = (Xpp3Dom) i.next(); testSuite.addChild( testcase ); } File reportFile = getReportFile( report ); File reportDir = reportFile.getParentFile(); //noinspection ResultOfMethodCallIgnored reportDir.mkdirs(); PrintWriter writer = null; try { writer = new PrintWriter( new BufferedWriter( new OutputStreamWriter( new FileOutputStream( reportFile ), "UTF-8" ) ) ); writer.write( "" + LS ); Xpp3DomWriter.write( new PrettyPrintXMLWriter( writer ), testSuite ); } catch ( UnsupportedEncodingException e ) { throw new ReporterException( "Unable to use UTF-8 encoding", e ); } catch ( FileNotFoundException e ) { throw new ReporterException( "Unable to create file: " + e.getMessage(), e ); } finally { IOUtil.close( writer ); } } private File getReportFile( ReportEntry report ) { File reportFile; if ( reportNameSuffix != null && reportNameSuffix.length() > 0) { reportFile = new File( reportsDirectory, "TEST-" + report.getName() + "-" + reportNameSuffix + ".xml" ); } else { reportFile = new File( reportsDirectory, "TEST-" + report.getName() + ".xml" ); } return reportFile; } private String getReportName( ReportEntry report ) { String reportName; if ( report.getName().indexOf( "(" ) > 0 ) { reportName = report.getName().substring( 0, report.getName().indexOf( "(" ) ); } else { reportName = report.getName(); } return reportName; } public void testSucceeded( ReportEntry report ) { super.testSucceeded( report ); long runTime = getActualRunTime( report ); Xpp3Dom testCase = createTestElement( report, runTime ); results.add( testCase ); } private Xpp3Dom createTestElement( ReportEntry report, long runTime ) { Xpp3Dom testCase = new Xpp3Dom( "testcase" ); testCase.setAttribute( "name", getReportName( report ) ); if ( report.getGroup() != null ) { testCase.setAttribute( "group", report.getGroup() ); } if ( report.getSourceName() != null ) { if ( reportNameSuffix != null && reportNameSuffix.length() > 0) { testCase.setAttribute( "classname", report.getSourceName() + "(" + reportNameSuffix + ")" ); } else { testCase.setAttribute( "classname", report.getSourceName() ); } } testCase.setAttribute( "time", elapsedTimeAsString( runTime ) ); return testCase; } private Xpp3Dom createTestSuiteElement( ReportEntry report, long runTime ) { Xpp3Dom testCase = new Xpp3Dom( "testsuite" ); if ( reportNameSuffix != null && reportNameSuffix.length() > 0) { testCase.setAttribute( "name", getReportName( report ) + "(" + reportNameSuffix + ")" ); } else { testCase.setAttribute( "name", getReportName( report ) ); } if ( report.getGroup() != null ) { testCase.setAttribute( "group", report.getGroup() ); } testCase.setAttribute( "time", elapsedTimeAsString( runTime ) ); return testCase; } public void testError( ReportEntry report, String stdOut, String stdErr ) { super.testError( report, stdOut, stdErr ); writeTestProblems( report, stdOut, stdErr, "error" ); } public void testFailed( ReportEntry report, String stdOut, String stdErr ) { super.testFailed( report, stdOut, stdErr ); writeTestProblems( report, stdOut, stdErr, "failure" ); } public void testSkipped( ReportEntry report ) { super.testSkipped( report ); writeTestProblems( report, null, null, "skipped" ); } private void writeTestProblems( ReportEntry report, String stdOut, String stdErr, String name ) { long runTime = getActualRunTime( report ); Xpp3Dom testCase = createTestElement( report, runTime ); Xpp3Dom element = createElement( testCase, name ); String stackTrace = getStackTrace( report ); Throwable t = null; if ( report.getStackTraceWriter() != null ) { //noinspection ThrowableResultOfMethodCallIgnored t = report.getStackTraceWriter().getThrowable(); } if ( t != null ) { String message = t.getMessage(); if ( message != null ) { element.setAttribute( "message", message ); element.setAttribute( "type", ( stackTrace.indexOf( ":" ) > -1 ? stackTrace.substring( 0, stackTrace.indexOf( ":" ) ) : stackTrace ) ); } else { element.setAttribute( "type", new StringTokenizer( stackTrace ).nextToken() ); } } if ( stackTrace != null ) { element.setValue( stackTrace ); } addOutputStreamElement( stdOut, "system-out", testCase ); addOutputStreamElement( stdErr, "system-err", testCase ); results.add( testCase ); } private void addOutputStreamElement( String stdOut, String name, Xpp3Dom testCase ) { if ( stdOut != null && stdOut.trim().length() > 0 ) { createElement( testCase, name ).setValue( stdOut ); } } private Xpp3Dom createElement( Xpp3Dom element, String name ) { Xpp3Dom component = new Xpp3Dom( name ); element.addChild( component ); return component; } /** * Adds system properties to the XML report. * * @param testSuite The test suite to report to */ private void showProperties( Xpp3Dom testSuite ) { Xpp3Dom properties = createElement( testSuite, "properties" ); Properties systemProperties = System.getProperties(); if ( systemProperties != null ) { Enumeration propertyKeys = systemProperties.propertyNames(); while ( propertyKeys.hasMoreElements() ) { String key = (String) propertyKeys.nextElement(); String value = systemProperties.getProperty( key ); if ( value == null ) { value = "null"; } Xpp3Dom property = createElement( properties, "property" ); property.setAttribute( "name", key ); property.setAttribute( "value", value ); } } } public Iterator getResults() { return results.iterator(); } public void reset() { results.clear(); super.reset(); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/MulticastingReporter.java0000644000175000017500000000556511557340256032404 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.util.List; /** * A reporter that broadcasts to other reporters * * @author Kristian Rosenvold */ public class MulticastingReporter implements Reporter { private final Reporter[] target; private final int size; public MulticastingReporter( List target ) { size = target.size(); this.target = (Reporter[]) target.toArray( new Reporter[target.size()] ); } public void testSetStarting( ReportEntry report ) { for (int i = 0; i < size; i++){ target[i].testSetStarting( report ); } } public void testSetCompleted( ReportEntry report ) { for (int i = 0; i < size; i++){ target[i].testSetCompleted( report ); } } public void testStarting( ReportEntry report ) { for (int i = 0; i < size; i++){ target[i].testStarting( report ); } } public void testSucceeded( ReportEntry report ) { for (int i = 0; i < size; i++){ target[i].testSucceeded( report ); } } public void testError( ReportEntry report, String stdOut, String stdErr ) { for (int i = 0; i < size; i++){ target[i].testError( report, stdOut, stdErr ); } } public void testFailed( ReportEntry report, String stdOut, String stdErr ) { for (int i = 0; i < size; i++){ target[i].testFailed( report, stdOut, stdErr ); } } public void testSkipped( ReportEntry report ) { for (int i = 0; i < size; i++){ target[i].testSkipped( report ); } } public void writeMessage( String message ) { for (int i = 0; i < size; i++){ target[i].writeMessage( message ); } } public void writeMessage( byte[] b, int off, int len ) { for (int i = 0; i < size; i++){ target[i].writeMessage( b, off, len ); } } public void reset() { for (int i = 0; i < size; i++){ target[i].reset(); } } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractReporter.java0000644000175000017500000001217311557272216031475 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.File; import java.text.NumberFormat; import java.util.Locale; /** * @author Jason van Zyl * @version $Id: AbstractReporter.java 1098345 2011-05-01 14:56:14Z krosenvold $ */ public abstract class AbstractReporter implements Reporter { int completedCount; int errors; int failures; private long startTime; private long endTime; private final NumberFormat numberFormat = NumberFormat.getInstance( Locale.ENGLISH ); static final String NL = System.getProperty( "line.separator" ); private static final int MS_PER_SEC = 1000; long testSetStartTime; int skipped; private final boolean trimStackTrace; // ---------------------------------------------------------------------- // Report interface // ---------------------------------------------------------------------- protected AbstractReporter( boolean trimStackTrace ) { this.trimStackTrace = trimStackTrace; } public void writeMessage( byte[] b, int off, int len ) { // Keep quiet about console output // Reporting is itching for a cleanup } public void testSetStarting( ReportEntry report ) throws ReporterException { testSetStartTime = System.currentTimeMillis(); } public void testSetCompleted( ReportEntry report ) throws ReporterException { } // ---------------------------------------------------------------------- // Test // ---------------------------------------------------------------------- public void testStarting( ReportEntry report ) { startTime = System.currentTimeMillis(); } public void testSucceeded( ReportEntry report ) { endTest(); } public void testSkipped( ReportEntry report ) { ++skipped; endTest(); } public void testError( ReportEntry report, String stdOut, String stdErr ) { ++errors; endTest(); } public void testFailed( ReportEntry report, String stdOut, String stdErr ) { ++failures; endTest(); } private void endTest() { ++completedCount; endTime = System.currentTimeMillis(); // SUREFIRE-398 skipped tests call endTest without calling testStarting // if startTime = 0, set it to endTime, so the diff will be 0 if ( startTime == 0 ) { startTime = endTime; } } // ---------------------------------------------------------------------- // Counters // ---------------------------------------------------------------------- int getNumErrors() { return errors; } int getNumSkipped() { return skipped; } int getNumFailures() { return failures; } int getNumTests() { return completedCount; } // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- public void reset() { errors = 0; skipped = 0; failures = 0; completedCount = 0; } // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- String elapsedTimeAsString( long runTime ) { return numberFormat.format( (double) runTime / MS_PER_SEC ); } /** * Returns stacktrace as String. * * @param report ReportEntry object. * @return stacktrace as string. */ String getStackTrace( ReportEntry report ) { StackTraceWriter writer = report.getStackTraceWriter(); if ( writer == null ) { return null; } return trimStackTrace ? writer.writeTrimmedTraceToString() : writer.writeTraceToString(); } long getActualRunTime( ReportEntry reportEntry ) { final Integer clientSpecifiedElapsed = reportEntry.getElapsed(); return clientSpecifiedElapsed != null ? clientSpecifiedElapsed.intValue() : endTime - startTime; } void deleteIfExisting( File reportFile ) { if ( reportFile.exists() ) { //noinspection ResultOfMethodCallIgnored reportFile.delete(); } } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/RunListener.java0000644000175000017500000000540311556104214030446 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ /** * Used by providers to report results. * Using this interface integrates the providers together into a common reporting infrastructure. *

* An instance of a reporter is not guaranteed to be thread-safe and concurrent test frameworks * must request an instance of a reporter per-thread from the ReporterFactory. */ public interface RunListener { /** * Indicates the start of a given test-set * * @param report the report entry describing the testset * @throws ReporterException When reporting fails */ void testSetStarting( ReportEntry report ); /** * Indicates end of a given test-set * * @param report the report entry describing the testset * @throws ReporterException When reporting fails */ void testSetCompleted( ReportEntry report ); /** * Event fired when a test is about to start * * @param report The report entry to log for */ void testStarting( ReportEntry report ); /** * Event fired when a test ended successfully * * @param report The report entry to log for */ void testSucceeded( ReportEntry report ); /** * Event fired when a test assumption failure was encountered. * An assumption failure indicates that the test is not relevant * * @param report The report entry to log for */ void testAssumptionFailure( ReportEntry report ); /** * Event fired when a test ended with an error (non anticipated problem) * * @param report The report entry to log for */ void testError( ReportEntry report ); /** * Event fired when a test ended with a failure (anticipated problem) * * @param report The report entry to log for */ void testFailed( ReportEntry report ); /** * Event fired when a test is skipped * * @param report The report entry to log for */ void testSkipped( ReportEntry report ); } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/BriefConsoleReporter.java0000644000175000017500000000232511557602632032301 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ /** * Brief format console reporter. * * @author Johnny R. Ruiz III * @version $Id: BriefConsoleReporter.java 1098758 2011-05-02 19:27:22Z krosenvold $ */ public class BriefConsoleReporter extends AbstractConsoleReporter { public BriefConsoleReporter( boolean trimStackTrace ) { super( trimStackTrace, BRIEF ); } } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ThreadLocalRunListener.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ThreadLocalRunListener.jav0000644000175000017500000000457111556104214032415 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ /** * Ensures that the current thread has a RunListener instance attached, and forwards calls to it. * @author Kristian Rosenvold */ public class ThreadLocalRunListener implements RunListener { private final InheritableThreadLocal target = new InheritableThreadLocal(); private final ReporterFactory reporterFactory; public RunListener getTarget() { Object o = target.get(); if (o == null){ o = reporterFactory.createReporter(); target.set(o); } return (RunListener) o; } public ThreadLocalRunListener(ReporterFactory reporterFactory) { this.reporterFactory = reporterFactory; } public void testSetStarting( ReportEntry report ) { getTarget().testSetStarting( report ); } public void testSetCompleted( ReportEntry report ) { getTarget().testSetCompleted( report ); } public void testStarting( ReportEntry report ) { getTarget().testStarting( report ); } public void testSucceeded( ReportEntry report ) { getTarget().testSucceeded( report ); } public void testAssumptionFailure( ReportEntry report ) { getTarget().testAssumptionFailure( report ); } public void testError( ReportEntry report ) { getTarget().testError( report ); } public void testFailed( ReportEntry report ) { getTarget().testFailed( report ); } public void testSkipped( ReportEntry report ) { getTarget().testSkipped( report ); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractFileReporter.java0000644000175000017500000000707311604702065032271 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; /** * Base class for file reporters. * * @author Brett Porter */ public abstract class AbstractFileReporter extends AbstractTextReporter { private final File reportsDirectory; private final boolean deleteOnStarting; private final String reportNameSuffix; AbstractFileReporter( boolean trimStackTrace, String format, File reportsDirectory ) { this( trimStackTrace, format, reportsDirectory, null ); } AbstractFileReporter( boolean trimStackTrace, String format, File reportsDirectory, String reportNameSuffix ) { super( trimStackTrace, format ); this.reportsDirectory = reportsDirectory; this.deleteOnStarting = false; this.reportNameSuffix = reportNameSuffix; } public void testSetStarting( ReportEntry report ) throws ReporterException { super.testSetStarting( report ); File reportFile = getReportFile( reportsDirectory, report.getName(), reportNameSuffix, ".txt" ); File reportDir = reportFile.getParentFile(); //noinspection ResultOfMethodCallIgnored reportDir.mkdirs(); if ( deleteOnStarting && reportFile.exists() ) { //noinspection ResultOfMethodCallIgnored reportFile.delete(); } try { PrintWriter writer = new PrintWriter( new FileWriter( reportFile ) ); writer.println( "-------------------------------------------------------------------------------" ); writer.println( "Test set: " + report.getName() ); writer.println( "-------------------------------------------------------------------------------" ); setWriter( writer ); } catch ( IOException e ) { throw new ReporterException( "Unable to create file for report: " + e.getMessage(), e ); } } public static File getReportFile( File reportsDirectory, String reportEntryName, String reportNameSuffix, String fileExtension ) { File reportFile; if ( reportNameSuffix != null && reportNameSuffix.length() > 0) { reportFile = new File( reportsDirectory, reportEntryName + "-" + reportNameSuffix + fileExtension ); } else { reportFile = new File( reportsDirectory, reportEntryName + fileExtension ); } return reportFile; } public void testSetCompleted( ReportEntry report ) throws ReporterException { super.testSetCompleted( report ); writer.flush(); writer.close(); writer = null; } } ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputReceiverForCurrentThread.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputReceiverForCu0000644000175000017500000000260611543316163032531 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ /** * @author Kristian Rosenvold */ public final class ConsoleOutputReceiverForCurrentThread { private static final ThreadLocal current = new InheritableThreadLocal(); private ConsoleOutputReceiverForCurrentThread() { } public static ConsoleOutputReceiver get() { return (ConsoleOutputReceiver) current.get(); } public static void set( ConsoleOutputReceiver consoleOutputReceiver ) { current.set( consoleOutputReceiver ); } public static void remove() { current.remove(); } } ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/DefaultDirectConsoleReporter.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/DefaultDirectConsoleReport0000644000175000017500000000071411561564522032522 0ustar tonytonypackage org.apache.maven.surefire.report; import java.io.PrintStream; /** * @author Kristian Rosenvold */ public class DefaultDirectConsoleReporter implements ConsoleLogger { private final PrintStream systemOut; public DefaultDirectConsoleReporter( PrintStream systemOut ) { this.systemOut = systemOut; } public void info( String message ) { systemOut.println(message); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/TestSetRunListener.java0000644000175000017500000001501111561564522031766 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.apache.maven.surefire.util.internal.ByteBuffer; /** * Reports data for a single test set. *

*/ public class TestSetRunListener implements RunListener, Reporter, ConsoleOutputReceiver, ConsoleLogger // todo: Does this have to be a reporter ? { private final TestSetStatistics testSetStatistics; private final RunStatistics globalStatistics; private final MulticastingReporter multicastingReporter; private final List testStdOut = Collections.synchronizedList( new ArrayList() ); private final List testStdErr = Collections.synchronizedList( new ArrayList() ); public TestSetRunListener( AbstractConsoleReporter consoleReporter, AbstractFileReporter fileReporter, XMLReporter xmlReporter, Reporter reporter, RunStatistics globalStats ) { ArrayList reportes = new ArrayList(); if ( consoleReporter != null ) { reportes.add( consoleReporter ); } if ( fileReporter != null ) { reportes.add( fileReporter ); } if ( xmlReporter != null ) { reportes.add( xmlReporter ); } if ( reporter != null ) { reportes.add( reporter ); } multicastingReporter = new MulticastingReporter( reportes ); this.testSetStatistics = new TestSetStatistics(); this.globalStatistics = globalStats; } public void info( String message ) { multicastingReporter.writeMessage( message ); } public void writeMessage( String message ) { info( message ); } public void writeMessage( byte[] b, int off, int len ) { multicastingReporter.writeMessage( b, off, len ); } public void writeTestOutput( byte[] buf, int off, int len, boolean stdout ) { ByteBuffer byteBuffer = new ByteBuffer( buf, off, len ); if ( stdout ) { testStdOut.add( byteBuffer ); } else { testStdErr.add( byteBuffer ); } multicastingReporter.writeMessage( buf, off, len ); } public void testSetStarting( ReportEntry report ) { multicastingReporter.testSetStarting( report ); } public void clearCapture() { testStdErr.clear(); testStdOut.clear(); } public void testSetCompleted( ReportEntry report ) { multicastingReporter.testSetCompleted( report ); multicastingReporter.reset(); globalStatistics.add( testSetStatistics ); testSetStatistics.reset(); } // ---------------------------------------------------------------------- // Test // ---------------------------------------------------------------------- public void testStarting( ReportEntry report ) { multicastingReporter.testStarting( report ); } public void testSucceeded( ReportEntry report ) { testSetStatistics.incrementCompletedCount(); multicastingReporter.testSucceeded( report ); clearCapture(); } public void testError( ReportEntry reportEntry ) { multicastingReporter.testError( reportEntry, getAsString( testStdOut ), getAsString( testStdErr ) ); testSetStatistics.incrementErrorsCount(); testSetStatistics.incrementCompletedCount(); globalStatistics.addErrorSource( reportEntry.getName(), reportEntry.getStackTraceWriter() ); clearCapture(); } public void testError( ReportEntry reportEntry, String stdOutLog, String stdErrLog ) { multicastingReporter.testError( reportEntry, stdOutLog, stdErrLog ); testSetStatistics.incrementErrorsCount(); testSetStatistics.incrementCompletedCount(); globalStatistics.addErrorSource( reportEntry.getName(), reportEntry.getStackTraceWriter() ); clearCapture(); } public void testFailed( ReportEntry reportEntry ) { multicastingReporter.testFailed( reportEntry, getAsString( testStdOut ), getAsString( testStdErr ) ); testSetStatistics.incrementFailureCount(); testSetStatistics.incrementCompletedCount(); globalStatistics.addFailureSource( reportEntry.getName(), reportEntry.getStackTraceWriter() ); clearCapture(); } public void testFailed( ReportEntry reportEntry, String stdOutLog, String stdErrLog ) { multicastingReporter.testFailed( reportEntry, stdOutLog, stdErrLog ); testSetStatistics.incrementFailureCount(); testSetStatistics.incrementCompletedCount(); globalStatistics.addFailureSource( reportEntry.getName(), reportEntry.getStackTraceWriter() ); clearCapture(); } // ---------------------------------------------------------------------- // Counters // ---------------------------------------------------------------------- public void testSkipped( ReportEntry report ) { clearCapture(); testSetStatistics.incrementSkippedCount(); testSetStatistics.incrementCompletedCount(); multicastingReporter.testSkipped( report ); } public void testAssumptionFailure( ReportEntry report ) { testSkipped( report ); } public void reset() { multicastingReporter.reset(); } public String getAsString( List byteBufferList ) { StringBuffer stringBuffer = new StringBuffer(); for ( Iterator iter = byteBufferList.iterator(); iter.hasNext(); ) { ByteBuffer byteBuffer = (ByteBuffer) iter.next(); stringBuffer.append( byteBuffer.toString() ); } return stringBuffer.toString(); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/FileReporter.java0000644000175000017500000000264611604702065030606 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.File; /** * Text file reporter. * * @author Johnny R. Ruiz III * @version $Id: FileReporter.java 1143207 2011-07-05 21:37:57Z pgier $ */ public class FileReporter extends AbstractFileReporter { public FileReporter( boolean trimStackTrace, File reportsDirectory ) { super( trimStackTrace, PLAIN, reportsDirectory ); } public FileReporter( boolean trimStackTrace, File reportsDirectory, String reportNamePrefix ) { super( trimStackTrace, PLAIN, reportsDirectory, reportNamePrefix); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/AsynchRunListener.java0000644000175000017500000001525011561564522031625 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.util.concurrent.LinkedBlockingQueue; import org.apache.maven.surefire.util.internal.ByteBuffer; /** * Transfers further processing of the request to a different thread, * returning immediately to calling code. * Deals with system.out/err from single-threaded processes. *

*/ public class AsynchRunListener implements RunListener, ConsoleOutputReceiver, ConsoleLogger { private final LinkedBlockingQueue blockingQueue = new LinkedBlockingQueue(); private final Processor processor; private final RunListener target; private final ConsoleOutputReceiver consoleOutputReceiver; private final Thread asynchRunListener; static class Processor implements Runnable { private final LinkedBlockingQueue blockingQueue; private volatile InterruptedException exception; Processor( LinkedBlockingQueue blockingQueue ) { this.blockingQueue = blockingQueue; } public void run() { try { Runnable take; take = (Runnable) blockingQueue.take(); while ( take != poison ) { take.run(); take = (Runnable) blockingQueue.take(); } } catch ( InterruptedException e ) { this.exception = e; } } public InterruptedException getException() { return exception; } } public AsynchRunListener( RunListener target, String role ) { this.processor = new Processor( blockingQueue ); this.target = target; consoleOutputReceiver = (ConsoleOutputReceiver) target; asynchRunListener = new Thread( processor, "AsynchRunListener" + role ); asynchRunListener.start(); } public void testSetStarting( final ReportEntry report ) { blockingQueue.add( new Runnable() { public void run() { target.testSetStarting( report ); } } ); } public void testSetCompleted( final ReportEntry report ) { blockingQueue.add( new Runnable() { public void run() { target.testSetCompleted( report ); } } ); } public void testStarting( final ReportEntry report ) { blockingQueue.add( new Runnable() { public void run() { target.testStarting( report ); } } ); } public void testSucceeded( final ReportEntry report ) { blockingQueue.add( new Runnable() { public void run() { target.testSucceeded( report ); } } ); } public void testAssumptionFailure( final ReportEntry report ) { blockingQueue.add( new Runnable() { public void run() { target.testAssumptionFailure( report ); } } ); } public void testError( final ReportEntry report ) { blockingQueue.add( new Runnable() { public void run() { target.testError( report ); } } ); } public void testFailed( final ReportEntry report ) { blockingQueue.add( new Runnable() { public void run() { target.testFailed( report ); } } ); } public void testSkipped( final ReportEntry report ) { blockingQueue.add( new Runnable() { public void run() { target.testSkipped( report ); } } ); } static class JoinableTestOutput implements Runnable { final byte[] buf; final int off; final int len; final boolean stdout; private final ConsoleOutputReceiver consoleOutputReceiver; JoinableTestOutput( final byte[] buf, final int off, final int len, final boolean stdout, ConsoleOutputReceiver consoleOutputReceiver ) { this.buf = ByteBuffer.copy( buf, off, len ); this.off = 0; this.len = len; this.stdout = stdout; this.consoleOutputReceiver = consoleOutputReceiver; } public void run() { consoleOutputReceiver.writeTestOutput( buf, off, len, stdout ); } public JoinableTestOutput append( JoinableTestOutput other ) { byte[] combined = ByteBuffer.join( buf, this.off, this.len, other.buf, other.off, other.len ); return new JoinableTestOutput( combined, 0, combined.length, stdout, consoleOutputReceiver ); } } public void writeTestOutput( final byte[] buf, final int off, final int len, final boolean stdout ) { blockingQueue.add( new JoinableTestOutput( buf, off, len, stdout, consoleOutputReceiver ) ); } public void info( final String message ) { blockingQueue.add( new Runnable() { public void run() { ( (ConsoleLogger) consoleOutputReceiver ).info( message ); } } ); } private static final Runnable poison = new Runnable() { public void run() { } }; public void close() throws ReporterException { try { blockingQueue.add( poison ); asynchRunListener.join(); final InterruptedException exception = processor.getException(); if ( exception != null ) { throw exception; } } catch ( InterruptedException e ) { throw new ReporterException( "When waiting", e ); } } } ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/TestConsoleOutputRunListener.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/TestConsoleOutputRunListen0000644000175000017500000001632111557340256032615 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.util.Collections; import java.util.HashMap; import java.util.Map; /** * Attaches the currently executing test method to the thread, allowing * test output to be directed to the proper test set. * * @author Kristian Rosenvold */ public abstract class TestConsoleOutputRunListener implements RunListener, ConsoleOutputReceiver { private final ReporterFactory reporterFactory; protected TestConsoleOutputRunListener( ReporterFactory reporterFactory ) { this.reporterFactory = reporterFactory; } public static TestConsoleOutputRunListener createInstance( ReporterFactory reporterFactory, boolean oneThreadPerClass ) { return oneThreadPerClass ? (TestConsoleOutputRunListener) new OneThreadPerClassConsoleOutputRunListener( reporterFactory ) : new UnknownThreadPerClassConsoleOutputRunListener( reporterFactory ); } protected abstract RunListener getTestSetRunListener( ReportEntry reportEntry ); protected abstract void clearTestSetRunListener(); protected abstract RunListener getTestMethodRunListener( ReportEntry report ); protected abstract void clearTestMethodRunListener(); protected abstract ConsoleOutputReceiver getConsoleOutputReceiver(); protected ReporterFactory getReporterFactory() { return reporterFactory; } public void writeTestOutput( byte[] buf, int off, int len, boolean stdout ) { getConsoleOutputReceiver().writeTestOutput( buf, off, len, stdout ); } public void testSetStarting( ReportEntry report ) throws ReporterException { getTestSetRunListener( report ).testSetStarting( report ); } public void testSetCompleted( ReportEntry report ) throws ReporterException { getTestSetRunListener( report ).testSetCompleted( report ); clearTestSetRunListener(); } public void testStarting( ReportEntry report ) { getTestMethodRunListener( report ).testStarting( report ); } public void testSucceeded( ReportEntry report ) { getTestMethodRunListener( report ).testSucceeded( report ); clearTestMethodRunListener(); } public void testAssumptionFailure( ReportEntry report ) { getTestMethodRunListener( report ).testAssumptionFailure( report ); clearTestMethodRunListener(); } public void testError( ReportEntry report ) { getTestMethodRunListener( report ).testError( report ); clearTestMethodRunListener(); } public void testFailed( ReportEntry report ) { getTestMethodRunListener( report ).testFailed( report ); clearTestMethodRunListener(); } public void testSkipped( ReportEntry report ) { getTestMethodRunListener( report ).testSkipped( report ); clearTestMethodRunListener(); } public static class OneThreadPerClassConsoleOutputRunListener extends TestConsoleOutputRunListener { private final ThreadLocal currentTestMethodListener = new InheritableThreadLocal(); public OneThreadPerClassConsoleOutputRunListener( ReporterFactory reporterFactory ) { super( reporterFactory ); } protected RunListener getTestSetRunListener( ReportEntry reportEntry ) { return getTestMethodRunListener( reportEntry ); } protected void clearTestSetRunListener() { currentTestMethodListener.remove(); } protected void clearTestMethodRunListener() { // Dont clear, we do this in testset. } protected RunListener getTestMethodRunListener( ReportEntry report ) { RunListener runListener = (RunListener) currentTestMethodListener.get(); if ( runListener == null ) { runListener = getReporterFactory().createReporter(); currentTestMethodListener.set( runListener ); } return runListener; } protected ConsoleOutputReceiver getConsoleOutputReceiver() { return (ConsoleOutputReceiver) currentTestMethodListener.get(); } } public static class UnknownThreadPerClassConsoleOutputRunListener extends TestConsoleOutputRunListener { private final ThreadLocal currentTestMethodListener = new InheritableThreadLocal(); private final ThreadLocal currentTestSetListener = new InheritableThreadLocal(); private final Map testSetToRunListener = Collections.synchronizedMap( new HashMap() ); public UnknownThreadPerClassConsoleOutputRunListener( ReporterFactory reporterFactory ) { super( reporterFactory ); } protected RunListener getTestSetRunListener( ReportEntry reportEntry ) { RunListener result = (RunListener) testSetToRunListener.get( reportEntry.getSourceName() ); if ( result == null ) { result = getReporterFactory().createReporter(); testSetToRunListener.put( reportEntry.getSourceName(), result ); } currentTestSetListener.set( result ); return result; } protected void clearTestSetRunListener() { currentTestSetListener.remove(); } protected RunListener getTestMethodRunListener( ReportEntry report ) { RunListener runListener; runListener = (RunListener) testSetToRunListener.get( report.getSourceName() ); if ( runListener == null ) { runListener = getReporterFactory().createReporter(); testSetToRunListener.put( report.getSourceName(), runListener ); } currentTestMethodListener.set( runListener ); return runListener; } protected void clearTestMethodRunListener() { currentTestMethodListener.remove(); } protected ConsoleOutputReceiver getConsoleOutputReceiver() { ConsoleOutputReceiver consoleOutputReceiver = (ConsoleOutputReceiver) currentTestMethodListener.get(); if ( consoleOutputReceiver == null ) { consoleOutputReceiver = (ConsoleOutputReceiver) currentTestSetListener.get(); } return consoleOutputReceiver; } } } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/DefaultConsoleReporter.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/DefaultConsoleReporter.jav0000644000175000017500000000236511561564522032501 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.PrintStream; /** * @author Kristian Rosenvold */ public class DefaultConsoleReporter implements ConsoleLogger { private final PrintStream systemOut; public DefaultConsoleReporter( PrintStream systemOut ) { this.systemOut = systemOut; } public void info( String message ) { systemOut.println( message ); } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractConsoleReporter.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractConsoleReporter.ja0000644000175000017500000000541411557340256032471 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.BufferedOutputStream; import java.io.OutputStreamWriter; import java.io.PrintStream; import java.io.PrintWriter; /** * Base class for console reporters. * * @author Brett Porter */ public abstract class AbstractConsoleReporter extends AbstractTextReporter { private static final String TEST_SET_STARTING_PREFIX = "Running "; private static final String TEST_SET_STARTING_GROUP_PREFIX = " (of "; private static final String TEST_SET_STARTING_GROUP_SUFIX = ")"; private static final int BUFFER_SIZE = 4096; private static final PrintStream ORIGINAL_SYSTEM_OUT = System.out; AbstractConsoleReporter( boolean trimStackTrace, String format ) { super( getPrintWriter(), trimStackTrace, format); } private static PrintWriter getPrintWriter() { return new PrintWriter( new OutputStreamWriter( new BufferedOutputStream( ORIGINAL_SYSTEM_OUT, BUFFER_SIZE ) ) ); } public void testSetStarting( ReportEntry report ) throws ReporterException { super.testSetStarting( report ); writeMessage( getTestSetStartingMessage( report ) ); } /** * Get the test set starting message for a report. * eg. "Running org.foo.BarTest ( of group )" * * @param report report whose test set is starting * @return the message */ static String getTestSetStartingMessage( ReportEntry report ) { StringBuffer message = new StringBuffer(); message.append( TEST_SET_STARTING_PREFIX ); message.append( report.getName() ); if ( report.getGroup() != null && !report.getName().equals( report.getGroup() ) ) { message.append( TEST_SET_STARTING_GROUP_PREFIX ); message.append( report.getGroup() ); message.append( TEST_SET_STARTING_GROUP_SUFIX ); } message.append( "\n" ); return message.toString(); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/PrettyPrintXMLWriter.java0000644000175000017500000001317011556104214032256 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.PrintWriter; import java.util.LinkedList; import org.codehaus.plexus.util.xml.XMLWriter; public class PrettyPrintXMLWriter implements XMLWriter { private final PrintWriter writer; private final LinkedList elementStack = new LinkedList(); private boolean tagInProgress; private int depth; private final String lineIndenter; private final String encoding; private final String docType; private boolean readyForNewLine; private boolean tagIsEmpty; public PrettyPrintXMLWriter( PrintWriter writer ) { this( writer, null, null ); } private PrettyPrintXMLWriter( PrintWriter writer, String lineIndenter, String encoding, String doctype ) { this.writer = writer; this.lineIndenter = lineIndenter; this.encoding = encoding; this.docType = doctype; if ( docType != null || encoding != null ) { writeDocumentHeaders(); } } private PrettyPrintXMLWriter( PrintWriter writer, String encoding, String doctype ) { this( writer, " ", encoding, doctype ); } public void startElement( String name ) { tagIsEmpty = false; finishTag(); write( "<" ); write( name ); elementStack.addLast( name ); tagInProgress = true; depth++; readyForNewLine = true; tagIsEmpty = true; } public void writeText( String text ) { writeText( text, true ); } public void writeMarkup( String text ) { writeText( text, false ); } private void writeText( String text, boolean escapeXml ) { readyForNewLine = false; tagIsEmpty = false; finishTag(); if ( escapeXml ) { text = escapeXml( text ); } write( text ); } private static String escapeXml( String text ) { StringBuffer sb = new StringBuffer( text.length() * 2 ); for ( int i = 0; i < text.length(); i++ ) { char c = text.charAt( i ); if ( c < 32 ) { if ( c == '\n' || c == '\r' || c == '\t' ) { sb.append( c ); } else { // uh-oh! This character is illegal in XML 1.0! // http://www.w3.org/TR/1998/REC-xml-19980210#charsets // we're going to deliberately doubly-XML escape it... // there's nothing better we can do! :-( // SUREFIRE-456 sb.append( "&#" ).append( (int) c ).append( ';' ); } } else if ( c == '<' ) { sb.append( "<" ); } else if ( c == '>' ) { sb.append( ">" ); } else if ( c == '&' ) { sb.append( "&" ); } else if ( c == '"' ) { sb.append( """ ); } else if ( c == '\'' ) { sb.append( "'" ); } else { sb.append( c ); } } return sb.toString(); } public void addAttribute( String key, String value ) { write( " " ); write( key ); write( "=\"" ); write( escapeXml( value ) ); write( "\"" ); } public void endElement() { depth--; if ( tagIsEmpty ) { write( "/" ); readyForNewLine = false; finishTag(); elementStack.removeLast(); } else { finishTag(); write( "" ); } readyForNewLine = true; } private void write( String str ) { writer.write( str ); } private void finishTag() { if ( tagInProgress ) { write( ">" ); } tagInProgress = false; if ( readyForNewLine ) { endOfLine(); } readyForNewLine = false; tagIsEmpty = false; } protected void endOfLine() { write( "\n" ); for ( int i = 0; i < depth; i++ ) { write( lineIndenter ); } } private void writeDocumentHeaders() { write( "" ); endOfLine(); if ( docType != null ) { write( "" ); endOfLine(); } } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterException.java0000644000175000017500000000230411556104214031652 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import org.apache.maven.surefire.util.NestedRuntimeException; /** * Exception occurring during report generation. * * @author Brett Porter */ public class ReporterException extends NestedRuntimeException { public ReporterException( String message, Exception nested ) { super( message, nested ); } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/DetailedConsoleReporter.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/DetailedConsoleReporter.ja0000644000175000017500000000233111557602632032433 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ /** * Detailed console reporter. * * @author Johnny R. Ruiz III * @version $Id: DetailedConsoleReporter.java 1098758 2011-05-02 19:27:22Z krosenvold $ */ public class DetailedConsoleReporter extends AbstractConsoleReporter { public DetailedConsoleReporter( boolean trimStackTrace ) { super( trimStackTrace, PLAIN ); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/RunStatistics.java0000644000175000017500000000644011557272216031026 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import org.apache.maven.surefire.util.internal.StringUtils; /** * @author Kristian Rosenvold */ public class RunStatistics extends TestSetStatistics { /** * Holds the source(s) that causes the error(s). */ private final Sources errorSources = new Sources(); /** * Holds the source(s) that causes the failure(s). */ private final Sources failureSources = new Sources(); public void addErrorSource( String errorSource, StackTraceWriter stackTraceWriter ) { errorSources.addSource( errorSource, stackTraceWriter ); } public void addFailureSource( String failureSource, StackTraceWriter stackTraceWriter ) { failureSources.addSource( failureSource, stackTraceWriter ); } public Collection getErrorSources() { return errorSources.getListOfSources(); } public Collection getFailureSources() { return failureSources.getListOfSources(); } private static class Sources { private final Collection listOfSources = new ArrayList(); void addSource( String source ) { synchronized ( listOfSources ) { listOfSources.add( source ); } } void addSource( String source, StackTraceWriter stackTraceWriter ) { String message = getMessageOfThrowable( stackTraceWriter ); String extendedSource = StringUtils.isBlank( message ) ? source : source + ": " + trimToSingleLine( message ); addSource( extendedSource ); } private String trimToSingleLine( String str ) { int i = str.indexOf( "\n" ); return i >= 0 ? str.substring( 0, i ) : str; } Collection getListOfSources() { synchronized ( listOfSources ) { return Collections.unmodifiableCollection( listOfSources ); } } private String getMessageOfThrowable( StackTraceWriter stackTraceWriter ) { //noinspection ThrowableResultOfMethodCallIgnored return stackTraceWriter != null ? getMessageOfThrowable( stackTraceWriter.getThrowable() ) : ""; } private String getMessageOfThrowable( Throwable throwable ) { return throwable != null ? throwable.getLocalizedMessage() : ""; } } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/AbstractTextReporter.java0000644000175000017500000001224211557340256032337 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.PrintWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * Text based reporter. * * @author Brett Porter */ public abstract class AbstractTextReporter extends AbstractReporter { static final String BRIEF = "brief"; static final String PLAIN = "plain"; static final String SUMMARY = "summary"; protected PrintWriter writer; private static final String TEST_SET_COMPLETED_PREFIX = "Tests run: "; private final String format; private List testResults; protected AbstractTextReporter( boolean trimStackTrace, String format ) { super( trimStackTrace ); this.format = format; } protected AbstractTextReporter( PrintWriter writer, boolean trimStackTrace, String format ) { this( trimStackTrace, format); this.writer = writer; } public void setWriter( PrintWriter writer ) { this.writer = writer; } public void writeMessage( String message ) { if ( writer != null ) { writer.print( message ); writer.flush(); } } public void testSucceeded( ReportEntry report ) { super.testSucceeded( report ); if ( PLAIN.equals( format ) ) { testResults.add( getElapsedTimeSummary( report ) ); } } public void testSkipped( ReportEntry report ) { super.testSkipped( report ); if ( PLAIN.equals( format ) ) { testResults.add( report.getName() + " skipped" ); } } public void testError( ReportEntry report, String stdOut, String stdErr ) { super.testError( report, stdOut, stdErr ); testResults.add( getOutput( report, "ERROR" ) ); } public void testFailed( ReportEntry report, String stdOut, String stdErr ) { super.testFailed( report, stdOut, stdErr ); testResults.add( getOutput( report, "FAILURE" ) ); } public void testSetStarting( ReportEntry report ) throws ReporterException { super.testSetStarting( report ); testResults = new ArrayList(); } public void testSetCompleted( ReportEntry report ) throws ReporterException { super.testSetCompleted( report ); writeMessage( getTestSetSummary( report ) ); if ( format.equals( BRIEF ) || format.equals( PLAIN ) ) { for ( Iterator i = testResults.iterator(); i.hasNext(); ) { writeMessage( (String) i.next() ); } } } protected String getTestSetSummary( ReportEntry report ) { StringBuffer buf = new StringBuffer(); buf.append( TEST_SET_COMPLETED_PREFIX ); buf.append( completedCount ); buf.append( ", Failures: " ); buf.append( failures ); buf.append( ", Errors: " ); buf.append( errors ); buf.append( ", Skipped: " ); buf.append( skipped ); buf.append( ", Time elapsed: " ); int elapsed = report.getElapsed() != null ? report.getElapsed().intValue() : (int) ( System.currentTimeMillis() - testSetStartTime ); buf.append( elapsedTimeAsString( elapsed ) ); buf.append( " sec" ); if ( failures > 0 || errors > 0 ) { buf.append( " <<< FAILURE!" ); } buf.append( "\n" ); return buf.toString(); } protected String getElapsedTimeSummary( ReportEntry report ) { StringBuffer reportContent = new StringBuffer(); long runTime = getActualRunTime( report ); reportContent.append( report.getName() ); reportContent.append( " Time elapsed: " ); reportContent.append( elapsedTimeAsString( runTime ) ); reportContent.append( " sec" ); return reportContent.toString(); } protected String getOutput( ReportEntry report, String msg ) { StringBuffer buf = new StringBuffer(); buf.append( getElapsedTimeSummary( report ) ); buf.append( " <<< " ).append( msg ).append( "!" ).append( NL ); buf.append( getStackTrace( report ) ); return buf.toString(); } public void reset() { super.reset(); if ( writer != null ) { writer.flush(); } } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/BriefFileReporter.java0000644000175000017500000000270311604702065031550 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.File; /** * Brief format file reporter. * * @author Johnny R. Ruiz III * @version $Id: BriefFileReporter.java 1143207 2011-07-05 21:37:57Z pgier $ */ public class BriefFileReporter extends AbstractFileReporter { public BriefFileReporter( boolean trimStackTrace, File reportsDirectory ) { super( trimStackTrace, BRIEF, reportsDirectory ); } public BriefFileReporter( boolean trimStackTrace, File reportsDirectory, String reportNameSuffix ) { super( trimStackTrace, BRIEF, reportsDirectory, reportNameSuffix ); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java0000644000175000017500000000205511511647257030503 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ public interface ReportEntry { public String getSourceName(); public String getName(); public String getGroup(); public StackTraceWriter getStackTraceWriter(); public Integer getElapsed(); } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/SimpleReportEntry.java0000644000175000017500000000775311511647257031667 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ /** * @author Kristian Rosenvold */ public class SimpleReportEntry implements ReportEntry { private final String source; private final String name; private final StackTraceWriter stackTraceWriter; private final Integer elapsed; public SimpleReportEntry( String source, String name ) { this( source, name, null, null ); } public SimpleReportEntry( String source, String name, StackTraceWriter stackTraceWriter ) { this( source, name, stackTraceWriter, null ); } public SimpleReportEntry( String source, String name, Integer elapsed ) { this( source, name, null, elapsed ); } protected SimpleReportEntry( String name ) { this.name = name; this.stackTraceWriter = null; this.elapsed = null; this.source = null; } public SimpleReportEntry( String source, String name, StackTraceWriter stackTraceWriter, Integer elapsed ) { if ( source == null ) { throw new NullPointerException( "source is null" ); } if ( name == null ) { throw new NullPointerException( "name is null" ); } this.source = source; this.name = name; this.stackTraceWriter = stackTraceWriter; this.elapsed = elapsed; } public String getSourceName() { return source; } public String getName() { return name; } public String getGroup() { return null; } public StackTraceWriter getStackTraceWriter() { return stackTraceWriter; } public Integer getElapsed() { return elapsed; } public String toString() { return "ReportEntry{" + "source='" + source + '\'' + ", name='" + name + '\'' + ", stackTraceWriter=" + stackTraceWriter + ", elapsed=" + elapsed + '}'; } /** * @noinspection RedundantIfStatement */ public boolean equals( Object o ) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; } SimpleReportEntry that = (SimpleReportEntry) o; if ( elapsed != null ? !elapsed.equals( that.elapsed ) : that.elapsed != null ) { return false; } if ( name != null ? !name.equals( that.name ) : that.name != null ) { return false; } if ( source != null ? !source.equals( that.source ) : that.source != null ) { return false; } if ( stackTraceWriter != null ? !stackTraceWriter.equals( that.stackTraceWriter ) : that.stackTraceWriter != null ) { return false; } return true; } public int hashCode() { int result = source != null ? source.hashCode() : 0; result = 31 * result + ( name != null ? name.hashCode() : 0 ); result = 31 * result + ( stackTraceWriter != null ? stackTraceWriter.hashCode() : 0 ); result = 31 * result + ( elapsed != null ? elapsed.hashCode() : 0 ); return result; } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleReporter.java0000644000175000017500000000227211557602632031332 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ /** * Console reporter. * * @author Johnny R. Ruiz III * @version $Id: ConsoleReporter.java 1098758 2011-05-02 19:27:22Z krosenvold $ */ public class ConsoleReporter extends AbstractConsoleReporter { public ConsoleReporter( boolean trimStackTrace ) { super( trimStackTrace, SUMMARY ); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputCapture.java0000644000175000017500000000542011564532361032351 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintStream; import org.apache.maven.surefire.util.internal.ByteBuffer; /** * Deals with system.out/err. *

*/ public class ConsoleOutputCapture { public static void startCapture( ConsoleOutputReceiver target ) { System.setOut( new ForwardingPrintStream( true, target ) ); System.setErr( new ForwardingPrintStream( false, target ) ); } private static class ForwardingPrintStream extends PrintStream { private final boolean isStdout; private final ConsoleOutputReceiver target; ForwardingPrintStream( boolean stdout, ConsoleOutputReceiver target ) { super( new ByteArrayOutputStream() ); isStdout = stdout; this.target = target; } public void write( byte[] buf, int off, int len ) { target.writeTestOutput( buf, off, len, isStdout ); } public void write( byte[] b ) throws IOException { target.writeTestOutput( b, 0, b.length, isStdout ); } public void write( int b ) { byte[] buf = new byte[1]; buf[0] = (byte) b; try { write( buf ); } catch ( IOException e ) { setError(); } } static final byte[] newline = new byte[]{ (byte) '\n' }; public void println( String s ) { if (s == null){ s = "null"; // Shamelessy taken from super.print } final byte[] bytes = s.getBytes(); final byte[] join = ByteBuffer.join( bytes, 0, bytes.length, newline, 0, 1 ); target.writeTestOutput( join, 0, join.length, isStdout ); } public void close() { } public void flush() { } } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterFactory.java0000644000175000017500000000253411563247454031344 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import org.apache.maven.surefire.suite.RunResult; /** * @author Kristian Rosenvold */ public interface ReporterFactory { /** * Creates a reporter. The reporter is a singleton that is expected to be * used in the provider. * * @return A reporter instance */ RunListener createReporter(); /** * Closes the factory, freeing resources allocated in the factory. * * @return The run result */ RunResult close(); RunStatistics getGlobalRunStatistics(); } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java0000644000175000017500000000552011502774112032246 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import org.apache.maven.surefire.util.internal.StringUtils; import java.io.PrintWriter; import java.io.StringWriter; /** * Write the trace out for a POJO test. * * @author Brett Porter */ public class PojoStackTraceWriter implements StackTraceWriter { private final Throwable t; protected final String testClass; protected final String testMethod; public PojoStackTraceWriter( String testClass, String testMethod, Throwable t ) { this.testClass = testClass; this.testMethod = testMethod; this.t = t; } public String writeTraceToString() { StringWriter w = new StringWriter(); if ( t != null ) { t.printStackTrace( new PrintWriter( w ) ); w.flush(); } return w.toString(); } public String writeTrimmedTraceToString() { String text = writeTraceToString(); String marker = "at " + testClass + "." + testMethod; String[] lines = StringUtils.split( text, "\n" ); int lastLine = lines.length - 1; int causedByLine = -1; // skip first for ( int i = 1; i < lines.length; i++ ) { String line = lines[i].trim(); if ( line.startsWith( marker ) ) { lastLine = i; } else if ( line.startsWith( "Caused by" ) ) { causedByLine = i; break; } } StringBuffer trace = new StringBuffer(); for ( int i = 0; i <= lastLine; i++ ) { trace.append( lines[i] ); trace.append( "\n" ); } if ( causedByLine != -1 ) { for ( int i = causedByLine; i < lines.length; i++ ) { trace.append( lines[i] ); trace.append( "\n" ); } } return trace.toString(); } public Throwable getThrowable() { return t; } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputFileReporter.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputFileReporter.0000644000175000017500000000732411604702065032506 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import org.apache.maven.surefire.util.NestedRuntimeException; /** * Surefire output consumer proxy that writes test output to a {@link java.io.File} for each test suite. *

* This class is not threadsafe, but can be encapsulated with a SynchronizedOutputConsumer. It may still be * accessed from different threads (serially). * * @author Carlos Sanchez * @version $Id: ConsoleOutputFileReporter.java 1143207 2011-07-05 21:37:57Z pgier $ * @since 2.1 */ public class ConsoleOutputFileReporter implements Reporter { private static final String LINE_SEPARATOR = System.getProperty( "line.separator" ); private final File reportsDirectory; private PrintWriter printWriter = null; private String reportEntryName; private ReportEntry report; private final String reportNameSuffix; public ConsoleOutputFileReporter( File reportsDirectory ) { this( reportsDirectory, null ); } public ConsoleOutputFileReporter( File reportsDirectory, String reportNameSuffix ) { this.reportsDirectory = reportsDirectory; this.reportNameSuffix = reportNameSuffix; } public void testSetStarting( ReportEntry reportEntry ) { this.reportEntryName = reportEntry.getName(); } public void testSetCompleted( ReportEntry report ) throws ReporterException { if ( printWriter != null ) { printWriter.close(); printWriter = null; } } public void writeMessage( byte[] b, int off, int len ) { try { if ( printWriter == null ) { if ( !reportsDirectory.exists() ) { //noinspection ResultOfMethodCallIgnored reportsDirectory.mkdirs(); } File file = AbstractFileReporter.getReportFile( reportsDirectory, reportEntryName, reportNameSuffix, "-output.txt" ); printWriter = new PrintWriter( new BufferedWriter( new FileWriter( file ) ) ); } printWriter.write( new String( b, off, len ) ); printWriter.write( LINE_SEPARATOR ); } catch ( IOException e ) { throw new NestedRuntimeException( e ); } } public void testStarting( ReportEntry report ) { } public void testSucceeded( ReportEntry report ) { } public void testSkipped( ReportEntry report ) { } public void testError( ReportEntry report, String stdOut, String stdErr ) { } public void testFailed( ReportEntry report, String stdOut, String stdErr ) { } public void writeMessage( String message ) { } public void reset() { } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/TestSetStatistics.java0000644000175000017500000000535511557272216031661 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import org.apache.maven.surefire.suite.RunResult; /** * Run-statistics for a testset * * @author Kristian Rosenvold * Note; synchronization is questionable. Whiled this class alone is ok, there's a higher level concern about * synchronization interactions within ReporterManager. See ReporterManager class. */ public class TestSetStatistics { private int completedCount; private int errors; private int failures; private int skipped; public synchronized void incrementCompletedCount() { completedCount += 1; } public synchronized void incrementErrorsCount() { errors += 1; } public synchronized void incrementFailureCount() { failures += 1; } public synchronized void incrementSkippedCount() { skipped += 1; } public synchronized boolean hadFailures() { return failures > 0; } public synchronized void reset() { completedCount = 0; errors = 0; failures = 0; skipped = 0; } public synchronized boolean hadErrors() { return errors > 0; } public synchronized int getCompletedCount() { return completedCount; } public int getSkipped() { return skipped; } public synchronized void add( TestSetStatistics testSetStatistics ) { this.completedCount += testSetStatistics.completedCount; this.errors += testSetStatistics.errors; this.failures += testSetStatistics.failures; this.skipped += testSetStatistics.skipped; } public synchronized RunResult getRunResult() { return new RunResult( completedCount, errors, failures, skipped ); } public synchronized String getSummary() { return "Tests run: " + completedCount + ", Failures: " + failures + ", Errors: " + errors + ", Skipped: " + skipped; } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterConfiguration.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterConfiguration.java0000644000175000017500000000525211557602632032540 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ import java.io.File; import java.io.PrintStream; /** * Bits and pieces of reporting configuration that seem to be necessary on the provider side. *

* Todo: Consider moving these fields elsewhere, this concept does not smell too good * * @author Kristian Rosenvold */ public class ReporterConfiguration { private final File reportsDirectory; private final PrintStream originalSystemOut; /** * A non-null Boolean value */ private final Boolean trimStackTrace; public ReporterConfiguration( File reportsDirectory, Boolean trimStackTrace ) { this.reportsDirectory = reportsDirectory; this.trimStackTrace = trimStackTrace; /* * While this may seem slightly odd, when this object is constructed no user code has been run * (including classloading), and we can be guaranteed that no-one has modified System.out/System.err. * As soon as we start loading user code, all h*ll breaks loose in this respect. */ this.originalSystemOut = System.out; } /** * The directory where reports will be created, normally ${project.build.directory}/surefire-reports * * @return A file pointing at the specified directory */ public File getReportsDirectory() { return reportsDirectory; } /** * Indicates if reporting should trim the stack traces. * * @return true if stacktraces should be trimmed in reporting */ public Boolean isTrimStackTrace() { return trimStackTrace; } /** * The original system out belonging to the (possibly forked) surefire process. * Note that users of Reporter/ReporterFactory should normally not be using this. * * @return A printstream. */ public PrintStream getOriginalSystemOut() { return originalSystemOut; } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputReceiver.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputReceiver.java0000644000175000017500000000252111543316163032506 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ /** * A receiver of stdout/sterr output from running tests. This receiver knows how to associate * the output with a given testset. */ public interface ConsoleOutputReceiver { /** * Forwards process output from the running test-case into the reporting system * * @param buf the buffer to write * @param off offset * @param len len * @param stdout Indicates if this is stdout */ void writeTestOutput( byte[] buf, int off, int len, boolean stdout ); } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.jav0000644000175000017500000000431011557340256032516 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ /** * @author Kristian Rosenvold */ public class CategorizedReportEntry extends SimpleReportEntry implements ReportEntry { private final String group; private CategorizedReportEntry( String name, String group ) { super( name ); this.group = group; } public CategorizedReportEntry( String source, String name, String group ) { this( source, name, group, null, null ); } public CategorizedReportEntry( String source, String name, String group, StackTraceWriter stackTraceWriter, Integer elapsed ) { super( source, name, stackTraceWriter, elapsed ); this.group = group; } public String getGroup() { return group; } public boolean equals( Object o ) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; } if ( !super.equals( o ) ) { return false; } CategorizedReportEntry that = (CategorizedReportEntry) o; return !( group != null ? !group.equals( that.group ) : that.group != null ); } public int hashCode() { int result = super.hashCode(); result = 31 * result + ( group != null ? group.hashCode() : 0 ); return result; } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleLogger.java0000644000175000017500000000224411561564522030746 0ustar tonytonypackage org.apache.maven.surefire.report; /* * 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. */ /** * Allows providers to write console messages on the running maven process. *

* This output is associated with the entire test run and not a specific * test, which means it just goes "straight" to the console "immediately". *

* s*

*/ public interface ConsoleLogger { public void info( String message ); } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/suite/0000755000175000017500000000000011645102475025153 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/suite/RunResult.java0000644000175000017500000001004211557272216027761 0ustar tonytonypackage org.apache.maven.surefire.suite; /* * 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. */ import java.util.StringTokenizer; /** * Represents a test-run-result; this may be from a single test run or an aggregated result. * * @author Kristian Rosenvold */ public class RunResult { private final int completedCount; private final int errors; private final int failures; private final int skipped; private final boolean failure; private final boolean timeout; private static final int SUCCESS = 0; public static final int FAILURE = 255; public static final int NO_TESTS = 254; public static final RunResult Timeout = new RunResult( 0, 0, 0, 0, false, true ); public RunResult( int completedCount, int errors, int failures, int skipped ) { this( completedCount, errors, failures, skipped, false, false ); } public RunResult( int completedCount, int errors, int failures, int skipped, boolean failure, boolean timeout ) { this.completedCount = completedCount; this.errors = errors; this.failures = failures; this.skipped = skipped; this.failure = failure; this.timeout = timeout; } public int getCompletedCount() { return completedCount; } public int getErrors() { return errors; } public int getFailures() { return failures; } public int getSkipped() { return skipped; } public int getBooterCode() { return isErrrorFree() ? SUCCESS : FAILURE; } public int getForkedProcessCode() { return completedCount == 0 ? NO_TESTS : isErrrorFree() ? SUCCESS : FAILURE; } public boolean isErrrorFree() { return getFailures() == 0 && getErrors() == 0; } public String getAsString() { return getCompletedCount() + "," + getErrors() + "," + getFailures() + "," + getSkipped() + "," + isFailure() + "," + isTimeout(); } public static RunResult fromString( String string ) { StringTokenizer strTok = new StringTokenizer( string, "," ); int completed = Integer.parseInt( strTok.nextToken() ); int errors = Integer.parseInt( strTok.nextToken() ); int failures = Integer.parseInt( strTok.nextToken() ); int skipped = Integer.parseInt( strTok.nextToken() ); boolean isFailure = Boolean.parseBoolean( strTok.nextToken() ); boolean isTimeout = Boolean.parseBoolean( strTok.nextToken() ); return new RunResult( completed, errors, failures, skipped, isFailure, isTimeout ); } public boolean isFailureOrTimeout() { return this.timeout || this.failure; } public boolean isFailure() { return failure; } public boolean isTimeout() { return timeout; } public RunResult aggregate( RunResult other ) { boolean failure = isFailure() || other.isFailure(); boolean timeout = isTimeout() || other.isTimeout(); int completed = getCompletedCount() + other.getCompletedCount(); int fail = getFailures() + other.getFailures(); int ign = getSkipped() + other.getSkipped(); int err = getErrors() + other.getErrors(); return new RunResult( completed, err, fail, ign, failure, timeout ); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/NonAbstractClassFilter.java0000644000175000017500000000221611477531212031236 0ustar tonytonypackage org.apache.maven.surefire; /* * 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. */ import org.apache.maven.surefire.util.ScannerFilter; import java.lang.reflect.Modifier; /** * @author Kristian Rosenvold */ public class NonAbstractClassFilter implements ScannerFilter { public boolean accept( Class testClass ) { return !Modifier.isAbstract( testClass.getModifiers() ); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/forking/0000755000175000017500000000000011645102475025461 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/0000755000175000017500000000000011645102475025314 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/BaseProviderFactory.java0000644000175000017500000001157511563247454032113 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.util.Properties; import org.apache.maven.plugin.surefire.report.FileReporterFactory; import org.apache.maven.surefire.providerapi.ProviderParameters; import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.report.DefaultDirectConsoleReporter; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.testset.DirectoryScannerParameters; import org.apache.maven.surefire.testset.TestArtifactInfo; import org.apache.maven.surefire.testset.TestRequest; import org.apache.maven.surefire.util.DefaultDirectoryScanner; import org.apache.maven.surefire.util.DirectoryScanner; /** * @author Kristian Rosenvold */ public class BaseProviderFactory implements DirectoryScannerParametersAware, ReporterConfigurationAware, SurefireClassLoadersAware, TestRequestAware, ProviderPropertiesAware, ProviderParameters, TestArtifactInfoAware { private Properties providerProperties; private DirectoryScannerParameters directoryScannerParameters; private ReporterConfiguration reporterConfiguration; private ClassLoader testClassLoader; private TestRequest testRequest; private TestArtifactInfo testArtifactInfo; private static final Integer ROOT_CHANNEl = new Integer( 0 ); private final ReporterFactory reporterFactory; public BaseProviderFactory( ReporterFactory reporterFactory ) { this.reporterFactory = reporterFactory; } public DirectoryScanner getDirectoryScanner() { if ( directoryScannerParameters == null ) { return null; } return new DefaultDirectoryScanner( directoryScannerParameters.getTestClassesDirectory(), directoryScannerParameters.getIncludes(), directoryScannerParameters.getExcludes(), directoryScannerParameters.getRunOrder() ); } public ReporterFactory getReporterFactory() { return reporterFactory; } public void setDirectoryScannerParameters( DirectoryScannerParameters directoryScannerParameters ) { this.directoryScannerParameters = directoryScannerParameters; } public void setReporterConfiguration( ReporterConfiguration reporterConfiguration ) { this.reporterConfiguration = reporterConfiguration; } public void setClassLoaders( ClassLoader surefireClassLoader, ClassLoader testClassLoader ) { this.testClassLoader = testClassLoader; } public ConsoleLogger getConsoleLogger() { // Maybe a somewhat odd way to determine if we're forking if ( getReporterFactory() instanceof FileReporterFactory ) { return new DefaultDirectConsoleReporter( reporterConfiguration.getOriginalSystemOut() ); } return new ForkingRunListener( reporterConfiguration.getOriginalSystemOut(), ROOT_CHANNEl.intValue(), reporterConfiguration.isTrimStackTrace().booleanValue() ); } public void setTestRequest( TestRequest testRequest ) { this.testRequest = testRequest; } public DirectoryScannerParameters getDirectoryScannerParameters() { return directoryScannerParameters; } public ReporterConfiguration getReporterConfiguration() { return reporterConfiguration; } public TestRequest getTestRequest() { return testRequest; } public ClassLoader getTestClassLoader() { return testClassLoader; } public void setProviderProperties( Properties providerProperties ) { this.providerProperties = providerProperties; } public Properties getProviderProperties() { return providerProperties; } public TestArtifactInfo getTestArtifactInfo() { return testArtifactInfo; } public void setTestArtifactInfo( TestArtifactInfo testArtifactInfo ) { this.testArtifactInfo = testArtifactInfo; } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/TestRequestAware.java0000644000175000017500000000206111503742760031426 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import org.apache.maven.surefire.testset.TestRequest; /** * @author Kristian Rosenvold * @noinspection UnusedDeclaration */ interface TestRequestAware { void setTestRequest( TestRequest testSuiteDefinition ); } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java0000644000175000017500000003446111604702065031615 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.io.File; import java.io.PrintStream; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.util.List; import java.util.Properties; import org.apache.maven.plugin.surefire.report.FileReporterFactory; import org.apache.maven.surefire.providerapi.ProviderParameters; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.surefire.testset.DirectoryScannerParameters; import org.apache.maven.surefire.testset.TestArtifactInfo; import org.apache.maven.surefire.testset.TestRequest; import org.apache.maven.surefire.util.ReflectionUtils; import org.apache.maven.surefire.util.RunOrder; import org.apache.maven.surefire.util.SurefireReflectionException; /** * Does reflection based invocation of the surefire methods. *

* This is to avoid compilications with linkage issues * * @author Kristian Rosenvold */ public class SurefireReflector { private final ClassLoader surefireClassLoader; private final Class reporterConfiguration; private final Class testRequest; private final Class testArtifactInfo; private final Class testArtifactInfoAware; private final Class directoryScannerParameters; private final Class directoryScannerParametersAware; private final Class testSuiteDefinitionAware; private final Class testClassLoaderAware; private final Class reporterConfigurationAware; private final Class providerPropertiesAware; private final Class runResult; private final Class booterParameters; private final Class reporterFactory; private final Class startupReportConfiguration; public SurefireReflector( ClassLoader surefireClassLoader ) { this.surefireClassLoader = surefireClassLoader; try { reporterConfiguration = surefireClassLoader.loadClass( ReporterConfiguration.class.getName() ); startupReportConfiguration = surefireClassLoader.loadClass( StartupReportConfiguration.class.getName() ); testRequest = surefireClassLoader.loadClass( TestRequest.class.getName() ); testArtifactInfo = surefireClassLoader.loadClass( TestArtifactInfo.class.getName() ); testArtifactInfoAware = surefireClassLoader.loadClass( TestArtifactInfoAware.class.getName() ); directoryScannerParameters = surefireClassLoader.loadClass( DirectoryScannerParameters.class.getName() ); directoryScannerParametersAware = surefireClassLoader.loadClass( DirectoryScannerParametersAware.class.getName() ); testSuiteDefinitionAware = surefireClassLoader.loadClass( TestRequestAware.class.getName() ); testClassLoaderAware = surefireClassLoader.loadClass( SurefireClassLoadersAware.class.getName() ); reporterConfigurationAware = surefireClassLoader.loadClass( ReporterConfigurationAware.class.getName() ); providerPropertiesAware = surefireClassLoader.loadClass( ProviderPropertiesAware.class.getName() ); reporterFactory = surefireClassLoader.loadClass( ReporterFactory.class.getName() ); runResult = surefireClassLoader.loadClass( RunResult.class.getName() ); booterParameters = surefireClassLoader.loadClass( ProviderParameters.class.getName() ); } catch ( ClassNotFoundException e ) { throw new SurefireReflectionException( e ); } } public Object convertIfRunResult( Object result ) { if ( result == null || !isRunResult( result ) ) { return result; } final Integer getCompletedCount1 = (Integer) ReflectionUtils.invokeGetter( result, "getCompletedCount" ); final Integer getErrors = (Integer) ReflectionUtils.invokeGetter( result, "getErrors" ); final Integer getSkipped = (Integer) ReflectionUtils.invokeGetter( result, "getSkipped" ); final Integer getFailures = (Integer) ReflectionUtils.invokeGetter( result, "getFailures" ); return new RunResult( getCompletedCount1.intValue(), getErrors.intValue(), getFailures.intValue(), getSkipped.intValue() ); } /** * @noinspection UnusedDeclaration */ class ClassLoaderProxy implements InvocationHandler { private final Object target; /** * @param delegate a target * @noinspection UnusedDeclaration */ public ClassLoaderProxy( Object delegate ) { this.target = delegate; } public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable { Method delegateMethod = target.getClass().getMethod( method.getName(), method.getParameterTypes() ); return delegateMethod.invoke( target, args ); } } Object createTestRequest( TestRequest suiteDefinition ) { if ( suiteDefinition == null ) { return null; } Class[] arguments = { List.class, File.class, String.class, String.class }; Constructor constructor = ReflectionUtils.getConstructor( this.testRequest, arguments ); return ReflectionUtils.newInstance( constructor, new Object[]{ suiteDefinition.getSuiteXmlFiles(), suiteDefinition.getTestSourceDirectory(), suiteDefinition.getRequestedTest(), suiteDefinition.getRequestedTestMethod() } ); } Object createDirectoryScannerParameters( DirectoryScannerParameters directoryScannerParameters ) { if ( directoryScannerParameters == null ) { return null; } //Can't use the constructor with the RunOrder parameter. Using it causes some integration tests to fail. Class[] arguments = { File.class, List.class, List.class, Boolean.class, String.class }; Constructor constructor = ReflectionUtils.getConstructor( this.directoryScannerParameters, arguments ); return ReflectionUtils.newInstance( constructor, new Object[]{ directoryScannerParameters.getTestClassesDirectory(), directoryScannerParameters.getIncludes(), directoryScannerParameters.getExcludes(), directoryScannerParameters.isFailIfNoTests(), directoryScannerParameters.getRunOrder().name() } ); } Object createTestArtifactInfo( TestArtifactInfo testArtifactInfo ) { if ( testArtifactInfo == null ) { return null; } Class[] arguments = { String.class, String.class }; Constructor constructor = ReflectionUtils.getConstructor( this.testArtifactInfo, arguments ); return ReflectionUtils.newInstance( constructor, new Object[]{ testArtifactInfo.getVersion(), testArtifactInfo.getClassifier() } ); } Object createReporterConfiguration( ReporterConfiguration reporterConfiguration ) { Constructor constructor = ReflectionUtils.getConstructor( this.reporterConfiguration, new Class[]{ File.class, Boolean.class } ); return ReflectionUtils.newInstance( constructor, new Object[]{ reporterConfiguration.getReportsDirectory(), reporterConfiguration.isTrimStackTrace()} ); } Object createStartupReportConfiguration( StartupReportConfiguration reporterConfiguration ) { Constructor constructor = ReflectionUtils.getConstructor( this.startupReportConfiguration, new Class[]{ boolean.class, boolean.class, String.class, boolean.class, boolean.class, File.class, boolean.class, String.class } ); //noinspection BooleanConstructorCall final Object[] params = { new Boolean( reporterConfiguration.isUseFile() ), new Boolean( reporterConfiguration.isPrintSummary() ), reporterConfiguration.getReportFormat(), new Boolean( reporterConfiguration.isRedirectTestOutputToFile() ), new Boolean( reporterConfiguration.isDisableXmlReport() ), reporterConfiguration.getReportsDirectory(), new Boolean( reporterConfiguration.isTrimStackTrace()), reporterConfiguration.getReportNameSuffix()}; return ReflectionUtils.newInstance( constructor, params ); } public Object createForkingReporterFactory( Boolean trimStackTrace, PrintStream originalSystemOut ) { Class[] args = new Class[]{ Boolean.class, PrintStream.class }; Object[] values = new Object[]{ trimStackTrace, originalSystemOut }; return ReflectionUtils.instantiateObject( ForkingReporterFactory.class.getName(), args, values, surefireClassLoader ); } public Object createReportingReporterFactory( StartupReportConfiguration startupReportConfiguration ) { Class[] args = new Class[]{ this.startupReportConfiguration }; Object src = createStartupReportConfiguration( startupReportConfiguration ); Object[] params = new Object[]{ src }; return ReflectionUtils.instantiateObject( FileReporterFactory.class.getName(), args, params, surefireClassLoader ); } public Object createBooterConfiguration( ClassLoader surefireClassLoader, Object factoryInstance ) { return ReflectionUtils.instantiateOneArg( surefireClassLoader, BaseProviderFactory.class.getName(), reporterFactory, factoryInstance ); } public Object instantiateProvider( String providerClassName, Object booterParameters ) { return ReflectionUtils.instantiateOneArg( surefireClassLoader, providerClassName, this.booterParameters, booterParameters ); } public void setIfDirScannerAware( Object o, DirectoryScannerParameters dirScannerParams ) { if ( directoryScannerParametersAware.isAssignableFrom( o.getClass() ) ) { setDirectoryScannerParameters( o, dirScannerParams ); } } public void setDirectoryScannerParameters( Object o, DirectoryScannerParameters dirScannerParams ) { final Object param = createDirectoryScannerParameters( dirScannerParams ); ReflectionUtils.invokeSetter( o, "setDirectoryScannerParameters", this.directoryScannerParameters, param ); } public void setTestSuiteDefinitionAware( Object o, TestRequest testSuiteDefinition2 ) { if ( testSuiteDefinitionAware.isAssignableFrom( o.getClass() ) ) { setTestSuiteDefinition( o, testSuiteDefinition2 ); } } void setTestSuiteDefinition( Object o, TestRequest testSuiteDefinition1 ) { final Object param = createTestRequest( testSuiteDefinition1 ); ReflectionUtils.invokeSetter( o, "setTestRequest", this.testRequest, param ); } public void setProviderPropertiesAware( Object o, Properties properties ) { if ( providerPropertiesAware.isAssignableFrom( o.getClass() ) ) { setProviderProperties( o, properties ); } } void setProviderProperties( Object o, Properties providerProperties ) { ReflectionUtils.invokeSetter( o, "setProviderProperties", Properties.class, providerProperties ); } public void setReporterConfigurationAware( Object o, ReporterConfiguration reporterConfiguration1 ) { if ( reporterConfigurationAware.isAssignableFrom( o.getClass() ) ) { setReporterConfiguration( o, reporterConfiguration1 ); } } void setReporterConfiguration( Object o, ReporterConfiguration reporterConfiguration ) { final Object param = createReporterConfiguration( reporterConfiguration ); ReflectionUtils.invokeSetter( o, "setReporterConfiguration", this.reporterConfiguration, param ); } public void setTestClassLoaderAware( Object o, ClassLoader surefireClassLoader, ClassLoader testClassLoader ) { if ( testClassLoaderAware.isAssignableFrom( o.getClass() ) ) { setTestClassLoader( o, surefireClassLoader, testClassLoader ); } } void setTestClassLoader( Object o, ClassLoader surefireClassLoader, ClassLoader testClassLoader ) { final Method setter = ReflectionUtils.getMethod( o, "setClassLoaders", new Class[]{ ClassLoader.class, ClassLoader.class } ); ReflectionUtils.invokeMethodWithArray( o, setter, new Object[]{ surefireClassLoader, testClassLoader } ); } public void setTestArtifactInfoAware( Object o, TestArtifactInfo testArtifactInfo1 ) { if ( testArtifactInfoAware.isAssignableFrom( o.getClass() ) ) { setTestArtifactInfo( o, testArtifactInfo1 ); } } void setTestArtifactInfo( Object o, TestArtifactInfo testArtifactInfo ) { final Object param = createTestArtifactInfo( testArtifactInfo ); ReflectionUtils.invokeSetter( o, "setTestArtifactInfo", this.testArtifactInfo, param ); } private boolean isRunResult( Object o ) { return runResult.isAssignableFrom( o.getClass() ); } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/ProviderPropertiesAware.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/ProviderPropertiesAware.ja0000644000175000017500000000204411503742760032457 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.util.Properties; /** * @author Kristian Rosenvold * @noinspection UnusedDeclaration */ interface ProviderPropertiesAware { void setProviderProperties( Properties providerProperties ); } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/ReporterConfigurationAware.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/ReporterConfigurationAware0000644000175000017500000000213211503742760032547 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import org.apache.maven.surefire.report.ReporterConfiguration; /** * @author Kristian Rosenvold * @noinspection UnusedDeclaration */ interface ReporterConfigurationAware { void setReporterConfiguration( ReporterConfiguration reporterConfiguration ); } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/TestArtifactInfoAware.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/TestArtifactInfoAware.java0000644000175000017500000000210211503742760032343 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import org.apache.maven.surefire.testset.TestArtifactInfo; /** * @author Kristian Rosenvold * @noinspection UnusedDeclaration */ interface TestArtifactInfoAware { void setTestArtifactInfo( TestArtifactInfo testArtifactInfo ); } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/StartupReportConfiguration.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/StartupReportConfiguration0000644000175000017500000002111211604702065032616 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.io.File; import java.io.PrintStream; import java.util.ArrayList; import java.util.List; import java.util.Properties; import org.apache.maven.surefire.report.AbstractConsoleReporter; import org.apache.maven.surefire.report.AbstractFileReporter; import org.apache.maven.surefire.report.BriefConsoleReporter; import org.apache.maven.surefire.report.BriefFileReporter; import org.apache.maven.surefire.report.ConsoleOutputDirectReporter; import org.apache.maven.surefire.report.ConsoleOutputFileReporter; import org.apache.maven.surefire.report.ConsoleReporter; import org.apache.maven.surefire.report.DetailedConsoleReporter; import org.apache.maven.surefire.report.FileReporter; import org.apache.maven.surefire.report.Reporter; import org.apache.maven.surefire.report.XMLReporter; /** * All the parameters used to construct reporters *

* TODO: Move out of API module * * @author Kristian Rosenvold */ public class StartupReportConfiguration { private final boolean useFile; private final boolean printSummary; private final String reportFormat; private final String reportNameSuffix; private final boolean redirectTestOutputToFile; private final boolean disableXmlReport; private final File reportsDirectory; private final boolean trimStackTrace; private final Properties testVmSystemProperties = new Properties( ); public static final String BRIEF_REPORT_FORMAT = "brief"; public static final String PLAIN_REPORT_FORMAT = "plain"; public StartupReportConfiguration( boolean useFile, boolean printSummary, String reportFormat, boolean redirectTestOutputToFile, boolean disableXmlReport, File reportsDirectory, boolean trimStackTrace ) { this( useFile, printSummary, reportFormat, redirectTestOutputToFile, disableXmlReport, reportsDirectory, trimStackTrace, null ); } public StartupReportConfiguration( boolean useFile, boolean printSummary, String reportFormat, boolean redirectTestOutputToFile, boolean disableXmlReport, File reportsDirectory, boolean trimStackTrace, String reportNameSuffix ) { this.useFile = useFile; this.printSummary = printSummary; this.reportFormat = reportFormat; this.redirectTestOutputToFile = redirectTestOutputToFile; this.disableXmlReport = disableXmlReport; this.reportsDirectory = reportsDirectory; this.trimStackTrace = trimStackTrace; this.reportNameSuffix = reportNameSuffix; } public static StartupReportConfiguration defaultValue() { File target = new File( "./target" ); return new StartupReportConfiguration( true, true, "PLAIN", false, false, target, false ); } public static StartupReportConfiguration defaultNoXml() { File target = new File( "./target" ); return new StartupReportConfiguration( true, true, "PLAIN", false, true, target, false ); } public boolean isUseFile() { return useFile; } public boolean isPrintSummary() { return printSummary; } public String getReportFormat() { return reportFormat; } public String getReportNameSuffix() { return reportNameSuffix; } public boolean isRedirectTestOutputToFile() { return redirectTestOutputToFile; } public boolean isDisableXmlReport() { return disableXmlReport; } public File getReportsDirectory() { return reportsDirectory; } public String getXmlReporterName() { if ( !isDisableXmlReport() ) { return XMLReporter.class.getName(); } return null; } public XMLReporter instantiateXmlReporter() { if ( !isDisableXmlReport() ) { return new XMLReporter(trimStackTrace, reportsDirectory, reportNameSuffix); } return null; } public String getFileReporter() { if ( isUseFile() ) { if ( BRIEF_REPORT_FORMAT.equals( getReportFormat() ) ) { return BriefFileReporter.class.getName(); } else if ( PLAIN_REPORT_FORMAT.equals( getReportFormat() ) ) { return FileReporter.class.getName(); } } return null; } public AbstractFileReporter instantiateFileReporter() { if ( isUseFile() ) { if ( BRIEF_REPORT_FORMAT.equals( getReportFormat() ) ) { return new BriefFileReporter(trimStackTrace, reportsDirectory, getReportNameSuffix()); } else if ( PLAIN_REPORT_FORMAT.equals( getReportFormat() ) ) { return new FileReporter(trimStackTrace, reportsDirectory, getReportNameSuffix()); } } return null; } /** * Returns the reporter that will write to the console * * @return a console reporter of null if no console reporting */ public String getConsoleReporter() { if ( isUseFile() ) { return isPrintSummary() ? ConsoleReporter.class.getName() : null; } else if ( isRedirectTestOutputToFile() || BRIEF_REPORT_FORMAT.equals( getReportFormat() ) ) { return BriefConsoleReporter.class.getName(); } else if ( PLAIN_REPORT_FORMAT.equals( getReportFormat() ) ) { return DetailedConsoleReporter.class.getName(); } return null; } public AbstractConsoleReporter instantiateConsoleReporter() { if ( isUseFile() ) { return isPrintSummary() ? new ConsoleReporter(trimStackTrace) : null; } else if ( isRedirectTestOutputToFile() || BRIEF_REPORT_FORMAT.equals( getReportFormat() ) ) { return new BriefConsoleReporter(trimStackTrace); } else if ( PLAIN_REPORT_FORMAT.equals( getReportFormat() ) ) { return new DetailedConsoleReporter(trimStackTrace ); } return null; } public String getConsoleOutputFileReporterName() { if ( isRedirectTestOutputToFile() ) { return ConsoleOutputFileReporter.class.getName(); } else { return ConsoleOutputDirectReporter.class.getName(); } } public Reporter instantiateConsoleOutputFileReporterName(PrintStream originalSystemOut) { if ( isRedirectTestOutputToFile() ) { return new ConsoleOutputFileReporter(reportsDirectory, getReportNameSuffix()); } else { return new ConsoleOutputDirectReporter(originalSystemOut); } } /** * A list of classnames representing runnable reports for this test-run. * * @return A list of strings, each string is a classname of a class * implementing the org.apache.maven.surefire.report.Reporter interface */ public List getReports() { ArrayList reports = new ArrayList(); addIfNotNull( reports, getConsoleReporter() ); addIfNotNull( reports, getFileReporter() ); addIfNotNull( reports, getXmlReporterName() ); addIfNotNull( reports, getConsoleOutputFileReporterName() ); return reports; } private void addIfNotNull( ArrayList reports, String reporter ) { if ( reporter != null ) { reports.add( reporter ); } } public Properties getTestVmSystemProperties() { return testVmSystemProperties; } public boolean isTrimStackTrace() { return trimStackTrace; } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java0000644000175000017500000002520311566542111031750 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.io.PrintStream; import java.util.Enumeration; import java.util.Properties; import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.report.ConsoleOutputReceiver; import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.StackTraceWriter; import org.apache.maven.surefire.util.internal.ByteBuffer; import org.apache.maven.surefire.util.internal.StringUtils; /** * Encodes the full output of the test run to the stdout stream. *

* This class and the ForkClient contain the full definition of the * "wire-level" protocol used by the forked process. The protocol * is *not* part of any public api and may change without further * notice. *

* This class is threadsafe. *

* The synchronization in the underlying PrintStream (target instance) * is used to preserve thread safety of the ouput stream. To perform * multiple writes/prints for a single request, they must * synchronize on "target" variable in this class. * * @author Kristian Rosenvold */ public class ForkingRunListener implements RunListener, ConsoleLogger, ConsoleOutputReceiver { public static final byte BOOTERCODE_TESTSET_STARTING = (byte) '1'; public static final byte BOOTERCODE_TESTSET_COMPLETED = (byte) '2'; public static final byte BOOTERCODE_STDOUT = (byte) '3'; public static final byte BOOTERCODE_STDERR = (byte) '4'; public static final byte BOOTERCODE_TEST_STARTING = (byte) '5'; public static final byte BOOTERCODE_TEST_SUCCEEDED = (byte) '6'; public static final byte BOOTERCODE_TEST_ERROR = (byte) '7'; public static final byte BOOTERCODE_TEST_FAILED = (byte) '8'; public static final byte BOOTERCODE_TEST_SKIPPED = (byte) '9'; public static final byte BOOTERCODE_TEST_ASSUMPTIONFAILURE = (byte) 'G'; public static final byte BOOTERCODE_CONSOLE = (byte) 'H'; public static final byte BOOTERCODE_SYSPROPS = (byte) 'I'; private final PrintStream target; private final Integer testSetChannelId; private final boolean trimStackTraces; private final byte[] stdOutHeader; private final byte[] stdErrHeader; public ForkingRunListener( PrintStream target, int testSetChannelId ) { this( target, testSetChannelId, false ); } public ForkingRunListener( PrintStream target, int testSetChannelId, boolean trimStackTraces ) { this.target = target; this.testSetChannelId = new Integer( testSetChannelId ); this.trimStackTraces = trimStackTraces; stdOutHeader = createHeader( BOOTERCODE_STDOUT, testSetChannelId ); stdErrHeader = createHeader( BOOTERCODE_STDERR, testSetChannelId ); sendProps(); } public void testSetStarting( ReportEntry report ) { target.print( toString( BOOTERCODE_TESTSET_STARTING, report, testSetChannelId ) ); } public void testSetCompleted( ReportEntry report ) { target.print( toString( BOOTERCODE_TESTSET_COMPLETED, report, testSetChannelId ) ); } public void testStarting( ReportEntry report ) { target.print( toString( BOOTERCODE_TEST_STARTING, report, testSetChannelId ) ); } public void testSucceeded( ReportEntry report ) { target.print( toString( BOOTERCODE_TEST_SUCCEEDED, report, testSetChannelId ) ); } public void testAssumptionFailure( ReportEntry report ) { target.print( toString( BOOTERCODE_TEST_ASSUMPTIONFAILURE, report, testSetChannelId ) ); } public void testError( ReportEntry report ) { target.print( toString( BOOTERCODE_TEST_ERROR, report, testSetChannelId ) ); } public void testFailed( ReportEntry report ) { target.print( toString( BOOTERCODE_TEST_FAILED, report, testSetChannelId ) ); } public void testSkipped( ReportEntry report ) { target.print( toString( BOOTERCODE_TEST_SKIPPED, report, testSetChannelId ) ); } void sendProps() { Properties systemProperties = System.getProperties(); if ( systemProperties != null ) { Enumeration propertyKeys = systemProperties.propertyNames(); while ( propertyKeys.hasMoreElements() ) { String key = (String) propertyKeys.nextElement(); String value = systemProperties.getProperty( key ); if ( value == null ) { value = "null"; } target.print( toPropertyString( key, value ) ); } } } public void writeTestOutput( byte[] buf, int off, int len, boolean stdout ) { byte[] header = stdout ? stdOutHeader : stdErrHeader; byte[] content = new byte[buf.length * 6 + 1]; // Unicode escapes can be up to 6 times length of regular char. Yuck. int i = StringUtils.escapeJavaStyleString( content, 0, buf, off, len ); content[i++] = (byte) '\n'; synchronized ( target ) // See notes about synhronization/thread safety in class javadoc { target.write( header, 0, header.length ); target.write( content, 0, i ); } } public static byte[] createHeader( byte booterCode, int testSetChannel ) { byte[] header = new byte[7]; header[0] = booterCode; header[1] = (byte) ','; header[6] = (byte) ','; int i = testSetChannel; int charPos = 6; int radix = 1 << 4; int mask = radix - 1; do { header[--charPos] = (byte) digits[i & mask]; i >>>= 4; } while ( i != 0 ); while ( charPos > 2 ) { header[--charPos] = (byte) '0'; } return header; } private final static char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; public void info( String message ) { byte[] buf = message.getBytes(); ByteBuffer byteBuffer = new ByteBuffer( buf.length * 6 ); byteBuffer.append( BOOTERCODE_CONSOLE ); byteBuffer.comma(); byteBuffer.append( testSetChannelId ); byteBuffer.comma(); final int i = StringUtils.escapeJavaStyleString( byteBuffer.getData(), byteBuffer.getlength(), buf, 0, buf.length ); byteBuffer.advance( i ); byteBuffer.append( '\n' ); synchronized ( target ) { target.write( byteBuffer.getData(), 0, byteBuffer.getlength() ); target.flush(); } } private String toPropertyString( String key, String value ) { StringBuffer stringBuffer = new StringBuffer(); append( stringBuffer, BOOTERCODE_SYSPROPS ).comma( stringBuffer ); append( stringBuffer, Integer.toHexString( testSetChannelId.intValue() ) ).comma( stringBuffer ); StringUtils.escapeJavaStyleString( stringBuffer, key ); append( stringBuffer, "," ); StringUtils.escapeJavaStyleString( stringBuffer, value ); stringBuffer.append( "\n" ); return stringBuffer.toString(); } private String toString( byte operationCode, ReportEntry reportEntry, Integer testSetChannelId ) { StringBuffer stringBuffer = new StringBuffer(); append( stringBuffer, operationCode ).comma( stringBuffer ); append( stringBuffer, Integer.toHexString( testSetChannelId.intValue() ) ).comma( stringBuffer ); nullableEncoding( stringBuffer, reportEntry.getSourceName() ).comma( stringBuffer ); nullableEncoding( stringBuffer, reportEntry.getName() ).comma( stringBuffer ); nullableEncoding( stringBuffer, reportEntry.getGroup() ).comma( stringBuffer ); nullableEncoding( stringBuffer, reportEntry.getElapsed() ); encode( stringBuffer, reportEntry.getStackTraceWriter() ); stringBuffer.append( "\n" ); return stringBuffer.toString(); } private void comma( StringBuffer stringBuffer ) { stringBuffer.append( "," ); } private ForkingRunListener append( StringBuffer stringBuffer, String message ) { stringBuffer.append( encode( message ) ); return this; } private ForkingRunListener append( StringBuffer stringBuffer, byte b ) { stringBuffer.append( (char) b ); return this; } private void nullableEncoding( StringBuffer stringBuffer, Integer source ) { if ( source == null ) { stringBuffer.append( "null" ); } else { stringBuffer.append( source.toString() ); } } private String encode( String source ) { return source; } private ForkingRunListener nullableEncoding( StringBuffer stringBuffer, String source ) { if ( source == null || source.length() == 0) { stringBuffer.append( "null" ); } else { StringUtils.escapeJavaStyleString( stringBuffer, source ); } return this; } private void encode( StringBuffer stringBuffer, StackTraceWriter stackTraceWriter ) { if ( stackTraceWriter != null ) { comma( stringBuffer ); //noinspection ThrowableResultOfMethodCallIgnored final Throwable throwable = stackTraceWriter.getThrowable(); if ( throwable != null ) { String message = throwable.getLocalizedMessage(); nullableEncoding( stringBuffer, message ); } comma( stringBuffer ); nullableEncoding( stringBuffer, trimStackTraces ? stackTraceWriter.writeTrimmedTraceToString() : stackTraceWriter.writeTraceToString() ); } } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/DirectoryScannerParametersAware.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/DirectoryScannerParameters0000644000175000017500000000215211503742760032541 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import org.apache.maven.surefire.testset.DirectoryScannerParameters; /** * @author Kristian Rosenvold * @noinspection UnusedDeclaration */ interface DirectoryScannerParametersAware { void setDirectoryScannerParameters( DirectoryScannerParameters directoryScanner ); } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/SurefireClassLoadersAware.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/SurefireClassLoadersAware.0000644000175000017500000000205011503742760032356 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ /** * @author Kristian Rosenvold * @noinspection UnusedDeclaration */ public interface SurefireClassLoadersAware { void setClassLoaders( ClassLoader surefireClassLoader, ClassLoader testClassLoader ); } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingReporterFactory.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingReporterFactory.jav0000644000175000017500000000404511563247454032501 0ustar tonytonypackage org.apache.maven.surefire.booter; /* * 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. */ import java.io.PrintStream; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.RunStatistics; import org.apache.maven.surefire.suite.RunResult; /** * Creates ForkingReporters, which are typically one instance per TestSet or thread. * This factory is only used inside forks. * * @author Kristian Rosenvold * @noinspection UnusedDeclaration */ public class ForkingReporterFactory implements ReporterFactory { private final Boolean isTrimstackTrace; private final PrintStream originalSystemOut; private volatile int testSetChannelId = 1; public ForkingReporterFactory( Boolean trimstackTrace, PrintStream originalSystemOut ) { isTrimstackTrace = trimstackTrace; this.originalSystemOut = originalSystemOut; } public synchronized RunListener createReporter() { return new ForkingRunListener( originalSystemOut, testSetChannelId++, isTrimstackTrace.booleanValue() ); } public RunResult close() { return new RunResult( 17, 17, 17, 17 ); } public RunStatistics getGlobalRunStatistics() { return new RunStatistics(); } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/assertion/0000755000175000017500000000000011645102475026031 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/testset/0000755000175000017500000000000011645102475025515 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestArtifactInfo.java0000644000175000017500000000250511474322775031602 0ustar tonytonypackage org.apache.maven.surefire.testset; /* * 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. */ /** * Contains information about the detected test artifact * * @author Kristian Rosenvold */ public class TestArtifactInfo { private final String version; private final String classifier; public TestArtifactInfo( String version, String classifier ) { this.version = version; this.classifier = classifier; } public String getVersion() { return version; } public String getClassifier() { return classifier; } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestRequest.java0000644000175000017500000000627111531760250030651 0ustar tonytonypackage org.apache.maven.surefire.testset; /* * 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. */ import java.io.File; import java.util.ArrayList; import java.util.List; /** * Information about the requested test. * * @author Kristian Rosenvold */ public class TestRequest { private final List suiteXmlFiles; private final File testSourceDirectory; private final String requestedTest; /** * @since 2.7.3 */ private final String requestedTestMethod; public TestRequest( List suiteXmlFiles, File testSourceDirectory, String requestedTest ) { this( suiteXmlFiles, testSourceDirectory, requestedTest, null ); } /** * @since 2.7.3 */ public TestRequest( List suiteXmlFiles, File testSourceDirectory, String requestedTest, String requestedTestMethod ) { this.suiteXmlFiles = createFiles( suiteXmlFiles ); this.testSourceDirectory = testSourceDirectory; this.requestedTest = requestedTest; this.requestedTestMethod = requestedTestMethod; } /** * Represents suitexmlfiles that define the test-run request * @return A list of java.io.File objects. */ public List getSuiteXmlFiles() { return suiteXmlFiles; } /** * Test source directory, normally ${project.build.testSourceDirectory} * @return A file pointing to test sources */ public File getTestSourceDirectory() { return testSourceDirectory; } /** * A specific test request issued with -Dtest= from the command line. * @return The string specified at the command line */ public String getRequestedTest() { return requestedTest; } /** * A specific test request method issued with -Dtest=class#method from the command line. * @return The string specified at the command line * @since 2.7.3 */ public String getRequestedTestMethod() { return requestedTestMethod; } private static List createFiles( List suiteXmlFiles ) { if ( suiteXmlFiles != null ) { List files = new ArrayList(); Object element; for ( int i = 0; i < suiteXmlFiles.size(); i++ ) { element = suiteXmlFiles.get( i ); files.add( element instanceof String ? new File( (String) element ) : (File) element ); } return files; } return null; } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestSetFailedException.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestSetFailedException.ja0000644000175000017500000000510211557340256032411 0ustar tonytonypackage org.apache.maven.surefire.testset; /* * 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. */ import org.apache.maven.surefire.util.NestedCheckedException; /** * Exception that indicates a test failed. * * @author Bill Venners */ public class TestSetFailedException extends NestedCheckedException { /** * Create a TestFailedException with a detail message. * * @param message A detail message for this TestFailedException, or * null. If null is passed, the getMessage * method will return an empty String. */ public TestSetFailedException( String message ) { super( message ); } /** * Create a TestFailedException with the specified detail * message and cause. *

*

Note that the detail message associated with cause is * not automatically incorporated in this throwable's detail * message. * * @param message A detail message for this TestFailedException, or null. * @param cause the cause, which is saved for later retrieval by the getCause method. * (A null value is permitted, and indicates that the cause is nonexistent or unknown.) */ public TestSetFailedException( String message, Throwable cause ) { super( message, cause ); } /** * Create a TestFailedException with the specified cause. The * getMessage method of this exception object will return * (cause == null ? "" : cause.toString()). * @param cause The cause */ public TestSetFailedException( Throwable cause ) { super( cause == null ? "" : cause.toString(), cause ); } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/testset/DirectoryScannerParameters.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/testset/DirectoryScannerParameter0000644000175000017500000000600511603272271032554 0ustar tonytonypackage org.apache.maven.surefire.testset; /* * 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. */ import java.io.File; import java.util.List; import org.apache.maven.surefire.util.RunOrder; /** * @author Kristian Rosenvold */ public class DirectoryScannerParameters { private final File testClassesDirectory; private final List includes; private final List excludes; private final Boolean failIfNoTests; private final RunOrder runOrder; public DirectoryScannerParameters( File testClassesDirectory, List includes, List excludes, Boolean failIfNoTests, RunOrder runOrder ) { this.testClassesDirectory = testClassesDirectory; this.includes = includes; this.excludes = excludes; this.failIfNoTests = failIfNoTests; this.runOrder = runOrder; } public DirectoryScannerParameters( File testClassesDirectory, List includes, List excludes, Boolean failIfNoTests, String runOrder ) { this( testClassesDirectory, includes, excludes, failIfNoTests, runOrder == null ? RunOrder.FILESYSTEM : RunOrder.valueOf( runOrder ) ); } /** * Returns the directory of the compiled classes, normally ${project.build.testOutputDirectory} * * @return A directory that can be scanned for .class files */ public File getTestClassesDirectory() { return testClassesDirectory; } /** * The includes pattern list, as specified on the plugin includes parameter. * * @return A list of patterns. May contain both source file designators and .class extensions. */ public List getIncludes() { return includes; } /** * The excludes pattern list, as specified on the plugin includes parameter. * * @return A list of patterns. May contain both source file designators and .class extensions. */ public List getExcludes() { return excludes; } /** * Indicates if lack of runable tests should fail the entire build * * @return true if no tests should fail the build */ public Boolean isFailIfNoTests() { return failIfNoTests; } public RunOrder getRunOrder() { return runOrder; } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/0000755000175000017500000000000011645102475026346 5ustar tonytony././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/ProviderParameters.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/ProviderParameters.ja0000644000175000017500000000716611563247454032520 0ustar tonytonypackage org.apache.maven.surefire.providerapi; /* * 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. */ import java.util.Properties; import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.testset.DirectoryScannerParameters; import org.apache.maven.surefire.testset.TestArtifactInfo; import org.apache.maven.surefire.testset.TestRequest; import org.apache.maven.surefire.util.DirectoryScanner; /** * Injected into the providers upon provider construction. Allows the provider to request services and data it needs. *

* NOTE: This class is part of the proposed public api for surefire providers from 2.7 and up. It may * still be subject to changes, even for minor revisions. *

* The api covers this interface and all the types reachable from it. And nothing else. * * @author Kristian Rosenvold */ public interface ProviderParameters { /** * Provides a directory scanner that enforces the includes/excludes parameters that were passed to surefire. * See #getDirectoryScannerParameters for details * * @return The directory scanner */ DirectoryScanner getDirectoryScanner(); /** * Provides features for creating reporting objects * * @return A ReporterFactory that allows the creation of one or more ReporterManagers */ ReporterFactory getReporterFactory(); /** * Gets a logger intended for console output. *

* This output is inteded for provider-oriented messages that are not attached to a single test-set * and will normally be written to something console-like immediately. * * @return A console logger */ ConsoleLogger getConsoleLogger(); /** * The raw parameters used in creating the directory scanner * * @return The parameters */ DirectoryScannerParameters getDirectoryScannerParameters(); /** * The raw parameters used in creating the ReporterManagerFactory * * @return The reporter configuration */ ReporterConfiguration getReporterConfiguration(); /** * Contains information about requested test suites or individual tests from the command line. * * @return The testRequest */ TestRequest getTestRequest(); /** * The class loader for the tests * * @return the classloader */ ClassLoader getTestClassLoader(); /** * The per-provider specific properties that may come all the way from the plugin's properties setting. * * @return the provider specific properties */ Properties getProviderProperties(); /** * Artifact info about the artifact used to autodetect provider * * @return The artifactinfo, or null if autodetect was not used. */ TestArtifactInfo getTestArtifactInfo(); } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/AbstractProvider.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/AbstractProvider.java0000644000175000017500000000251511533524371032471 0ustar tonytonypackage org.apache.maven.surefire.providerapi; /* * 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. */ /** * A provider base class that all providers should extend to shield themselves from interface changes * * @author Kristian Rosenvold */ public abstract class AbstractProvider implements SurefireProvider { private final Thread creatingThread = Thread.currentThread(); public void cancel() { synchronized ( creatingThread ) { if ( creatingThread.isAlive() ) { creatingThread.interrupt(); } } } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/SurefireProvider.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/SurefireProvider.java0000644000175000017500000000677411533524371032525 0ustar tonytonypackage org.apache.maven.surefire.providerapi; /* * 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. */ import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.suite.RunResult; import org.apache.maven.surefire.testset.TestSetFailedException; import java.util.Iterator; /** * Interface to be implemented by all Surefire providers. * * NOTE: This class is part of the proposed public api for surefire providers for 2.7. It may * still be subject to changes, even for minor revisions. * * The api covers this interface and all the types reachable from it. And nothing else. * *

* Called in one of three ways: * Forkmode = never: getSuites is not called, invoke is called with null parameter * Forkmode = once: getSuites is not called, invoke is called with null parameter * Forkmode anything else: getSuites is called, invoke is called on new provider instance for each item in getSuites * response. * * @author Kristian Rosenvold */ public interface SurefireProvider { /** * Determines the number of forks. * * Called when forkmode is different from "never" or "always", allows the provider to define * how to behave for the fork. * * @return An iterator that will trigger one fork per item */ Iterator getSuites(); /** * Runs a forked test * @param forkTestSet An item from the iterator in #getSuites. Will be null for forkmode never or always. * When this is non-null, the forked process will run only that test * and probably not scan the classpath * @return A result of the invocation * @throws org.apache.maven.surefire.report.ReporterException When reporting fails * @throws org.apache.maven.surefire.testset.TestSetFailedException When testset fails */ RunResult invoke( Object forkTestSet ) throws TestSetFailedException, ReporterException; /** * Makes an attempt at cancelling the current run, giving the provider a chance to notify * reporting that the remaining tests have been cancelled due to timeout. * * If the provider thinks it can terminate properly it is the responsibility of * the invoke method to return a RunResult with a booter code of failure. * * It is up to the provider to find out how to implement this method properly. * A provider may also choose to not do anything at all in this method, * which means surefire will kill the forked process soon afterwards anyway. * * Will be called on a different thread than the one calling invoke. */ // Todo: Need to think a lot closer about how/if this works and if there is a use case for it. // Killing a process is slightly non-deterministic // And it void cancel(); } surefire-2.10/surefire-api/src/main/java/org/apache/maven/plugin/0000755000175000017500000000000011645102475023474 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/plugin/surefire/0000755000175000017500000000000011645102475025320 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/plugin/surefire/report/0000755000175000017500000000000011645102475026633 5ustar tonytony././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootsurefire-2.10/surefire-api/src/main/java/org/apache/maven/plugin/surefire/report/FileReporterFactory.javasurefire-2.10/surefire-api/src/main/java/org/apache/maven/plugin/surefire/report/FileReporterFactory0000644000175000017500000001351311563247454032521 0ustar tonytonypackage org.apache.maven.plugin.surefire.report; /* * 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. */ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.maven.surefire.booter.StartupReportConfiguration; import org.apache.maven.surefire.report.AbstractConsoleReporter; import org.apache.maven.surefire.report.AbstractFileReporter; import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.report.DefaultDirectConsoleReporter; import org.apache.maven.surefire.report.MulticastingReporter; import org.apache.maven.surefire.report.Reporter; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.report.RunListener; import org.apache.maven.surefire.report.RunStatistics; import org.apache.maven.surefire.report.TestSetRunListener; import org.apache.maven.surefire.report.XMLReporter; import org.apache.maven.surefire.suite.RunResult; /** * Provides RunListener implementations to the providers. *

* Keeps a centralized count of test run results. * * @author Kristian Rosenvold */ public class FileReporterFactory implements ReporterFactory { private final ReporterConfiguration reporterConfiguration; private final RunStatistics globalStats = new RunStatistics(); private final MulticastingReporter multicastingReporter; private final StartupReportConfiguration reportConfiguration; public FileReporterFactory( StartupReportConfiguration reportConfiguration ) { this.reportConfiguration = reportConfiguration; this.reporterConfiguration = getReporterConfiguration(); multicastingReporter = new MulticastingReporter( instantiateReports() ); runStarting(); } private ReporterConfiguration getReporterConfiguration() { //noinspection BooleanConstructorCall return new ReporterConfiguration( reportConfiguration.getReportsDirectory(), new Boolean( reportConfiguration.isTrimStackTrace() ) ); } public RunListener createReporter() { return new TestSetRunListener( instantiateConsoleReporter(), instantiateFileReporter(), instantiateXmlReporter(), instantiateConsoleOutputFileReporter(), globalStats ); } private AbstractConsoleReporter instantiateConsoleReporter() { return reportConfiguration.instantiateConsoleReporter(); } private AbstractFileReporter instantiateFileReporter() { return reportConfiguration.instantiateFileReporter(); } private XMLReporter instantiateXmlReporter() { return reportConfiguration.instantiateXmlReporter(); } private Reporter instantiateConsoleOutputFileReporter() { return reportConfiguration.instantiateConsoleOutputFileReporterName( reporterConfiguration.getOriginalSystemOut() ); } private List instantiateReports() { List result = new ArrayList(); addIfNotNull( result, instantiateConsoleReporter() ); addIfNotNull( result, instantiateFileReporter() ); addIfNotNull( result, instantiateXmlReporter() ); addIfNotNull( result, instantiateConsoleOutputFileReporter() ); return result; } private void addIfNotNull( List result, Reporter reporter ) { if ( reporter != null ) { result.add( reporter ); } } public RunResult close() { runCompleted(); return globalStats.getRunResult(); } private ConsoleLogger createConsoleLogger() { return new DefaultDirectConsoleReporter( reporterConfiguration.getOriginalSystemOut() ); } public void runStarting() { final ConsoleLogger consoleReporter = createConsoleLogger(); consoleReporter.info( "" ); consoleReporter.info( "-------------------------------------------------------" ); consoleReporter.info( " T E S T S" ); consoleReporter.info( "-------------------------------------------------------" ); } private void runCompleted() { final ConsoleLogger logger = createConsoleLogger(); logger.info( "" ); logger.info( "Results :" ); logger.info( "" ); if ( globalStats.hadFailures() ) { multicastingReporter.writeMessage( "Failed tests: " ); for ( Iterator iterator = this.globalStats.getFailureSources().iterator(); iterator.hasNext(); ) { logger.info( " " + iterator.next() ); } logger.info( "" ); } if ( globalStats.hadErrors() ) { logger.info( "Tests in error: " ); for ( Iterator iterator = this.globalStats.getErrorSources().iterator(); iterator.hasNext(); ) { logger.info( " " + iterator.next() ); } logger.info( "" ); } logger.info( globalStats.getSummary() ); logger.info( "" ); } public RunStatistics getGlobalRunStatistics() { return globalStats; } } surefire-2.10/surefire-api/src/main/java/org/apache/maven/plugin/surefire/booterclient/0000755000175000017500000000000011645102475030011 5ustar tonytonysurefire-2.10/surefire-api/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/0000755000175000017500000000000011645102475031351 5ustar tonytonysurefire-2.10/surefire-api/src/main/resources/0000755000175000017500000000000011645102475020151 5ustar tonytonysurefire-2.10/surefire-api/src/main/resources/org/0000755000175000017500000000000011645102475020740 5ustar tonytonysurefire-2.10/surefire-api/src/main/resources/org/apache/0000755000175000017500000000000011645102475022161 5ustar tonytonysurefire-2.10/surefire-api/src/main/resources/org/apache/maven/0000755000175000017500000000000011645102475023267 5ustar tonytonysurefire-2.10/surefire-api/src/main/resources/org/apache/maven/surefire/0000755000175000017500000000000011645102475025113 5ustar tonytonysurefire-2.10/surefire-api/src/main/resources/org/apache/maven/surefire/surefire.properties0000644000175000017500000000220510567521075031057 0ustar tonytony# # 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. # setupFixtureFailed=Method setupFixture threw an exception prior to calling {0}. cleanupFixtureFailed=Method cleanupFixture threw an exception prior to calling {0}. testSetStarting=Test set starting. testSetCompletedNormally=Test set completed. testStarting=Test starting. executeException=Exception occurred. testSuccessful=Test succeeded. testSkipped=Test skipped.surefire-2.10/src/0000755000175000017500000000000011645102474012617 5ustar tonytonysurefire-2.10/src/site/0000755000175000017500000000000011645102474013563 5ustar tonytonysurefire-2.10/src/site/site.xml0000644000175000017500000000220511134110367015241 0ustar tonytony org.apache.maven.skins maven-stylus-skin 1.1

surefire-2.10/src/site/apt/0000755000175000017500000000000011645102474014347 5ustar tonytonysurefire-2.10/src/site/apt/maven-surefire-plugin/0000755000175000017500000000000011645102474020573 5ustar tonytonysurefire-2.10/src/site/apt/maven-surefire-plugin/index.apt0000644000175000017500000000225210563006476022414 0ustar tonytony ~~ 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. --------------------- Maven Surefire Plugin --------------------- The Maven Team --------------------- February 8, 2007 --------------------- Maven Surefire Plugin For documentation on the Maven Surefire Plugin, follow this link: {{{http://maven.apache.org/plugins/maven-surefire-plugin} http://maven.apache.org/plugins/maven-surefire-plugin}} surefire-2.10/src/site/apt/maven-failsafe-plugin/0000755000175000017500000000000011645102474020521 5ustar tonytonysurefire-2.10/src/site/apt/maven-failsafe-plugin/index.apt0000644000175000017500000000224411454404202022330 0ustar tonytony ~~ 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. --------------------- Maven Failsafe Plugin --------------------- The Maven Team --------------------- 2010-10-10 --------------------- Maven Failsafe Plugin For documentation on the Maven Failsafe Plugin, follow this link: {{{http://maven.apache.org/plugins/maven-failsafe-plugin} http://maven.apache.org/plugins/maven-failsafe-plugin}} surefire-2.10/src/site/apt/maven-surefire-report-plugin/0000755000175000017500000000000011645102474022104 5ustar tonytonysurefire-2.10/src/site/apt/maven-surefire-report-plugin/index.apt0000644000175000017500000000232510563010050023705 0ustar tonytony ~~ 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. --------------------- Maven Surefire Report Plugin --------------------- The Maven Team --------------------- February 8, 2007 --------------------- Maven Surefire Report Plugin For documentation on the Maven Surefire Report Plugin, follow this link: {{{http://maven.apache.org/plugins/maven-surefire-report-plugin} http://maven.apache.org/plugins/maven-surefire-report-plugin}}