Author: olamy Date: Wed Apr 13 20:35:58 2011 New Revision: 1091909 URL: http://svn.apache.org/viewvc?rev=1091909&view=rev Log: add junit
Added: maven/shared/trunk/reporting-exec/src/test/ maven/shared/trunk/reporting-exec/src/test/java/ maven/shared/trunk/reporting-exec/src/test/java/org/ maven/shared/trunk/reporting-exec/src/test/java/org/apache/ maven/shared/trunk/reporting-exec/src/test/java/org/apache/maven/ maven/shared/trunk/reporting-exec/src/test/java/org/apache/maven/reporting/ maven/shared/trunk/reporting-exec/src/test/java/org/apache/maven/reporting/exec/ maven/shared/trunk/reporting-exec/src/test/java/org/apache/maven/reporting/exec/TestDefaultMavenReportExecutor.java (with props) Modified: maven/shared/trunk/.gitignore maven/shared/trunk/reporting-exec/pom.xml Modified: maven/shared/trunk/.gitignore URL: http://svn.apache.org/viewvc/maven/shared/trunk/.gitignore?rev=1091909&r1=1091908&r2=1091909&view=diff ============================================================================== --- maven/shared/trunk/.gitignore (original) +++ maven/shared/trunk/.gitignore Wed Apr 13 20:35:58 2011 @@ -2,6 +2,7 @@ atlassian-ide-plugin.xml *.iml *.iws +.idea target .classpath .project Modified: maven/shared/trunk/reporting-exec/pom.xml URL: http://svn.apache.org/viewvc/maven/shared/trunk/reporting-exec/pom.xml?rev=1091909&r1=1091908&r2=1091909&view=diff ============================================================================== --- maven/shared/trunk/reporting-exec/pom.xml (original) +++ maven/shared/trunk/reporting-exec/pom.xml Wed Apr 13 20:35:58 2011 @@ -84,13 +84,139 @@ <artifactId>maven-plugin-testing-harness</artifactId> <version>2.0-alpha-1</version> <scope>test</scope> + <exclusions> + <exclusion> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-compat</artifactId> + <version>${mavenVersion}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-embedder</artifactId> + <version>${mavenVersion}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-aether-provider</artifactId> + <version>${mavenVersion}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.sonatype.aether</groupId> + <artifactId>aether-connector-wagon</artifactId> + <version>1.7</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http-lightweight</artifactId> + <version>1.0-beta-6</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>r07</version> + <scope>test</scope> + </dependency> + + + <dependency> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-site-renderer</artifactId> + <version>1.1.4</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache.velocity</groupId> + <artifactId>velocity</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.sonatype.sisu</groupId> + <artifactId>sisu-inject-plexus</artifactId> + <version>2.2.0</version> + <scope>provided</scope> </dependency> + <dependency> + <groupId>org.sonatype.sisu</groupId> + <artifactId>sisu-inject-bean</artifactId> + <version>2.2.0</version> + <scope>provided</scope> + <exclusions> + <exclusion> + <groupId>org.sonatype.sisu</groupId> + <artifactId>sisu-guice</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.sonatype.sisu</groupId> + <artifactId>sisu-guice</artifactId> + <version>3.0.1</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-velocity</artifactId> + <version>1.1.8</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.apache.velocity</groupId> + <artifactId>velocity</artifactId> + <version>1.5</version> + </dependency> + + <dependency> + <groupId>velocity</groupId> + <artifactId>velocity</artifactId> + <version>1.5</version> + </dependency> + + </dependencies> <build> @@ -108,6 +234,18 @@ </pluginManagement> <plugins> <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.8</version> + <configuration> + <systemPropertyVariables> + <localRepository>${settings.localRepository}</localRepository> + <mavenHome>${env.M2_HOME}</mavenHome> + </systemPropertyVariables> + <forkMode>none</forkMode> + </configuration> + </plugin> + <plugin> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-component-metadata</artifactId> <version>1.5.5</version> @@ -119,6 +257,31 @@ </execution> </executions> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.0</version> + <executions> + <execution> + <goals> + <goal>enforce</goal> + </goals> + <id>ensure-no-container-api</id> + <configuration> + <rules> + <bannedDependencies> + <excludes> + <exclude>org.codehaus.plexus:plexus-component-api</exclude> + <exclude>org.codehaus.plexus:plexus-container-default</exclude> + </excludes> + <message>The new containers are not supported. You probably added a dependency that is missing the exclusions.</message> + </bannedDependencies> + </rules> + <fail>true</fail> + </configuration> + </execution> + </executions> + </plugin> </plugins> </build> </project> Added: maven/shared/trunk/reporting-exec/src/test/java/org/apache/maven/reporting/exec/TestDefaultMavenReportExecutor.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/reporting-exec/src/test/java/org/apache/maven/reporting/exec/TestDefaultMavenReportExecutor.java?rev=1091909&view=auto ============================================================================== --- maven/shared/trunk/reporting-exec/src/test/java/org/apache/maven/reporting/exec/TestDefaultMavenReportExecutor.java (added) +++ maven/shared/trunk/reporting-exec/src/test/java/org/apache/maven/reporting/exec/TestDefaultMavenReportExecutor.java Wed Apr 13 20:35:58 2011 @@ -0,0 +1,322 @@ +package org.apache.maven.reporting.exec; + +import com.google.common.collect.Lists; +import org.apache.maven.DefaultMaven; +import org.apache.maven.Maven; +import org.apache.maven.RepositoryUtils; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.cli.MavenCli; +import org.apache.maven.execution.DefaultMavenExecutionRequest; +import org.apache.maven.execution.DefaultMavenExecutionResult; +import org.apache.maven.execution.MavenExecutionRequest; +import org.apache.maven.execution.MavenExecutionRequestPopulator; +import org.apache.maven.execution.MavenExecutionResult; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.model.Build; +import org.apache.maven.plugin.testing.stubs.MavenProjectStub; +import org.apache.maven.project.MavenProject; +import org.apache.maven.repository.RepositorySystem; +import org.apache.maven.settings.Settings; +import org.apache.maven.settings.building.DefaultSettingsBuildingRequest; +import org.apache.maven.settings.building.SettingsBuilder; +import org.apache.maven.settings.building.SettingsBuildingException; +import org.apache.maven.settings.building.SettingsBuildingRequest; +import org.codehaus.plexus.ContainerConfiguration; +import org.codehaus.plexus.PlexusTestCase; +import org.codehaus.plexus.classworlds.ClassWorld; +import org.codehaus.plexus.classworlds.realm.ClassRealm; +import org.codehaus.plexus.classworlds.realm.DuplicateRealmException; +import org.codehaus.plexus.component.repository.exception.ComponentLookupException; +import org.codehaus.plexus.logging.Logger; +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.repository.RemoteRepository; +import org.sonatype.aether.repository.WorkspaceReader; +import org.sonatype.aether.repository.WorkspaceRepository; + +import java.io.File; +import java.io.FilenameFilter; +import java.net.MalformedURLException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * @author Olivier Lamy + */ +public class TestDefaultMavenReportExecutor + extends PlexusTestCase +{ + + MavenExecutionRequest request = null; + + ArtifactRepository localArtifactRepository; + + protected void customizeContainerConfiguration( final ContainerConfiguration containerConfiguration ) + { + String mavenHome = System.getProperty( "mavenHome" ); + File mavenLibs = new File( mavenHome, "lib" ); + File[] jars = mavenLibs.listFiles( new FilenameFilter() + { + public boolean accept( File dir, String name ) + { + return name.endsWith( ".jar" ); + } + } ); + + ClassWorld classWorld = new ClassWorld(); + try + { + ClassRealm classRealm = classWorld.newRealm( "foo" ); + for ( File file : jars ) + { + classRealm.addURL( file.toURI().toURL() ); + + } + containerConfiguration.setRealm( classRealm ); + } + catch ( MalformedURLException e ) + { + e.printStackTrace(); + } + catch ( DuplicateRealmException e ) + { + e.printStackTrace(); + } + + } + + public void testSimpleLookup() + throws Exception + { + MavenReportExecutor mavenReportExecutor = lookup( MavenReportExecutor.class ); + assertNotNull( mavenReportExecutor ); + } + + public void testSimpleBuildReports() + throws Exception + { + ClassLoader orig = Thread.currentThread().getContextClassLoader(); + ClassRealm realm = getContainer().getContainerRealm(); + System.out.println( "realm " + Arrays.asList( realm.getURLs() ) ); + Thread.currentThread().setContextClassLoader( realm ); + try + { + MavenReportExecutorRequest mavenReportExecutorRequest = new MavenReportExecutorRequest(); + + mavenReportExecutorRequest.setLocalRepository( getLocalArtifactRepository() ); + + MavenProject mavenProject = getMavenProject(); + + mavenReportExecutorRequest.setProject( mavenProject ); + + MavenSession mavenSession = getMavenSession( getLocalArtifactRepository(), mavenProject ); + mavenSession.setCurrentProject( mavenProject ); + mavenSession.setProjects( Lists.<MavenProject>newArrayList( mavenProject ) ); + mavenReportExecutorRequest.setMavenSession( mavenSession ); + + ReportPlugin reportPlugin = new ReportPlugin(); + reportPlugin.setGroupId( "org.apache.maven.plugins" ); + reportPlugin.setArtifactId( "maven-javadoc-plugin" ); + reportPlugin.setVersion( "2.8-SNAPSHOT" ); + + ReportSet reportSet = new ReportSet(); + reportSet.getReports().add( "javadoc" ); + reportSet.getReports().add( "test-javadoc" ); + reportPlugin.getReportSets().add( reportSet ); + + List<ReportPlugin> reportPlugins = Lists.newArrayList( reportPlugin ); + + mavenReportExecutorRequest.setReportPlugins( reportPlugins.toArray( new ReportPlugin[1] ) ); + + MavenReportExecutor mavenReportExecutor = lookup( MavenReportExecutor.class ); + + List<MavenReportExecution> mavenReportExecutions = + mavenReportExecutor.buildMavenReports( mavenReportExecutorRequest ); + + assertNotNull( mavenReportExecutions ); + System.out.println( "size " + mavenReportExecutions.size() ); + System.out.println( mavenReportExecutions.get( 0 ).getMavenReport().getOutputName() ); + } + finally + { + Thread.currentThread().setContextClassLoader( orig ); + } + } + + protected MavenSession getMavenSession( ArtifactRepository localRepository, final MavenProject mavenProject ) + throws Exception + { + request = new DefaultMavenExecutionRequest(); + request.setLocalRepository( localRepository ); + + request.setWorkspaceReader( new WorkspaceReader() + { + public WorkspaceRepository getRepository() + { + return new WorkspaceRepository(); + } + + public File findArtifact( Artifact artifact ) + { + return null; + } + + public List<String> findVersions( Artifact artifact ) + { + return Collections.emptyList(); + } + } ); + final Settings settings = getSettings(); + + getContainer().lookup( MavenExecutionRequestPopulator.class ).populateFromSettings( request, settings ); + + getContainer().lookup( MavenExecutionRequestPopulator.class ).populateDefaults( request ); + + request.setLocalRepository( getLocalArtifactRepository() ); + request.setLocalRepositoryPath( getLocalArtifactRepository().getBasedir() ); + request.setCacheNotFound( false ); + + request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_DEBUG ); + getContainer().lookup( Logger.class ).setThreshold( 0 ); + + request.setSystemProperties( System.getProperties() ); + + MavenExecutionResult result = new DefaultMavenExecutionResult(); + + RepositorySystemSession repositorySystemSession = buildRepositorySystemSession( request ); + + MavenSession mavenSession = new MavenSession( getContainer(), repositorySystemSession, request, result ) + { + @Override + public MavenProject getTopLevelProject() + { + return mavenProject; + } + + @Override + public Settings getSettings() + { + return settings; + } + + @Override + public List<MavenProject> getProjects() + { + return Lists.newArrayList( mavenProject ); + } + + @Override + public MavenProject getCurrentProject() + { + return mavenProject; + } + + }; + return mavenSession; + } + + private ArtifactRepository getLocalArtifactRepository() + throws Exception + { + if ( localArtifactRepository != null ) + { + return localArtifactRepository; + } + String localRepoPath = + System.getProperty( "localRepository", MavenCli.userMavenConfigurationHome.getPath() + "/repository" ); + + localArtifactRepository = lookup( RepositorySystem.class ).createLocalRepository( new File( localRepoPath ) ); + return localArtifactRepository; + } + + public Settings getSettings() + throws ComponentLookupException, SettingsBuildingException + { + + SettingsBuildingRequest settingsBuildingRequest = new DefaultSettingsBuildingRequest(); + + settingsBuildingRequest.setGlobalSettingsFile( MavenCli.DEFAULT_GLOBAL_SETTINGS_FILE ); + + settingsBuildingRequest.setUserSettingsFile( MavenCli.DEFAULT_USER_SETTINGS_FILE ); + + settingsBuildingRequest.getSystemProperties().putAll( System.getProperties() ); + + Settings settings = + getContainer().lookup( SettingsBuilder.class ).build( settingsBuildingRequest ).getEffectiveSettings(); + + return settings; + + } + + protected MavenProject getMavenProject() + { + MavenProjectStub mavenProjectStub = new MavenProjectStub() + { + @Override + public List<RemoteRepository> getRemotePluginRepositories() + { + if ( super.getRemotePluginRepositories() == null ) + { + return RepositoryUtils.toRepos( request.getRemoteRepositories() ); + } + return super.getRemotePluginRepositories(); + } + + @Override + public List getRemoteArtifactRepositories() + { + if ( super.getRemotePluginRepositories() == null ) + { + return RepositoryUtils.toRepos( request.getRemoteRepositories() ); + } + return super.getRemotePluginRepositories(); + } + + @Override + public String getName() + { + return "foo"; + } + + @Override + public String getVersion() + { + return "1.0-SNAPSHOT"; + } + + @Override + public boolean isExecutionRoot() + { + return true; + } + + @Override + public List getCompileSourceRoots() + { + return Lists.newArrayList("src/main/java"); + } + }; + + mavenProjectStub.setPackaging( "jar" ); + + Build build = new Build(); + + build.setOutputDirectory( "target" ); + + build.setSourceDirectory( "src/main/java" ); + + mavenProjectStub.setBuild( build ); + + return mavenProjectStub; + } + + private RepositorySystemSession buildRepositorySystemSession( MavenExecutionRequest request ) + throws ComponentLookupException + { + DefaultMaven defaultMaven = (DefaultMaven) getContainer().lookup( Maven.class ); + + return defaultMaven.newRepositorySession( request ); + } + +} Propchange: maven/shared/trunk/reporting-exec/src/test/java/org/apache/maven/reporting/exec/TestDefaultMavenReportExecutor.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/shared/trunk/reporting-exec/src/test/java/org/apache/maven/reporting/exec/TestDefaultMavenReportExecutor.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision