| package org.apache.maven.plugins.dependency.utils; |
| |
| /* |
| * 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. |
| */ |
| |
| import java.io.File; |
| import java.util.ArrayList; |
| import java.util.List; |
| import java.util.Random; |
| |
| import junit.framework.TestCase; |
| |
| import org.apache.maven.artifact.Artifact; |
| import org.apache.maven.artifact.DefaultArtifact; |
| import org.apache.maven.artifact.handler.ArtifactHandler; |
| import org.apache.maven.artifact.versioning.VersionRange; |
| import org.apache.maven.plugin.MojoExecutionException; |
| import org.apache.maven.plugin.logging.Log; |
| import org.apache.maven.plugin.testing.SilentLog; |
| import org.apache.maven.plugin.testing.stubs.DefaultArtifactHandlerStub; |
| import org.codehaus.plexus.util.StringUtils; |
| |
| /** |
| * @author brianf |
| */ |
| public class TestDependencyUtil |
| extends TestCase |
| { |
| List<Artifact> artifacts = new ArrayList<Artifact>(); |
| |
| Log log = new SilentLog(); |
| |
| File outputFolder; |
| |
| Artifact snap; |
| |
| Artifact snapResolvedVersion; |
| |
| Artifact release; |
| |
| Artifact sources; |
| |
| protected void setUp() |
| throws Exception |
| { |
| super.setUp(); |
| |
| ArtifactHandler ah = new DefaultArtifactHandlerStub( "jar", null ); |
| VersionRange vr = VersionRange.createFromVersion( "1.1" ); |
| release = new DefaultArtifact( "test", "one", vr, Artifact.SCOPE_COMPILE, "jar", "sources", ah, false ); |
| artifacts.add( release ); |
| |
| ah = new DefaultArtifactHandlerStub( "war", null ); |
| vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" ); |
| snap = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", null, ah, false ); |
| artifacts.add( snap ); |
| |
| ah = new DefaultArtifactHandlerStub( "war", null ); |
| vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" ); |
| snapResolvedVersion = |
| new DefaultArtifact( "test", "three", vr, Artifact.SCOPE_PROVIDED, "war", null, ah, false ); |
| snapResolvedVersion.setResolvedVersion( "1.1-20121003.035531-117" ); |
| artifacts.add( snapResolvedVersion ); |
| |
| ah = new DefaultArtifactHandlerStub( "war", null ); |
| vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" ); |
| sources = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "sources", "sources", ah, false ); |
| |
| // pick random output location |
| Random a = new Random(); |
| outputFolder = new File( "target/copy" + a.nextLong() + "/" ); |
| outputFolder.delete(); |
| assertFalse( outputFolder.exists() ); |
| } |
| |
| protected void tearDown() |
| { |
| |
| } |
| |
| public void testDirectoryName() |
| throws MojoExecutionException |
| { |
| File folder = new File( "target/a" ); |
| final Artifact artifact = artifacts.get( 0 ); |
| File name = DependencyUtil.getFormattedOutputDirectory( false, false, false, false, false, folder, artifact ); |
| // object is the same. |
| assertEquals( folder, name ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, false, false, true, false, folder, artifact ); |
| String expectedResult = folder.getAbsolutePath() + File.separatorChar + "test" + File.separatorChar + "one" |
| + File.separatorChar + "1.1"; |
| assertTrue( expectedResult.equalsIgnoreCase( name.getAbsolutePath() ) ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, true, false, false, false, folder, artifact ); |
| expectedResult = folder.getAbsolutePath() + File.separatorChar + "jars"; |
| assertTrue( expectedResult.equalsIgnoreCase( name.getAbsolutePath() ) ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( true, false, false, false, false, folder, artifact ); |
| expectedResult = folder.getAbsolutePath() + File.separatorChar + "compile"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| assertTrue( expectedResult.equalsIgnoreCase( name.getAbsolutePath() ) ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, false, folder, artifact ); |
| expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-1.1-sources-jar"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, true, folder, artifact ); |
| expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-sources-jar"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, true, true, false, false, folder, artifact ); |
| expectedResult = |
| folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar + "one-1.1-sources-jar"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, true, true, false, true, folder, artifact ); |
| expectedResult = |
| folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar + "one-sources-jar"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( true, false, true, false, true, folder, artifact ); |
| expectedResult = |
| folder.getAbsolutePath() + File.separatorChar + "compile" + File.separatorChar + "one-sources-jar"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| } |
| |
| public void testDirectoryName2() |
| throws MojoExecutionException |
| { |
| File folder = new File( "target/a" ); |
| final Artifact artifact = artifacts.get( 1 ); |
| File name = DependencyUtil.getFormattedOutputDirectory( false, false, false, false, false, folder, artifact ); |
| // object is the same. |
| assertEquals( folder, name ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, true, false, false, false, folder, artifact ); |
| String expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, false, false, true, false, folder, artifact ); |
| expectedResult = folder.getAbsolutePath() + File.separatorChar + "test" + File.separatorChar + "two" |
| + File.separatorChar + "1.1-SNAPSHOT"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, false, folder, artifact ); |
| expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT-war"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, true, true, false, false, folder, artifact ); |
| expectedResult = |
| folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two-1.1-SNAPSHOT-war"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, true, folder, artifact ); |
| expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-war"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, true, true, false, true, folder, artifact ); |
| expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two-war"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| } |
| |
| public void testDirectoryNameSources() |
| throws MojoExecutionException |
| { |
| File folder = new File( "target/a" ); |
| File name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, true, folder, sources ); |
| String expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-sources"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| |
| name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, false, folder, sources ); |
| expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT-sources"; |
| assertEquals( expectedResult, name.getAbsolutePath() ); |
| } |
| |
| public void testFileName() |
| throws MojoExecutionException |
| { |
| Artifact artifact = artifacts.get( 0 ); |
| |
| String name = DependencyUtil.getFormattedFileName( artifact, false ); |
| String expectedResult = "one-1.1-sources.jar"; |
| assertEquals( expectedResult, name ); |
| name = DependencyUtil.getFormattedFileName( artifact, true ); |
| expectedResult = "one-sources.jar"; |
| assertEquals( expectedResult, name ); |
| } |
| |
| public void testFileNameUseBaseVersion() |
| throws MojoExecutionException |
| { |
| Artifact artifact = snapResolvedVersion; |
| |
| String name = DependencyUtil.getFormattedFileName( artifact, false, false, true ); |
| String expectedResult = "three-1.1-SNAPSHOT.war"; |
| assertEquals( expectedResult, name ); |
| name = DependencyUtil.getFormattedFileName( artifact, false, false, false ); |
| expectedResult = "three-1.1-20121003.035531-117.war"; |
| assertEquals( expectedResult, name ); |
| } |
| |
| public void testTestJar() |
| { |
| ArtifactHandler ah = new DefaultArtifactHandlerStub( "test-jar", null ); |
| VersionRange vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" ); |
| Artifact artifact = |
| new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "test-jar", null, ah, false ); |
| |
| String name = DependencyUtil.getFormattedFileName( artifact, false ); |
| String expectedResult = "two-1.1-SNAPSHOT.jar"; |
| assertEquals( expectedResult, name ); |
| |
| } |
| |
| public void testFileNameClassifier() |
| throws MojoExecutionException |
| { |
| ArtifactHandler ah = new DefaultArtifactHandlerStub( "jar", "sources" ); |
| VersionRange vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" ); |
| Artifact artifact = |
| new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "jar", "sources", ah, false ); |
| |
| String name = DependencyUtil.getFormattedFileName( artifact, false ); |
| String expectedResult = "two-1.1-SNAPSHOT-sources.jar"; |
| assertEquals( expectedResult, name ); |
| |
| name = DependencyUtil.getFormattedFileName( artifact, true ); |
| expectedResult = "two-sources.jar"; |
| assertEquals( expectedResult, name ); |
| |
| name = DependencyUtil.getFormattedFileName( artifact, false, false, false, true ); |
| expectedResult = "two-1.1-SNAPSHOT.jar"; |
| assertEquals( expectedResult, name ); |
| |
| ah = new DefaultArtifactHandlerStub( "war", null ); |
| artifact = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false ); |
| name = DependencyUtil.getFormattedFileName( artifact, true ); |
| expectedResult = "two.war"; |
| assertEquals( expectedResult, name ); |
| } |
| |
| public void testFileNameClassifierWithFile() |
| throws MojoExecutionException |
| { |
| // specifically testing the default operation that getFormattedFileName |
| // returns |
| // the actual name of the file if available unless remove version is |
| // set. |
| ArtifactHandler ah = new DefaultArtifactHandlerStub( "war", "sources" ); |
| VersionRange vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" ); |
| Artifact artifact = |
| new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "sources", ah, false ); |
| File file = new File( "/target", "test-file-name.jar" ); |
| artifact.setFile( file ); |
| |
| String name = DependencyUtil.getFormattedFileName( artifact, false ); |
| String expectedResult = "two-1.1-SNAPSHOT-sources.war"; |
| assertEquals( expectedResult, name ); |
| |
| name = DependencyUtil.getFormattedFileName( artifact, false, false, false, true ); |
| expectedResult = "two-1.1-SNAPSHOT.war"; |
| assertEquals( expectedResult, name ); |
| |
| name = DependencyUtil.getFormattedFileName( artifact, true ); |
| expectedResult = "two-sources.war"; |
| assertEquals( expectedResult, name ); |
| |
| artifact = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false ); |
| name = DependencyUtil.getFormattedFileName( artifact, true ); |
| expectedResult = "two.war"; |
| assertEquals( expectedResult, name ); |
| |
| // test that we pickup the correct extension in the file name if set. |
| ah = new DefaultArtifactHandlerStub( "jar", null ); |
| artifact = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false ); |
| name = DependencyUtil.getFormattedFileName( artifact, true ); |
| expectedResult = "two.jar"; |
| assertEquals( expectedResult, name ); |
| |
| } |
| |
| public void testTokenizer() |
| { |
| String[] tokens = DependencyUtil.tokenizer( " alpha,bravo, charlie , delta kappa, theta" ); |
| String[] expected = new String[] { "alpha", "bravo", "charlie", "delta kappa", "theta" }; |
| // easier to see in the JUnit reports |
| assertEquals( StringUtils.join( expected, ", " ), StringUtils.join( tokens, ", " ) ); |
| assertEquals( expected.length, tokens.length ); |
| |
| tokens = DependencyUtil.tokenizer( " \r\n a, \t \n \r b \t \n \r" ); |
| assertEquals( 2, tokens.length ); |
| assertEquals( "a", tokens[0] ); |
| assertEquals( "b", tokens[1] ); |
| |
| tokens = DependencyUtil.tokenizer( null ); |
| assertEquals( 0, tokens.length ); |
| |
| tokens = DependencyUtil.tokenizer( " " ); |
| assertEquals( 0, tokens.length ); |
| } |
| } |