You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Gerald Gloede (JIRA)" <ji...@codehaus.org> on 2012/08/02 13:18:21 UTC

[jira] (MCHECKSTYLE-163) Test classpath resolution fails in mvn check:check when includeTestSourceDirectory = true

    [ https://jira.codehaus.org/browse/MCHECKSTYLE-163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=305287#comment-305287 ] 

Gerald Gloede commented on MCHECKSTYLE-163:
-------------------------------------------

This issue doesn't seem to be completely fixed.
While the checkstyle:check goal is working as intended, the checkstyle:checkstyle goal still reports that checkstyle is unable to get class informations for exceptions which has been imported from a test-scope dependency.
You can reproduce this behavior using the earlier provided example project.
I tried maven-checkstyle-plugin version 2.7 and 2.9.1 and maven version 2.2.1 and 3.0.4
                
> Test classpath resolution fails in mvn check:check when includeTestSourceDirectory = true
> -----------------------------------------------------------------------------------------
>
>                 Key: MCHECKSTYLE-163
>                 URL: https://jira.codehaus.org/browse/MCHECKSTYLE-163
>             Project: Maven 2.x Checkstyle Plugin
>          Issue Type: Bug
>    Affects Versions: 2.6
>            Reporter: Chris Whelan
>            Assignee: Olivier Lamy
>             Fix For: 2.7
>
>         Attachments: MCHECKSTYLE-163.zip, resolveTestClasspath.patch
>
>
> When includeTestSourceDirectory=true is set for maven-checkstyle-plugin, the full test classpath should be made available to checkstyle.  Patch included to resolve issue by setting @requiresDependencyResolution to test.
> In DefaultCheckstyleExecutor.java the checker.setClassLoader() is configured using the classpath string from request.getProject().getTestClasspathElements() (see DefaultCheckstyleExecutor line 114).
> However, the CheckstyleViolationCheckMojo only has @requiresDependencyResolution compile which means that pom dependencies which have been declared as <scope>test</scope> are not returned by project.getTestClasspathElements().
> This is a particular issue for the checkstyle RedundantThrows check (http://checkstyle.sourceforge.net/config_coding.html#RedundantThrows) as it requires all Exceptions to be available on it's classpath.
> If code throws an Exception which has been imported from a maven <scope>test</scope> dependency, the exception will not be available on the classpath and this checkstyle check will fail.
> Example:
> Include junit as a test scope dependency in the project POM:
> <dependency>
>   <groupId>junit</groupId>
>   <artifactId>junit</artifactId>
>   <version>${junit.version}</version>
>   <scope>test</scope>
> </dependency>
> Throw any junit exception within project test code, e.g.:
> public class MyCustomTestRunner extends BlockJUnit4ClassRunner {
> 	public MyCustomTestRunner(final Class<?> klass) throws InitializationError {
> If RedundantThrows check is enabled, the following error will be thrown:
> [INFO] --- maven-checkstyle-plugin:2.7-SNAPSHOT:check (checkstyle-verify) @ sample-project ---
> [INFO] Starting audit...
> C:\Working\hg\sample-project\src\test\java\com\sample\support\junit\MyCustomTestRunner.java:28:72: warning: Unable to get class information for InitializationError.
> Audit done.
> [ERROR] MyCustomTestRunner.java[28:72] Unable to get class information for InitializationError.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira