Search in sources :

Example 1 with ScmManagerStub

use of org.apache.maven.shared.release.stubs.ScmManagerStub in project maven-release by apache.

the class CheckoutProjectFromScmTest method testExecuteMultiModuleWithDeepSubprojects.

@Test
public void testExecuteMultiModuleWithDeepSubprojects() throws Exception {
    // prepare
    ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder();
    File checkoutDirectory = getTestFile("target/checkout-test/multimodule-with-deep-subprojects");
    builder.setCheckoutDirectory(checkoutDirectory.getAbsolutePath());
    builder.setScmReleaseLabel("release-label");
    String sourceUrl = "file://localhost/tmp/scm-repo/trunk";
    String scmUrl = "scm:svn:" + sourceUrl;
    builder.setScmSourceUrl(scmUrl);
    ScmProvider scmProviderMock = mock(ScmProvider.class);
    SvnScmProviderRepository scmProviderRepository = new SvnScmProviderRepository(sourceUrl);
    ScmRepository repository = new ScmRepository("svn", scmProviderRepository);
    when(scmProviderMock.checkOut(eq(repository), argThat(new IsScmFileSetEquals(new ScmFileSet(checkoutDirectory))), argThat(new IsScmTagEquals(new ScmTag("release-label"))), argThat(new HasCommandParameter(CommandParameter.SHALLOW, true)))).thenReturn(new CheckOutScmResult("", null));
    ScmManagerStub stub = (ScmManagerStub) lookup(ScmManager.class);
    stub.setScmProvider(scmProviderMock);
    stub.addScmRepositoryForUrl(scmUrl, repository);
    String dir = "scm-commit/multimodule-with-deep-subprojects";
    List<MavenProject> reactorProjects = createReactorProjects(dir, dir, null);
    builder.setWorkingDirectory(getWorkingDirectory(dir).toString());
    // execute
    phase.execute(ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
    // verify
    assertEquals("", ReleaseUtils.buildReleaseDescriptor(builder).getScmRelativePathProjectDirectory());
    verify(scmProviderMock).checkOut(eq(repository), argThat(new IsScmFileSetEquals(new ScmFileSet(checkoutDirectory))), argThat(new IsScmTagEquals(new ScmTag("release-label"))), argThat(new HasCommandParameter(CommandParameter.SHALLOW, true)));
    verifyNoMoreInteractions(scmProviderMock);
}
Also used : ScmProvider(org.apache.maven.scm.provider.ScmProvider) ScmRepository(org.apache.maven.scm.repository.ScmRepository) ScmFileSet(org.apache.maven.scm.ScmFileSet) ScmManagerStub(org.apache.maven.shared.release.stubs.ScmManagerStub) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) MavenProject(org.apache.maven.project.MavenProject) ScmTag(org.apache.maven.scm.ScmTag) ScmManager(org.apache.maven.scm.manager.ScmManager) SvnScmProviderRepository(org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository) CheckOutScmResult(org.apache.maven.scm.command.checkout.CheckOutScmResult) File(java.io.File) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder) Test(org.junit.Test)

Example 2 with ScmManagerStub

use of org.apache.maven.shared.release.stubs.ScmManagerStub in project maven-release by apache.

the class CheckoutProjectFromScmTest method testExecuteFlatMultiModule.

@Test
public void testExecuteFlatMultiModule() throws Exception {
    // prepare
    ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder();
    File checkoutDirectory = getTestFile("target/checkout-test/flat-multi-module");
    builder.setCheckoutDirectory(checkoutDirectory.getAbsolutePath());
    builder.setScmReleaseLabel("release-label");
    String sourceUrl = "file://localhost/tmp/scm-repo/trunk/root-project";
    String scmUrl = "scm:svn:" + sourceUrl;
    builder.setScmSourceUrl(scmUrl);
    ScmProvider scmProviderMock = mock(ScmProvider.class);
    SvnScmProviderRepository scmProviderRepository = new SvnScmProviderRepository(sourceUrl);
    ScmRepository repository = new ScmRepository("svn", scmProviderRepository);
    when(scmProviderMock.checkOut(eq(repository), argThat(new IsScmFileSetEquals(new ScmFileSet(checkoutDirectory))), argThat(new IsScmTagEquals(new ScmTag("release-label"))), argThat(new HasCommandParameter(CommandParameter.SHALLOW, true)))).thenReturn(new CheckOutScmResult("", null));
    ScmManagerStub stub = (ScmManagerStub) lookup(ScmManager.class);
    stub.setScmProvider(scmProviderMock);
    stub.addScmRepositoryForUrl(scmUrl, repository);
    List<MavenProject> reactorProjects = createReactorProjects("rewrite-for-release/pom-with-parent-flat", "root-project");
    builder.setWorkingDirectory(getWorkingDirectory("rewrite-for-release/pom-with-parent-flat").toString());
    // execute
    phase.execute(ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
    // verify
    assertEquals("not found root-project but " + ReleaseUtils.buildReleaseDescriptor(builder).getScmRelativePathProjectDirectory(), "root-project", ReleaseUtils.buildReleaseDescriptor(builder).getScmRelativePathProjectDirectory());
    verify(scmProviderMock).checkOut(eq(repository), argThat(new IsScmFileSetEquals(new ScmFileSet(checkoutDirectory))), argThat(new IsScmTagEquals(new ScmTag("release-label"))), argThat(new HasCommandParameter(CommandParameter.SHALLOW, true)));
    verifyNoMoreInteractions(scmProviderMock);
}
Also used : ScmProvider(org.apache.maven.scm.provider.ScmProvider) ScmRepository(org.apache.maven.scm.repository.ScmRepository) ScmFileSet(org.apache.maven.scm.ScmFileSet) ScmManagerStub(org.apache.maven.shared.release.stubs.ScmManagerStub) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) MavenProject(org.apache.maven.project.MavenProject) ScmTag(org.apache.maven.scm.ScmTag) ScmManager(org.apache.maven.scm.manager.ScmManager) SvnScmProviderRepository(org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository) CheckOutScmResult(org.apache.maven.scm.command.checkout.CheckOutScmResult) File(java.io.File) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder) Test(org.junit.Test)

Example 3 with ScmManagerStub

use of org.apache.maven.shared.release.stubs.ScmManagerStub in project maven-release by apache.

the class AbstractRewritingReleasePhaseTestCase method testRewriteBasicPomWithScmRepoException.

@Test
public void testRewriteBasicPomWithScmRepoException() throws Exception {
    // prepare
    List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
    ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom");
    builder.setScmUseEditMode(true);
    builder.setScmSourceUrl("scm:svn:fail");
    mapNextVersion(builder, "groupId:artifactId");
    ScmManager scmManager = lookup(ScmManager.class);
    if (scmManager instanceof ScmManagerStub) {
        ((ScmManagerStub) scmManager).setException(new ScmRepositoryException("..."));
    }
    try {
        phase.execute(ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
        fail("Should have thrown an exception");
    } catch (ReleaseScmRepositoryException e) {
        assertNull("Check no additional cause", e.getCause());
    }
}
Also used : ScmRepositoryException(org.apache.maven.scm.repository.ScmRepositoryException) ReleaseScmRepositoryException(org.apache.maven.shared.release.scm.ReleaseScmRepositoryException) ReleaseScmRepositoryException(org.apache.maven.shared.release.scm.ReleaseScmRepositoryException) MavenProject(org.apache.maven.project.MavenProject) ScmManager(org.apache.maven.scm.manager.ScmManager) ScmManagerStub(org.apache.maven.shared.release.stubs.ScmManagerStub) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder) Test(org.junit.Test)

Example 4 with ScmManagerStub

use of org.apache.maven.shared.release.stubs.ScmManagerStub in project maven-release by apache.

the class AbstractRewritingReleasePhaseTestCase method testRewriteBasicPomWithNoSuchProviderException.

@Test
public void testRewriteBasicPomWithNoSuchProviderException() throws Exception {
    // prepare
    List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
    ReleaseDescriptorBuilder builder = createDescriptorFromBasicPom(reactorProjects, "basic-pom");
    builder.setScmUseEditMode(true);
    builder.setScmSourceUrl("scm:fail:path");
    mapNextVersion(builder, "groupId:artifactId");
    ScmManager scmManager = (ScmManager) lookup(ScmManager.class);
    if (scmManager instanceof ScmManagerStub) {
        ((ScmManagerStub) scmManager).setException(new NoSuchScmProviderException("..."));
        ;
    }
    // execute
    try {
        phase.execute(ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
        fail("Should have thrown an exception");
    } catch (ReleaseExecutionException e) {
        // verify
        assertEquals("Check cause", NoSuchScmProviderException.class, e.getCause().getClass());
    }
}
Also used : MavenProject(org.apache.maven.project.MavenProject) ScmManager(org.apache.maven.scm.manager.ScmManager) ScmManagerStub(org.apache.maven.shared.release.stubs.ScmManagerStub) NoSuchScmProviderException(org.apache.maven.scm.manager.NoSuchScmProviderException) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder) ReleaseExecutionException(org.apache.maven.shared.release.ReleaseExecutionException) Test(org.junit.Test)

