Search in sources :

Example 1 with DefaultReleaseEnvironment

use of org.apache.maven.shared.release.env.DefaultReleaseEnvironment in project maven-release by apache.

the class ForkedMavenExecutorTest method testEncryptSettings.

@Test
public void testEncryptSettings() throws Exception {
    // prepare
    File workingDirectory = getTestFile("target/working-directory");
    Process mockProcess = mock(Process.class);
    when(mockProcess.getInputStream()).thenReturn(mock(InputStream.class));
    when(mockProcess.getErrorStream()).thenReturn(mock(InputStream.class));
    when(mockProcess.getOutputStream()).thenReturn(mock(OutputStream.class));
    when(mockProcess.waitFor()).thenReturn(0);
    Commandline commandLineMock = mock(Commandline.class);
    when(commandLineMock.execute()).thenReturn(mockProcess);
    Arg valueArgument = mock(Arg.class);
    when(commandLineMock.createArg()).thenReturn(valueArgument);
    CommandLineFactory commandLineFactoryMock = mock(CommandLineFactory.class);
    when(commandLineFactoryMock.createCommandLine(isA(String.class))).thenReturn(commandLineMock);
    ForkedMavenExecutor executor = new ForkedMavenExecutor(mavenCrypto, commandLineFactoryMock);
    Settings settings = new Settings();
    Server server = new Server();
    server.setPassphrase("server_passphrase");
    server.setPassword("server_password");
    settings.addServer(server);
    Proxy proxy = new Proxy();
    proxy.setPassword("proxy_password");
    settings.addProxy(proxy);
    DefaultReleaseEnvironment releaseEnvironment = new DefaultReleaseEnvironment();
    releaseEnvironment.setSettings(settings);
    AbstractMavenExecutor executorSpy = spy(executor);
    SettingsXpp3Writer settingsWriter = mock(SettingsXpp3Writer.class);
    ArgumentCaptor<Settings> encryptedSettings = ArgumentCaptor.forClass(Settings.class);
    when(executorSpy.getSettingsWriter()).thenReturn(settingsWriter);
    executorSpy.executeGoals(workingDirectory, "validate", releaseEnvironment, false, null, null, new ReleaseResult());
    verify(settingsWriter).write(isA(Writer.class), encryptedSettings.capture());
    assertNotSame(settings, encryptedSettings.getValue());
    Server encryptedServer = encryptedSettings.getValue().getServers().get(0);
    assertEquals("server_passphrase", secDispatcher.decrypt(encryptedServer.getPassphrase()));
    assertEquals("server_password", secDispatcher.decrypt(encryptedServer.getPassword()));
    Proxy encryptedProxy = encryptedSettings.getValue().getProxies().get(0);
    assertEquals("proxy_password", secDispatcher.decrypt(encryptedProxy.getPassword()));
    File settingsSecurity = new File(System.getProperty("user.home"), ".m2/settings-security.xml");
    if (settingsSecurity.exists()) {
        assertNotEquals("server_passphrase", encryptedServer.getPassphrase());
        assertNotEquals("server_password", encryptedServer.getPassword());
        assertNotEquals("proxy_password", encryptedProxy.getPassword());
    }
}
Also used : Commandline(org.codehaus.plexus.util.cli.Commandline) Server(org.apache.maven.settings.Server) ReleaseResult(org.apache.maven.shared.release.ReleaseResult) InputStream(java.io.InputStream) OutputStream(java.io.OutputStream) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) Proxy(org.apache.maven.settings.Proxy) Arg(org.codehaus.plexus.util.cli.Arg) File(java.io.File) Settings(org.apache.maven.settings.Settings) SettingsXpp3Writer(org.apache.maven.settings.io.xpp3.SettingsXpp3Writer) Writer(java.io.Writer) SettingsXpp3Writer(org.apache.maven.settings.io.xpp3.SettingsXpp3Writer) Test(org.junit.Test)

Example 2 with DefaultReleaseEnvironment

use of org.apache.maven.shared.release.env.DefaultReleaseEnvironment in project maven-release by apache.

the class ForkedMavenExecutorTest method testExecutionWithArguments.

@Test
public void testExecutionWithArguments() throws Exception {
    File workingDirectory = getTestFile("target/working-directory");
    Process mockProcess = mock(Process.class);
    when(mockProcess.getInputStream()).thenReturn(mock(InputStream.class));
    when(mockProcess.getErrorStream()).thenReturn(mock(InputStream.class));
    when(mockProcess.getOutputStream()).thenReturn(mock(OutputStream.class));
    when(mockProcess.waitFor()).thenReturn(0);
    Commandline commandLineMock = mock(Commandline.class);
    when(commandLineMock.execute()).thenReturn(mockProcess);
    Arg argMock = mock(Arg.class);
    when(commandLineMock.createArg()).thenReturn(argMock);
    CommandLineFactory commandLineFactoryMock = mock(CommandLineFactory.class);
    when(commandLineFactoryMock.createCommandLine(endsWith("mvn"))).thenReturn(commandLineMock);
    ForkedMavenExecutor executor = new ForkedMavenExecutor(mavenCrypto, commandLineFactoryMock);
    // execute
    String arguments = "-DperformRelease=true -Dmaven.test.skip=true";
    executor.executeGoals(workingDirectory, "clean integration-test", new DefaultReleaseEnvironment(), false, arguments, null, new ReleaseResult());
    // verify
    verify(mockProcess).getInputStream();
    verify(mockProcess).getErrorStream();
    verify(mockProcess).getOutputStream();
    verify(mockProcess).waitFor();
    verify(commandLineMock).setWorkingDirectory(workingDirectory.getAbsolutePath());
    verify(commandLineMock).addEnvironment("MAVEN_TERMINATE_CMD", "on");
    verify(commandLineMock).addEnvironment(eq("M2_HOME"), isNull());
    verify(commandLineMock).execute();
    verify(commandLineMock, times(4)).createArg();
    verify(argMock).setValue("clean");
    verify(argMock).setValue("integration-test");
    verify(argMock).setValue("--batch-mode");
    verify(argMock).setLine("-DperformRelease=true -Dmaven.test.skip=true");
    verify(commandLineFactoryMock).createCommandLine(endsWith("mvn"));
    verifyNoMoreInteractions(mockProcess, commandLineMock, argMock, commandLineFactoryMock);
}
Also used : Commandline(org.codehaus.plexus.util.cli.Commandline) ReleaseResult(org.apache.maven.shared.release.ReleaseResult) InputStream(java.io.InputStream) OutputStream(java.io.OutputStream) Arg(org.codehaus.plexus.util.cli.Arg) File(java.io.File) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) Test(org.junit.Test)

Example 3 with DefaultReleaseEnvironment

use of org.apache.maven.shared.release.env.DefaultReleaseEnvironment in project maven-release by apache.

the class InvokerMavenExecutorTest method testEncryptSettings.

public void testEncryptSettings() throws Exception {
    InvokerMavenExecutor executor = new InvokerMavenExecutor(mavenCrypto);
    // prepare
    File workingDirectory = getTestFile("target/working-directory");
    workingDirectory.mkdirs();
    Settings settings = new Settings();
    Server server = new Server();
    server.setPassphrase("server_passphrase");
    server.setPassword("server_password");
    settings.addServer(server);
    Proxy proxy = new Proxy();
    proxy.setPassword("proxy_password");
    settings.addProxy(proxy);
    DefaultReleaseEnvironment releaseEnvironment = new DefaultReleaseEnvironment();
    releaseEnvironment.setSettings(settings);
    releaseEnvironment.setMavenHome(new File(System.getProperty("injectedMavenHome")));
    InvokerMavenExecutor executorSpy = spy(executor);
    SettingsXpp3Writer settingsWriter = mock(SettingsXpp3Writer.class);
    ArgumentCaptor<Settings> encryptedSettings = ArgumentCaptor.forClass(Settings.class);
    when(executorSpy.getSettingsWriter()).thenReturn(settingsWriter);
    try {
        executorSpy.executeGoals(workingDirectory, "validate", releaseEnvironment, false, null, null, new ReleaseResult());
    } catch (MavenExecutorException e) {
    }
    verify(settingsWriter).write(isA(Writer.class), encryptedSettings.capture());
    assertNotSame(settings, encryptedSettings.getValue());
    Server encryptedServer = encryptedSettings.getValue().getServers().get(0);
    assertEquals("server_passphrase", secDispatcher.decrypt(encryptedServer.getPassphrase()));
    assertEquals("server_password", secDispatcher.decrypt(encryptedServer.getPassword()));
    Proxy encryptedProxy = encryptedSettings.getValue().getProxies().get(0);
    assertEquals("proxy_password", secDispatcher.decrypt(encryptedProxy.getPassword()));
    File settingsSecurity = new File(System.getProperty("user.home"), ".m2/settings-security.xml");
    if (settingsSecurity.exists()) {
        assertNotEquals("server_passphrase", encryptedServer.getPassphrase());
        assertNotEquals("server_password", encryptedServer.getPassword());
        assertNotEquals("proxy_password", encryptedProxy.getPassword());
    }
}
Also used : Proxy(org.apache.maven.settings.Proxy) Server(org.apache.maven.settings.Server) ReleaseResult(org.apache.maven.shared.release.ReleaseResult) File(java.io.File) Settings(org.apache.maven.settings.Settings) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) SettingsXpp3Writer(org.apache.maven.settings.io.xpp3.SettingsXpp3Writer) Writer(java.io.Writer) SettingsXpp3Writer(org.apache.maven.settings.io.xpp3.SettingsXpp3Writer)

Example 4 with DefaultReleaseEnvironment

use of org.apache.maven.shared.release.env.DefaultReleaseEnvironment in project maven-release by apache.

the class AbstractEditModeRewritingReleasePhaseTestCase method testRewriteBasicPomWithEditModeException.

@Test
public void testRewriteBasicPomWithEditModeException() throws Exception {
    // prepare
    List<MavenProject> reactorProjects = createReactorProjects("basic-pom");
    ReleaseDescriptorBuilder builder = createDescriptorFromProjects(reactorProjects, "basic-pom");
    builder.setScmUseEditMode(true);
    mapNextVersion(builder, "groupId:artifactId");
    ScmProvider scmProviderMock = mock(ScmProvider.class);
    when(scmProviderMock.edit(isA(ScmRepository.class), isA(ScmFileSet.class))).thenThrow(new ScmException("..."));
    ScmManagerStub scmManager = new ScmManagerStub();
    DefaultScmRepositoryConfigurator configurator = (DefaultScmRepositoryConfigurator) lookup(ScmRepositoryConfigurator.class, "default");
    configurator.setScmManager(scmManager);
    scmManager.setScmProvider(scmProviderMock);
    // execute
    try {
        phase.execute(ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
        fail("Should have thrown an exception");
    } catch (ReleaseExecutionException e) {
        assertEquals("Check cause", ScmException.class, e.getCause().getClass());
    }
    // verify
    verify(scmProviderMock).edit(isA(ScmRepository.class), isA(ScmFileSet.class));
    verifyNoMoreInteractions(scmProviderMock);
}
Also used : ScmProvider(org.apache.maven.scm.provider.ScmProvider) ScmRepository(org.apache.maven.scm.repository.ScmRepository) ScmFileSet(org.apache.maven.scm.ScmFileSet) ScmException(org.apache.maven.scm.ScmException) MavenProject(org.apache.maven.project.MavenProject) ScmManagerStub(org.apache.maven.scm.manager.ScmManagerStub) DefaultScmRepositoryConfigurator(org.apache.maven.shared.release.scm.DefaultScmRepositoryConfigurator) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder) DefaultScmRepositoryConfigurator(org.apache.maven.shared.release.scm.DefaultScmRepositoryConfigurator) ScmRepositoryConfigurator(org.apache.maven.shared.release.scm.ScmRepositoryConfigurator) ReleaseExecutionException(org.apache.maven.shared.release.ReleaseExecutionException) Test(org.junit.Test)

Example 5 with DefaultReleaseEnvironment

use of org.apache.maven.shared.release.env.DefaultReleaseEnvironment in project maven-release by apache.

the class AbstractEditModeRewritingReleasePhaseTestCase method testRewritePomPluginDependencies.

@Test
public void testRewritePomPluginDependencies() throws Exception {
    List<MavenProject> reactorProjects = createReactorProjects("internal-snapshot-plugin-deps");
    ReleaseDescriptorBuilder builder = createDefaultConfiguration(reactorProjects, "internal-snapshot-plugin-deps");
    phase.execute(ReleaseUtils.buildReleaseDescriptor(builder), new DefaultReleaseEnvironment(), reactorProjects);
    assertTrue(comparePomFiles(reactorProjects));
}
Also used : MavenProject(org.apache.maven.project.MavenProject) DefaultReleaseEnvironment(org.apache.maven.shared.release.env.DefaultReleaseEnvironment) ReleaseDescriptorBuilder(org.apache.maven.shared.release.config.ReleaseDescriptorBuilder) Test(org.junit.Test)

Aggregations

DefaultReleaseEnvironment (org.apache.maven.shared.release.env.DefaultReleaseEnvironment)354 Test (org.junit.Test)346 ReleaseDescriptorBuilder (org.apache.maven.shared.release.config.ReleaseDescriptorBuilder)338 MavenProject (org.apache.maven.project.MavenProject)305 ScmManager (org.apache.maven.scm.manager.ScmManager)51 ScmManagerStub (org.apache.maven.shared.release.stubs.ScmManagerStub)44 ReleaseFailureException (org.apache.maven.shared.release.ReleaseFailureException)40 ScmProvider (org.apache.maven.scm.provider.ScmProvider)38 ScmFileSet (org.apache.maven.scm.ScmFileSet)31 ScmRepository (org.apache.maven.scm.repository.ScmRepository)31 ReleaseExecutionException (org.apache.maven.shared.release.ReleaseExecutionException)23 File (java.io.File)21 Prompter (org.codehaus.plexus.components.interactivity.Prompter)17 ScmFile (org.apache.maven.scm.ScmFile)16 ReleaseResult (org.apache.maven.shared.release.ReleaseResult)16 Properties (java.util.Properties)12 ReleasePhase (org.apache.maven.shared.release.phase.ReleasePhase)9 ReleasePhaseStub (org.apache.maven.shared.release.phase.ReleasePhaseStub)9 ScmVersion (org.apache.maven.scm.ScmVersion)7 CheckInScmResult (org.apache.maven.scm.command.checkin.CheckInScmResult)7