package com.redhat.rcm.version.mgr; import static com.redhat.rcm.version.testutil.TestProjectFixture.getResourceFile; import static org.apache.commons.lang.StringUtils.join; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.assertThat; import java.io.File; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import org.apache.maven.mae.project.key.FullProjectKey; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import com.redhat.rcm.version.mgr.session.VersionManagerSession; import com.redhat.rcm.version.model.Project; import com.redhat.rcm.version.testutil.TestProjectFixture; public class VersionManagerTest extends AbstractVersionManagerTest { private static final String BASE = "pom-loading/"; @Rule public TestProjectFixture fix = new TestProjectFixture(); @Before public void setup() throws Exception { setupVersionManager(); } @Test( timeout = 500 ) public void avoidDupeWhenHasChildExplicitRelativeParent() throws Exception { final long start = System.currentTimeMillis(); final VersionManagerSession session = createVersionManagerSession(); final File pom = getResourceFile( BASE + "deloop-parent/pom.xml" ); final LinkedHashSet<Project> projects = vman.loadProjectWithModules( pom, session ); System.out.printf( "Projects:\n\n %s\n", join( projects, "\n " ) ); assertThat( projects, notNullValue() ); assertThat( projects.size(), equalTo( 2 ) ); final Set<FullProjectKey> keys = new HashSet<FullProjectKey>(); for ( final Project project : projects ) { keys.add( project.getKey() ); } assertThat( keys.contains( new FullProjectKey( "test", "deloop-parent", "1" ) ), equalTo( true ) ); assertThat( keys.contains( new FullProjectKey( "test", "deloop-child", "1" ) ), equalTo( true ) ); System.out.printf( "Elapsed: %d ms\n", ( System.currentTimeMillis() - start ) ); } @Test public void loadParentFromSubModulesDir() throws Exception { final VersionManagerSession session = createVersionManagerSession(); final File pom = getResourceFile( BASE + "parent-in-subdir/pom.xml" ); final LinkedHashSet<Project> projects = vman.loadProjectWithModules( pom, session ); System.out.printf( "Projects:\n\n %s\n", join( projects, "\n " ) ); assertThat( projects, notNullValue() ); assertThat( projects.size(), equalTo( 3 ) ); final Set<FullProjectKey> keys = new HashSet<FullProjectKey>(); for ( final Project project : projects ) { keys.add( project.getKey() ); } assertThat( keys.contains( new FullProjectKey( "test", "parent-in-subdir", "1" ) ), equalTo( true ) ); assertThat( keys.contains( new FullProjectKey( "test", "parent-in-subdir-parent", "1" ) ), equalTo( true ) ); assertThat( keys.contains( new FullProjectKey( "test", "parent-in-subdir-child", "1" ) ), equalTo( true ) ); } @Test public void loadParentViaRelativePathFromSubDir() throws Exception { final VersionManagerSession session = createVersionManagerSession(); final File pom = getResourceFile( BASE + "parent-in-relpath/pom.xml" ); final LinkedHashSet<Project> projects = vman.loadProjectWithModules( pom, session ); System.out.printf( "Projects:\n\n %s\n", join( projects, "\n " ) ); assertThat( projects, notNullValue() ); assertThat( projects.size(), equalTo( 3 ) ); final Set<FullProjectKey> keys = new HashSet<FullProjectKey>(); for ( final Project project : projects ) { keys.add( project.getKey() ); } assertThat( keys.contains( new FullProjectKey( "test", "parent-in-relpath", "1" ) ), equalTo( true ) ); assertThat( keys.contains( new FullProjectKey( "test", "parent-in-relpath-parent", "1" ) ), equalTo( true ) ); assertThat( keys.contains( new FullProjectKey( "test", "parent-in-relpath-child", "1" ) ), equalTo( true ) ); } }