From 8ae58c83290200576e2a380106e95fdbf1a0aace Mon Sep 17 00:00:00 2001 From: Mathias de Riese Date: Wed, 28 Sep 2022 16:06:20 +0200 Subject: [PATCH] MDEPLOY-118: surefire test for `comparePomWithDeployed`. --- .../maven/plugins/deploy/DeployMojoTest.java | 463 ++++++++++++++---- .../deploy/stubs/ReleaseArtifactStub.java | 49 ++ .../plugin-config.xml | Bin 0 -> 3270 bytes .../plugin-config2.xml | Bin 0 -> 3272 bytes 4 files changed, 404 insertions(+), 108 deletions(-) create mode 100644 src/test/java/org/apache/maven/plugins/deploy/stubs/ReleaseArtifactStub.java create mode 100644 src/test/resources/unit/basic-deploy-compare-pom/plugin-config.xml create mode 100644 src/test/resources/unit/basic-deploy-compare-pom/plugin-config2.xml diff --git a/src/test/java/org/apache/maven/plugins/deploy/DeployMojoTest.java b/src/test/java/org/apache/maven/plugins/deploy/DeployMojoTest.java index f34abd06..8725d60d 100644 --- a/src/test/java/org/apache/maven/plugins/deploy/DeployMojoTest.java +++ b/src/test/java/org/apache/maven/plugins/deploy/DeployMojoTest.java @@ -26,6 +26,9 @@ import static org.mockito.Mockito.when; import java.io.File; +import java.nio.file.Files; +import java.nio.file.attribute.BasicFileAttributes; +import java.nio.file.attribute.FileTime; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -40,6 +43,7 @@ import org.apache.maven.plugin.testing.stubs.MavenProjectStub; import org.apache.maven.plugins.deploy.stubs.ArtifactRepositoryStub; import org.apache.maven.plugins.deploy.stubs.DeployArtifactStub; +import org.apache.maven.plugins.deploy.stubs.ReleaseArtifactStub; import org.apache.maven.project.MavenProject; import org.apache.maven.project.ProjectBuildingRequest; import org.codehaus.plexus.util.FileUtils; @@ -57,21 +61,21 @@ */ public class DeployMojoTest extends AbstractMojoTestCase -{ +{ private File remoteRepo; - + private File localRepo; - + private String LOCAL_REPO = getBasedir() + "/target/local-repo"; - + private String REMOTE_REPO = getBasedir() + "/target/remote-repo"; - + DeployArtifactStub artifact; - + MavenProjectStub project = new MavenProjectStub(); private MavenSession session; - + @InjectMocks private DeployMojo mojo; @@ -88,9 +92,9 @@ public void setUp() when( session.getRepositorySession() ).thenReturn( repositorySession ); remoteRepo = new File( REMOTE_REPO ); - - remoteRepo.mkdirs(); - + + remoteRepo.mkdirs(); + localRepo = new File( LOCAL_REPO ); if ( localRepo.exists() ) @@ -108,33 +112,33 @@ public void tearDown() throws Exception { super.tearDown(); - + if( remoteRepo.exists() ) { //FileUtils.deleteDirectory( remoteRepo ); } } - + public void testDeployTestEnvironment() throws Exception { File testPom = new File( getBasedir(), "target/test-classes/unit/basic-deploy-test/plugin-config.xml" ); - + DeployMojo mojo = ( DeployMojo ) lookupMojo( "deploy", testPom ); - + assertNotNull( mojo ); } - + public void testBasicDeploy() throws Exception { File testPom = new File( getBasedir(), "target/test-classes/unit/basic-deploy-test/plugin-config.xml" ); mojo = ( DeployMojo ) lookupMojo( "deploy", testPom ); - + MockitoAnnotations.initMocks( this ); - + assertNotNull( mojo ); ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class ); @@ -157,32 +161,32 @@ public void testBasicDeploy() setVariableValueToObject( mojo, "pluginContext", new ConcurrentHashMap<>() ); setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) ); - + artifact = ( DeployArtifactStub ) project.getArtifact(); String packaging = project.getPackaging(); - + assertEquals( "jar", packaging ); - - artifact.setFile( file ); - + + artifact.setFile( file ); + ArtifactRepositoryStub repo = getRepoStub( mojo ); assertNotNull( repo ); - + repo.setAppendToUrl( "basic-deploy-test" ); - + assertEquals( "deploy-test", repo.getId() ); assertEquals( "deploy-test", repo.getKey() ); assertEquals( "file", repo.getProtocol() ); assertEquals( "file://" + getBasedir() + "/target/remote-repo/basic-deploy-test", repo.getUrl() ); - + mojo.execute(); //check the artifact in local repository List expectedFiles = new ArrayList(); List fileList = new ArrayList(); - + expectedFiles.add( "org" ); expectedFiles.add( "apache" ); expectedFiles.add( "maven" ); @@ -197,23 +201,23 @@ public void testBasicDeploy() // extra Aether files expectedFiles.add( "resolver-status.properties" ); expectedFiles.add( "resolver-status.properties" ); - + File localRepo = new File( LOCAL_REPO, "" ); - + File[] files = localRepo.listFiles(); for (File file2 : files) { addFileToList(file2, fileList); } - + assertEquals( expectedFiles.size(), fileList.size() ); - assertEquals( 0, getSizeOfExpectedFiles( fileList, expectedFiles ) ); - + assertEquals( 0, getSizeOfExpectedFiles( fileList, expectedFiles ) ); + //check the artifact in remote repository expectedFiles = new ArrayList(); fileList = new ArrayList(); - + expectedFiles.add( "org" ); expectedFiles.add( "apache" ); expectedFiles.add( "maven" ); @@ -233,18 +237,18 @@ public void testBasicDeploy() expectedFiles.add( "maven-metadata.xml" ); expectedFiles.add( "maven-metadata.xml.md5" ); expectedFiles.add( "maven-metadata.xml.sha1" ); - + remoteRepo = new File( remoteRepo, "basic-deploy-test" ); - + files = remoteRepo.listFiles(); for (File file1 : files) { addFileToList(file1, fileList); } - + assertEquals( expectedFiles.size(), fileList.size() ); - assertEquals( 0, getSizeOfExpectedFiles( fileList, expectedFiles ) ); + assertEquals( 0, getSizeOfExpectedFiles( fileList, expectedFiles ) ); } public void testSkippingDeploy() @@ -288,7 +292,7 @@ public void testSkippingDeploy() assertEquals( "file://" + getBasedir() + "/target/remote-repo/basic-deploy-test", repo.getUrl() ); setVariableValueToObject( mojo, "skip", Boolean.TRUE.toString() ); - + mojo.execute(); File localRepo = new File( LOCAL_REPO, "" ); @@ -296,39 +300,39 @@ public void testSkippingDeploy() File[] files = localRepo.listFiles(); assertNull( files ); - + remoteRepo = new File( remoteRepo, "basic-deploy-test" ); files = remoteRepo.listFiles(); assertNull( files ); - } - + } + public void testBasicDeployWithPackagingAsPom() throws Exception { File testPom = new File( getBasedir(), "target/test-classes/unit/basic-deploy-pom/plugin-config.xml" ); - + mojo = ( DeployMojo ) lookupMojo( "deploy", testPom ); - + MockitoAnnotations.initMocks( this ); - + assertNotNull( mojo ); - + ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class ); when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest ); DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession(); repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) ); when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession ); when( session.getRepositorySession() ).thenReturn( repositorySession ); - + File pomFile = new File( getBasedir(), "target/test-classes/unit/basic-deploy-pom/target/" + "deploy-test-file-1.0-SNAPSHOT.pom" ); assertTrue( pomFile.exists() ); - + MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" ); project.setGroupId( "org.apache.maven.test" ); project.setArtifactId( "maven-deploy-test" ); @@ -338,20 +342,20 @@ public void testBasicDeployWithPackagingAsPom() setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) ); artifact = (DeployArtifactStub) project.getArtifact(); - + artifact.setArtifactHandlerExtension( project.getPackaging() ); - - artifact.setFile( pomFile ); - + + artifact.setFile( pomFile ); + ArtifactRepositoryStub repo = getRepoStub( mojo ); - + repo.setAppendToUrl( "basic-deploy-pom" ); - + mojo.execute(); - + List expectedFiles = new ArrayList(); List fileList = new ArrayList(); - + expectedFiles.add( "org" ); expectedFiles.add( "apache" ); expectedFiles.add( "maven" ); @@ -367,18 +371,18 @@ public void testBasicDeployWithPackagingAsPom() // as we are in SNAPSHOT the file is here twice expectedFiles.add( "maven-metadata.xml" ); expectedFiles.add( "maven-metadata.xml.md5" ); - expectedFiles.add( "maven-metadata.xml.sha1" ); + expectedFiles.add( "maven-metadata.xml.sha1" ); remoteRepo = new File( remoteRepo, "basic-deploy-pom" ); - + File[] files = remoteRepo.listFiles(); for (File file : files) { addFileToList(file, fileList); } - + assertEquals( expectedFiles.size(), fileList.size() ); - assertEquals( 0, getSizeOfExpectedFiles( fileList, expectedFiles ) ); + assertEquals( 0, getSizeOfExpectedFiles( fileList, expectedFiles ) ); } public void testDeployIfArtifactFileIsNull() @@ -386,18 +390,18 @@ public void testDeployIfArtifactFileIsNull() { File testPom = new File( getBasedir(), "target/test-classes/unit/basic-deploy-test/plugin-config.xml" ); - + DeployMojo mojo = ( DeployMojo ) lookupMojo( "deploy", testPom ); MockitoAnnotations.initMocks( this ); ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class ); when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest ); - + setVariableValueToObject( mojo, "session", session ); - + assertNotNull( mojo ); - + MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" ); project.setGroupId( "org.apache.maven.test" ); project.setArtifactId( "maven-deploy-test" ); @@ -407,11 +411,11 @@ public void testDeployIfArtifactFileIsNull() setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) ); artifact = (DeployArtifactStub) project.getArtifact(); - + artifact.setFile( null ); - + assertNull( artifact.getFile() ); - + try { mojo.execute(); @@ -423,7 +427,7 @@ public void testDeployIfArtifactFileIsNull() //expected } } - + public void testDeployWithAttachedArtifacts() throws Exception { @@ -432,11 +436,11 @@ public void testDeployWithAttachedArtifacts() "plugin-config.xml" ); mojo = ( DeployMojo ) lookupMojo( "deploy", testPom ); - + MockitoAnnotations.initMocks( this ); - + assertNotNull( mojo ); - + ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class ); when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest ); DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession(); @@ -453,23 +457,23 @@ public void testDeployWithAttachedArtifacts() setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) ); artifact = (DeployArtifactStub) project.getArtifact(); - + File file = new File( getBasedir(), "target/test-classes/unit/basic-deploy-with-attached-artifacts/target/" + "deploy-test-file-1.0-SNAPSHOT.jar" ); - + artifact.setFile( file ); - + ArtifactRepositoryStub repo = getRepoStub( mojo ); - - repo.setAppendToUrl( "basic-deploy-with-attached-artifacts" ); - + + repo.setAppendToUrl( "basic-deploy-with-attached-artifacts" ); + mojo.execute(); //check the artifacts in remote repository List expectedFiles = new ArrayList(); List fileList = new ArrayList(); - + expectedFiles.add( "org" ); expectedFiles.add( "apache" ); expectedFiles.add( "maven" ); @@ -488,7 +492,7 @@ public void testDeployWithAttachedArtifacts() // as we are in SNAPSHOT the file is here twice expectedFiles.add( "maven-metadata.xml" ); expectedFiles.add( "maven-metadata.xml.md5" ); - expectedFiles.add( "maven-metadata.xml.sha1" ); + expectedFiles.add( "maven-metadata.xml.sha1" ); expectedFiles.add( "attached-artifact-test-0" ); expectedFiles.add( "1.0-SNAPSHOT" ); expectedFiles.add( "maven-metadata.xml" ); @@ -500,76 +504,319 @@ public void testDeployWithAttachedArtifacts() // as we are in SNAPSHOT the file is here twice expectedFiles.add( "maven-metadata.xml" ); expectedFiles.add( "maven-metadata.xml.md5" ); - expectedFiles.add( "maven-metadata.xml.sha1" ); - + expectedFiles.add( "maven-metadata.xml.sha1" ); + remoteRepo = new File( remoteRepo, "basic-deploy-with-attached-artifacts" ); - + + File[] files = remoteRepo.listFiles(); + + for (File file1 : files) { + addFileToList(file1, fileList); + } + + assertEquals( expectedFiles.size(), fileList.size() ); + + assertEquals( 0, getSizeOfExpectedFiles( fileList, expectedFiles ) ); + } + + public void testComparePomWithDeployed() + throws Exception + { + File testPom = new File( getBasedir(), "target/test-classes/unit/basic-deploy-compare-pom/plugin-config.xml" ); + + mojo = ( DeployMojo ) lookupMojo( "deploy", testPom ); + + MockitoAnnotations.initMocks( this ); + + assertNotNull( mojo ); + + ProjectBuildingRequest buildingRequest = mock ( ProjectBuildingRequest.class ); + when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest ); + DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession(); + repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repositorySession, new LocalRepository( LOCAL_REPO ) ) ); + when( buildingRequest.getRepositorySession() ).thenReturn( repositorySession ); + when( session.getRepositorySession() ).thenReturn( repositorySession ); + + MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" ); + project.setGroupId( "org.apache.maven.test" ); + project.setArtifactId( "maven-deploy-test" ); + project.setVersion( "1.0" ); // SNAPSHOT would produce unique versions per run and therefore two POM files. + + setVariableValueToObject( mojo, "pluginContext", new ConcurrentHashMap<>() ); + setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) ); + + ReleaseArtifactStub artifact = ( ReleaseArtifactStub ) project.getArtifact(); + + File file = new File( getBasedir(), + "target/test-classes/unit/basic-deploy-compare-pom/target/" + + "deploy-test-file-1.0-SNAPSHOT.jar" ); + artifact.setFile( file ); + + ArtifactRepositoryStub repo = getRepoStub( mojo ); + + repo.setAppendToUrl( "basic-deploy-compare-pom" ); + + // This tests that the POM is deployed, if it is not present. + setVariableValueToObject( mojo, "comparePomWithDeployed", true ); + + mojo.execute(); + + + //check that the temporary local-repos are gone + String localRepoString = localRepo.toString(); + File[] lrFiles = localRepo.getParentFile().listFiles(); + for ( File lrFile : lrFiles ) + { + if ( lrFile.equals( localRepo ) ) continue; + assertFalse("Temporary local repo left over.", lrFile.toString().startsWith(localRepoString)); + } + + //check the artifacts in remote repository + List expectedFiles = new ArrayList(); + List fileList = new ArrayList(); + + expectedFiles.add( "org" ); + expectedFiles.add( "apache" ); + expectedFiles.add( "maven" ); + expectedFiles.add( "test" ); + expectedFiles.add( "maven-deploy-test" ); + expectedFiles.add( "1.0" ); + expectedFiles.add( "maven-metadata.xml" ); + expectedFiles.add( "maven-metadata.xml.md5" ); + expectedFiles.add( "maven-metadata.xml.sha1" ); + expectedFiles.add( "maven-deploy-test-1.0.jar" ); + expectedFiles.add( "maven-deploy-test-1.0.jar.md5" ); + expectedFiles.add( "maven-deploy-test-1.0.jar.sha1" ); + expectedFiles.add( "maven-deploy-test-1.0.pom" ); + expectedFiles.add( "maven-deploy-test-1.0.pom.md5" ); + expectedFiles.add( "maven-deploy-test-1.0.pom.sha1" ); + + remoteRepo = new File( remoteRepo, "basic-deploy-compare-pom" ); + File[] files = remoteRepo.listFiles(); for (File file1 : files) { addFileToList(file1, fileList); } - + + assertEquals( expectedFiles.size(), fileList.size() ); + + assertEquals( 0, getSizeOfExpectedFiles( fileList, expectedFiles ) ); + + File pomFile = new File(remoteRepo, "org/apache/maven/test/maven-deploy-test/1.0/maven-deploy-test-1.0.pom"); + FileTime pomFileTime = Files.readAttributes(pomFile.toPath(), BasicFileAttributes.class).lastModifiedTime(); + + + + // Start over again to deploy another artifact. + mojo = ( DeployMojo ) lookupMojo( "deploy", testPom ); + + MockitoAnnotations.initMocks( this ); + + assertNotNull( mojo ); + + project = (MavenProject) getVariableValueFromObject( mojo, "project" ); + project.setGroupId( "org.apache.maven.test" ); + project.setArtifactId( "maven-deploy-test" ); + project.setVersion( "1.0" ); // SNAPSHOT would produce unique versions per run and therefore two POM files. + + setVariableValueToObject( mojo, "pluginContext", new ConcurrentHashMap<>() ); + setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) ); + + artifact = ( ReleaseArtifactStub ) project.getArtifact(); + + artifact.setFile( file ); + + repo = getRepoStub( mojo ); + + repo.setAppendToUrl( "basic-deploy-compare-pom" ); + + setVariableValueToObject( mojo, "comparePomWithDeployed", true ); + artifact.setClassifier("secondArtifact"); + + mojo.execute(); + + + //check that the temporary local-repos are gone + lrFiles = localRepo.getParentFile().listFiles(); + for ( File lrFile : lrFiles ) + { + if ( lrFile.equals( localRepo ) ) continue; + assertFalse("Temporary local repo left over.", lrFile.toString().startsWith(localRepoString)); + } + + //check the artifacts in remote repository + expectedFiles = new ArrayList(); + fileList = new ArrayList(); + + expectedFiles.add( "org" ); + expectedFiles.add( "apache" ); + expectedFiles.add( "maven" ); + expectedFiles.add( "test" ); + expectedFiles.add( "maven-deploy-test" ); + expectedFiles.add( "1.0" ); + expectedFiles.add( "maven-metadata.xml" ); + expectedFiles.add( "maven-metadata.xml.md5" ); + expectedFiles.add( "maven-metadata.xml.sha1" ); + expectedFiles.add( "maven-deploy-test-1.0.jar" ); + expectedFiles.add( "maven-deploy-test-1.0.jar.md5" ); + expectedFiles.add( "maven-deploy-test-1.0.jar.sha1" ); + expectedFiles.add( "maven-deploy-test-1.0-secondArtifact.jar" ); + expectedFiles.add( "maven-deploy-test-1.0-secondArtifact.jar.md5" ); + expectedFiles.add( "maven-deploy-test-1.0-secondArtifact.jar.sha1" ); + expectedFiles.add( "maven-deploy-test-1.0.pom" ); + expectedFiles.add( "maven-deploy-test-1.0.pom.md5" ); + expectedFiles.add( "maven-deploy-test-1.0.pom.sha1" ); + + files = remoteRepo.listFiles(); + + for (File file1 : files) { + addFileToList(file1, fileList); + } + assertEquals( expectedFiles.size(), fileList.size() ); - assertEquals( 0, getSizeOfExpectedFiles( fileList, expectedFiles ) ); + assertEquals( 0, getSizeOfExpectedFiles( fileList, expectedFiles ) ); + + assertEquals( pomFileTime, Files.readAttributes(pomFile.toPath(), BasicFileAttributes.class).lastModifiedTime()); + + + + // Start over again to deploy a third artifact, but with a changed POM. + File testPom2 = new File( getBasedir(), "target/test-classes/unit/basic-deploy-compare-pom/plugin-config2.xml" ); + + mojo = ( DeployMojo ) lookupMojo( "deploy", testPom2 ); + + MockitoAnnotations.initMocks( this ); + + assertNotNull( mojo ); + + project = (MavenProject) getVariableValueFromObject( mojo, "project" ); + project.setGroupId( "org.apache.maven.test" ); + project.setArtifactId( "maven-deploy-test" ); + project.setVersion( "1.0" ); // SNAPSHOT would produce unique versions per run and therefore two POM files. + + setVariableValueToObject( mojo, "pluginContext", new ConcurrentHashMap<>() ); + setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) ); + + artifact = ( ReleaseArtifactStub ) project.getArtifact(); + + artifact.setFile( file ); + + repo = getRepoStub( mojo ); + + repo.setAppendToUrl( "basic-deploy-compare-pom" ); + + setVariableValueToObject( mojo, "comparePomWithDeployed", true ); + artifact.setClassifier("thirdArtifact"); + + try + { + mojo.execute(); + fail( "Should throw: Already deployed with a differing POM." ); + } + catch( MojoFailureException e ) + { + assertEquals( e.getMessage(), + "Project version org.apache.maven.test:maven-deploy-test:1.0 already deployed with a differing POM."); + assertEquals( e.getLongMessage(), + "Project version org.apache.maven.test:maven-deploy-test:1.0 already deployed and the POM " + + "'org.apache.maven.test:maven-deploy-test:pom:1.0' deployed in repository " + + "'file://" + remoteRepo.getPath() + "' differs from the POM that would be deployed. " + + "No artifacts will be deployed."); + } + + //check the artifacts in remote repository + expectedFiles = new ArrayList(); + fileList = new ArrayList(); + + expectedFiles.add( "org" ); + expectedFiles.add( "apache" ); + expectedFiles.add( "maven" ); + expectedFiles.add( "test" ); + expectedFiles.add( "maven-deploy-test" ); + expectedFiles.add( "1.0" ); + expectedFiles.add( "maven-metadata.xml" ); + expectedFiles.add( "maven-metadata.xml.md5" ); + expectedFiles.add( "maven-metadata.xml.sha1" ); + expectedFiles.add( "maven-deploy-test-1.0.jar" ); + expectedFiles.add( "maven-deploy-test-1.0.jar.md5" ); + expectedFiles.add( "maven-deploy-test-1.0.jar.sha1" ); + expectedFiles.add( "maven-deploy-test-1.0-secondArtifact.jar" ); + expectedFiles.add( "maven-deploy-test-1.0-secondArtifact.jar.md5" ); + expectedFiles.add( "maven-deploy-test-1.0-secondArtifact.jar.sha1" ); + expectedFiles.add( "maven-deploy-test-1.0.pom" ); + expectedFiles.add( "maven-deploy-test-1.0.pom.md5" ); + expectedFiles.add( "maven-deploy-test-1.0.pom.sha1" ); + + files = remoteRepo.listFiles(); + + for (File file1 : files) { + addFileToList(file1, fileList); + } + + assertEquals( expectedFiles.size(), fileList.size() ); + + assertEquals( 0, getSizeOfExpectedFiles( fileList, expectedFiles ) ); + + assertEquals( pomFileTime, Files.readAttributes(pomFile.toPath(), BasicFileAttributes.class).lastModifiedTime()); } - + @Ignore( "SCP is not part of Maven3 distribution. Aether handles transport extensions." ) public void _testBasicDeployWithScpAsProtocol() throws Exception { String originalUserHome = System.getProperty( "user.home" ); - + // FIX THE DAMN user.home BEFORE YOU DELETE IT!!! File altHome = new File( getBasedir(), "target/ssh-user-home" ); altHome.mkdirs(); - + System.out.println( "Testing user.home value for .ssh dir: " + altHome.getCanonicalPath() ); - + Properties props = System.getProperties(); props.setProperty( "user.home", altHome.getCanonicalPath() ); - + System.setProperties( props ); - + File testPom = new File( getBasedir(), "target/test-classes/unit/basic-deploy-scp/plugin-config.xml" ); - + mojo = ( DeployMojo ) lookupMojo( "deploy", testPom ); - + assertNotNull( mojo ); - + RepositorySystem repositorySystem = mock( RepositorySystem.class ); - + setVariableValueToObject( mojo, "repositorySystem", repositorySystem ); - + File file = new File( getBasedir(), "target/test-classes/unit/basic-deploy-scp/target/" + "deploy-test-file-1.0-SNAPSHOT.jar" ); assertTrue( file.exists() ); - + MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" ); setVariableValueToObject( mojo, "pluginContext", new ConcurrentHashMap<>() ); setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) ); artifact = (DeployArtifactStub) project.getArtifact(); - + artifact.setFile( file ); - + String altUserHome = System.getProperty( "user.home" ); - + if ( altUserHome.equals( originalUserHome ) ) { // this is *very* bad! throw new IllegalStateException( "Setting 'user.home' system property to alternate value did NOT work. Aborting test." ); } - + File sshFile = new File( altUserHome, ".ssh" ); - + System.out.println( "Testing .ssh dir: " + sshFile.getCanonicalPath() ); - + //delete first the .ssh folder if existing before executing the mojo if( sshFile.exists() ) { @@ -577,9 +824,9 @@ public void _testBasicDeployWithScpAsProtocol() } mojo.execute(); - + assertTrue( sshFile.exists() ); - + FileUtils.deleteDirectory( sshFile ); } @@ -707,7 +954,7 @@ public void testAltReleaseDeploymentRepository() assertEquals( new RemoteRepository.Builder("altReleaseDeploymentRepository", "default", "http://localhost").build(), mojo.getDeploymentRepository( project, null, "altReleaseDeploymentRepository::http://localhost", null )); } - + private void addFileToList( File file, List fileList ) { if( !file.isDirectory() ) @@ -724,22 +971,22 @@ private void addFileToList( File file, List fileList ) addFileToList(file1, fileList); } } - } - + } + private int getSizeOfExpectedFiles( List fileList, List expectedFiles ) { for( String fileName : fileList ) { - // translate uniqueVersion to -SNAPSHOT + // translate uniqueVersion to -SNAPSHOT fileName = fileName.replaceFirst( "-\\d{8}\\.\\d{6}-\\d+", "-SNAPSHOT" ); - + if( !expectedFiles.remove( fileName ) ) { fail( fileName + " is not included in the expected files" ); } } return expectedFiles.size(); - } + } private ArtifactRepositoryStub getRepoStub( Object mojo ) throws Exception diff --git a/src/test/java/org/apache/maven/plugins/deploy/stubs/ReleaseArtifactStub.java b/src/test/java/org/apache/maven/plugins/deploy/stubs/ReleaseArtifactStub.java new file mode 100644 index 00000000..98a3113b --- /dev/null +++ b/src/test/java/org/apache/maven/plugins/deploy/stubs/ReleaseArtifactStub.java @@ -0,0 +1,49 @@ +package org.apache.maven.plugins.deploy.stubs; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +public class ReleaseArtifactStub + extends DeployArtifactStub +{ + private String classifier; + + @Override + public String getVersion() + { + return "1.0"; + } + + public void setClassifier( String classifier ) + { + this.classifier = classifier; + } + + @Override + public String getClassifier() + { + return classifier; + } + + @Override + public boolean hasClassifier() + { + return classifier != null; + } +} diff --git a/src/test/resources/unit/basic-deploy-compare-pom/plugin-config.xml b/src/test/resources/unit/basic-deploy-compare-pom/plugin-config.xml new file mode 100644 index 0000000000000000000000000000000000000000..f294d4f343ced7b33cecaa0b9cc17df992a5f735 GIT binary patch literal 3270 zcmcguO>fgc5S=p;|G`8YKx!P|zyVCFP+C#71k|*k9-YsoO`H%rq!r??1MkgvvDa~0 zajC4t>zc=KlL-+v^MJ-LyYOeK&XGL)sHGLg9?@=hA^QbKuwdjLryee4e)O=PUn zb2*bkX+rBYboOLd9?K(Ge1g5Eu1}!d*Rv`92e6aD2LCVd97tOh5<|nDx{!?^TVrpj z@|(2CH5D2US~P>hG-QL z#>kj0+H#gw$6MH4L8n}W`r7(T*uj~vh`eB1Ag`2btgcyLb`9~*HBj@nIP3fpjaxh? zh=WKyC~-1Rt7s}JI?L1 z62yOme}|24jl9d$FMX43yjZskvAvNNuC-nvG>eW2VReZLw<#CL*zt@nQO^yX839n~>O6a|&wL^mzhVDOKBA{N)A-z$Q(SH7 zXqO*AFM#wE|NFRi zkIqh!9R)UlV$XPrw^Ct;Z)uwX)!9&F6nZ)EjaJSu1eO`1>){^Cr++wn@uKMFI*l6K z%XvqdEo0r4r}7h4W7s99IbD7MzZCaA?iqIJxrJx0_$Hx*>lW5zC#7bA-x1Zy5M6eS zeJ!w3d~SK!HoY2z`L_=1=-y`AE8(g^o?OF=F>j2_uGA;3*fjQ~bzE>5ZSwD7>w5}( zSsklN8;FyUt`~|b2gvO{WXM8J1p9s)VEXyiI6>~WQs$!j>SC0vCTEd-tMMJ`X5>Tk zK{c1Uh{|Z)jg>LU?}hsQAg8K&ck`*`b@N>aZjaHJT%J1hy43rhnPzs2sqI^>O3O2y OGJdI--vp+=5#?Wg)D(^Y literal 0 HcmV?d00001 diff --git a/src/test/resources/unit/basic-deploy-compare-pom/plugin-config2.xml b/src/test/resources/unit/basic-deploy-compare-pom/plugin-config2.xml new file mode 100644 index 0000000000000000000000000000000000000000..fbbb32f4058ec61496678732c5d587dcd4cb971d GIT binary patch literal 3272 zcmcguO>fgc5S=p;|G`8YKx!P|zyVCFP+C#71k|*k9-YsoO`H%rq!r??1MkgvvDa~0 zajC4t>zc=KlL-+v^MJ-LyYOeK&XGL)sHGLg9?@=hA^QbKuwdjLryee4e)O=PUn zb2*bkX+rBYboOLd9?K(Ge1g5Eu1}!d*Rv`92e6aD2LCVd97tOh5<|nDx{!?^TVrpj z@|(2CH5D2US~P>hG-QL z#>kj0+H#gw$6MH4L8n}W`r7(T*uj~vh`eB1Ag`2btgcyLb`9~*HBj@nIP3fpjaxh? zh=WKyC~-1Rt7s}JI?L1 z62yOme}|24jl9d$FMX43yjZskvAvNNuC-nvG>eW2VReZLw<#CL*zt@nQO^yX839n~>O6a|&wL^mzhVDOKBA{N)A-z$Q(SH7 zXqO*AFM#wE|NFRi zkIqh!9R)UlV$XPrw^Ct;Z)uwX)!9&F6nZ)EjaJSu1eO`1>){^Cr++wn@uKMFI*l6K z%XvqdEo0r4r}7h4W7s99IbD7MzZCaA?iqIJxrJx0_$Hx*>lW5zC#7bA-x1Zy5M6eS zeJ!w3d~SK!HoY2f3fk8WE9u^6+iT(KL8e^8k8y8|+^*Cst=K&FrFCp@C~Y$EVJmzJ zgjpY}OBZasF zbV4