Example 5 with ScmManagerStub

use of org.apache.maven.shared.release.stubs.ScmManagerStub in project maven-release by apache.

the class ScmCommitPreparationPhaseTest method testCommitDevelopment.

@Test
public void testCommitDevelopment() throws Exception {
    // prepare
    phase = (ReleasePhase) lookup(ReleasePhase.class, "scm-commit-development");
    ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder();
    List<MavenProject> reactorProjects = createReactorProjects();
    builder.setScmSourceUrl("scm-url");
    MavenProject rootProject = ReleaseUtil.getRootProject(reactorProjects);
    builder.setWorkingDirectory(rootProject.getFile().getParentFile().getAbsolutePath());
    builder.setScmReleaseLabel("release-label");
    ScmFileSet fileSet = new ScmFileSet(rootProject.getFile().getParentFile(), rootProject.getFile());
    ScmProvider scmProviderMock = mock(ScmProvider.class);
    when(scmProviderMock.checkIn(isA(ScmRepository.class), argThat(new IsScmFileSetEquals(fileSet)), isNull(ScmVersion.class), eq("[maven-release-manager] prepare for next development iteration"))).thenReturn(new CheckInScmResult("...", Collections.singletonList(new ScmFile(rootProject.getFile().getPath(), ScmFileStatus.CHECKED_IN))));
    ScmManagerStub stub = (ScmManagerStub) lookup(ScmManager.class);
    stub.setScmProvider(scmProviderMock);
    // execute
    phase.execute(ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
    // verify
    verify(scmProviderMock).checkIn(isA(ScmRepository.class), argThat(new IsScmFileSetEquals(fileSet)), isNull(ScmVersion.class), eq("[maven-release-manager] prepare for next development iteration"));
    verifyNoMoreInteractions(scmProviderMock);
}
Also used : ScmProvider(org.apache.maven.scm.provider.ScmProvider) ScmFileSet(org.apache.maven.scm.ScmFileSet) ScmRepository(org.apache.maven.scm.repository.ScmRepository) ScmManagerStub(org.apache.maven.shared.release.stubs.ScmManagerStub) CheckInScmResult(org.apache.maven.scm.command.checkin.CheckInScmResult) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) ScmVersion(org.apache.maven.scm.ScmVersion) ScmFile(org.apache.maven.scm.ScmFile) MavenProject(org.apache.maven.project.MavenProject) ScmManager(org.apache.maven.scm.manager.ScmManager) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder) Test(org.junit.Test)

Aggregations

ScmManagerStub (org.apache.maven.shared.release.stubs.ScmManagerStub)46 ReleaseDescriptorBuilder (org.apache.maven.shared.release.config.ReleaseDescriptorBuilder)44 DefaultReleaseEnvironment (org.apache.maven.shared.release.env.DefaultReleaseEnvironment)44 Test (org.junit.Test)44 ScmManager (org.apache.maven.scm.manager.ScmManager)43 MavenProject (org.apache.maven.project.MavenProject)40 ScmProvider (org.apache.maven.scm.provider.ScmProvider)32 ScmFileSet (org.apache.maven.scm.ScmFileSet)26 ScmRepository (org.apache.maven.scm.repository.ScmRepository)26 ScmFile (org.apache.maven.scm.ScmFile)14 ReleaseExecutionException (org.apache.maven.shared.release.ReleaseExecutionException)10 ScmVersion (org.apache.maven.scm.ScmVersion)7 SvnScmProviderRepository (org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository)7 File (java.io.File)6 CheckInScmResult (org.apache.maven.scm.command.checkin.CheckInScmResult)6 NoSuchScmProviderException (org.apache.maven.scm.manager.NoSuchScmProviderException)6 ScmRepositoryException (org.apache.maven.scm.repository.ScmRepositoryException)6 ReleaseScmRepositoryException (org.apache.maven.shared.release.scm.ReleaseScmRepositoryException)6 CommandParameters (org.apache.maven.scm.CommandParameters)5 ScmBranchParameters (org.apache.maven.scm.ScmBranchParameters)5