mirror of https://github.com/apache/maven.git
Add junittests for DefaultToolchain
Implement toString() for better log messages
This commit is contained in:
parent
3e133902fb
commit
32053c99d7
|
@ -20,6 +20,7 @@ package org.apache.maven.toolchain;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
|
@ -47,6 +48,11 @@ public abstract class DefaultToolchain // should have been AbstractToolchain...
|
||||||
|
|
||||||
private Logger logger;
|
private Logger logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param model the model, must not be {@code null}
|
||||||
|
* @param logger the logger, must not be {@code null}
|
||||||
|
*/
|
||||||
protected DefaultToolchain( ToolchainModel model, Logger logger )
|
protected DefaultToolchain( ToolchainModel model, Logger logger )
|
||||||
{
|
{
|
||||||
this.model = model;
|
this.model = model;
|
||||||
|
@ -54,6 +60,12 @@ public abstract class DefaultToolchain // should have been AbstractToolchain...
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param model the model, must not be {@code null}
|
||||||
|
* @param type the type
|
||||||
|
* @param logger the logger, must not be {@code null}
|
||||||
|
*/
|
||||||
protected DefaultToolchain( ToolchainModel model, String type, Logger logger )
|
protected DefaultToolchain( ToolchainModel model, String type, Logger logger )
|
||||||
{
|
{
|
||||||
this( model, logger );
|
this( model, logger );
|
||||||
|
@ -152,4 +164,27 @@ public abstract class DefaultToolchain // should have been AbstractToolchain...
|
||||||
}
|
}
|
||||||
return hashCode;
|
return hashCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append( "type:" ).append( getType() );
|
||||||
|
builder.append( '{' );
|
||||||
|
|
||||||
|
Iterator<Map.Entry<String, RequirementMatcher>> providesIter = provides.entrySet().iterator();
|
||||||
|
while ( providesIter.hasNext() )
|
||||||
|
{
|
||||||
|
Map.Entry<String, RequirementMatcher> provideEntry = providesIter.next();
|
||||||
|
builder.append( provideEntry.getKey() ).append( " = " ).append( provideEntry.getValue() );
|
||||||
|
if ( providesIter.hasNext() )
|
||||||
|
{
|
||||||
|
builder.append( ';' );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.append( '}' );
|
||||||
|
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,16 +54,22 @@ public final class RequirementMatcherFactory
|
||||||
this.provides = provides;
|
this.provides = provides;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean matches( String requirement )
|
public boolean matches( String requirement )
|
||||||
{
|
{
|
||||||
return provides.equalsIgnoreCase( requirement );
|
return provides.equalsIgnoreCase( requirement );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return provides;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class VersionMatcher
|
private static final class VersionMatcher
|
||||||
implements RequirementMatcher
|
implements RequirementMatcher
|
||||||
{
|
{
|
||||||
|
|
||||||
DefaultArtifactVersion version;
|
DefaultArtifactVersion version;
|
||||||
|
|
||||||
private VersionMatcher( String version )
|
private VersionMatcher( String version )
|
||||||
|
@ -71,6 +77,7 @@ public final class RequirementMatcherFactory
|
||||||
this.version = new DefaultArtifactVersion( version );
|
this.version = new DefaultArtifactVersion( version );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean matches( String requirement )
|
public boolean matches( String requirement )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -92,5 +99,11 @@ public final class RequirementMatcherFactory
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return version.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -19,21 +19,114 @@ package org.apache.maven.toolchain;
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
import org.apache.maven.toolchain.java.DefaultJavaToolChain;
|
import org.apache.maven.toolchain.java.DefaultJavaToolChain;
|
||||||
import org.apache.maven.toolchain.model.PersistedToolchains;
|
import org.apache.maven.toolchain.model.PersistedToolchains;
|
||||||
import org.apache.maven.toolchain.model.ToolchainModel;
|
import org.apache.maven.toolchain.model.ToolchainModel;
|
||||||
import org.apache.maven.toolchain.model.io.xpp3.MavenToolchainsXpp3Reader;
|
import org.apache.maven.toolchain.model.io.xpp3.MavenToolchainsXpp3Reader;
|
||||||
|
import org.codehaus.plexus.logging.Logger;
|
||||||
import org.codehaus.plexus.util.IOUtil;
|
import org.codehaus.plexus.util.IOUtil;
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
|
|
||||||
public class DefaultToolchainTest
|
public class DefaultToolchainTest
|
||||||
{
|
{
|
||||||
|
@Mock
|
||||||
|
private Logger logger;
|
||||||
|
|
||||||
private MavenToolchainsXpp3Reader reader = new MavenToolchainsXpp3Reader();
|
private MavenToolchainsXpp3Reader reader = new MavenToolchainsXpp3Reader();
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() throws Exception
|
||||||
|
{
|
||||||
|
MockitoAnnotations.initMocks( this );
|
||||||
|
}
|
||||||
|
|
||||||
|
private DefaultToolchain newDefaultToolchain( ToolchainModel model )
|
||||||
|
{
|
||||||
|
return new DefaultToolchain( model, logger )
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public String findTool( String toolName )
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private DefaultToolchain newDefaultToolchain( ToolchainModel model, String type )
|
||||||
|
{
|
||||||
|
return new DefaultToolchain( model, type, logger )
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public String findTool( String toolName )
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetModel()
|
||||||
|
{
|
||||||
|
ToolchainModel model = new ToolchainModel();
|
||||||
|
DefaultToolchain toolchain = newDefaultToolchain( model );
|
||||||
|
assertEquals( model, toolchain.getModel() );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetType()
|
||||||
|
{
|
||||||
|
ToolchainModel model = new ToolchainModel();
|
||||||
|
DefaultToolchain toolchain = newDefaultToolchain( model, "TYPE" );
|
||||||
|
assertEquals( "TYPE", toolchain.getType() );
|
||||||
|
|
||||||
|
model.setType( "MODEL_TYPE" );
|
||||||
|
toolchain = newDefaultToolchain( model );
|
||||||
|
assertEquals( "MODEL_TYPE", toolchain.getType() );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetLogger()
|
||||||
|
{
|
||||||
|
ToolchainModel model = new ToolchainModel();
|
||||||
|
DefaultToolchain toolchain = newDefaultToolchain( model );
|
||||||
|
assertEquals( logger, toolchain.getLog() );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMissingRequirementProperty()
|
||||||
|
{
|
||||||
|
ToolchainModel model = new ToolchainModel();
|
||||||
|
model.setType( "TYPE" );
|
||||||
|
DefaultToolchain toolchain = newDefaultToolchain( model );
|
||||||
|
|
||||||
|
assertFalse( toolchain.matchesRequirements( Collections.singletonMap( "name", "John Doe" ) ) );
|
||||||
|
verify( logger ).debug( "Toolchain type:TYPE{} is missing required property: name" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNonMatchingRequirementProperty()
|
||||||
|
{
|
||||||
|
ToolchainModel model = new ToolchainModel();
|
||||||
|
model.setType( "TYPE" );
|
||||||
|
DefaultToolchain toolchain = newDefaultToolchain( model );
|
||||||
|
toolchain.addProvideToken( "name", RequirementMatcherFactory.createExactMatcher( "Jane Doe" ) );
|
||||||
|
|
||||||
|
assertFalse( toolchain.matchesRequirements( Collections.singletonMap( "name", "John Doe" ) ) );
|
||||||
|
verify( logger ).debug( "Toolchain type:TYPE{name = Jane Doe} doesn't match required property: name" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testEquals() throws Exception
|
public void testEquals() throws Exception
|
||||||
|
@ -48,8 +141,8 @@ public class DefaultToolchainTest
|
||||||
PersistedToolchains jdks = reader.read( jdksIS );
|
PersistedToolchains jdks = reader.read( jdksIS );
|
||||||
PersistedToolchains jdksExtra = reader.read( jdksExtraIS );
|
PersistedToolchains jdksExtra = reader.read( jdksExtraIS );
|
||||||
|
|
||||||
DefaultJavaToolChain tc1 = new DefaultJavaToolChain( jdks.getToolchains().get( 0 ), null );
|
DefaultToolchain tc1 = new DefaultJavaToolChain( jdks.getToolchains().get( 0 ), null );
|
||||||
DefaultJavaToolChain tc2 = new DefaultJavaToolChain( jdksExtra.getToolchains().get( 0 ), null );
|
DefaultToolchain tc2 = new DefaultJavaToolChain( jdksExtra.getToolchains().get( 0 ), null );
|
||||||
|
|
||||||
assertTrue( tc1.equals( tc1 ) );
|
assertTrue( tc1.equals( tc1 ) );
|
||||||
assertFalse( tc1.equals( tc2 ) );
|
assertFalse( tc1.equals( tc2 ) );
|
||||||
|
|
|
@ -61,6 +61,12 @@ public class RequirementMatcherFactoryTest
|
||||||
assertFalse( matcher.matches( "(1.5.2,1.6)" ) );
|
assertFalse( matcher.matches( "(1.5.2,1.6)" ) );
|
||||||
assertTrue( matcher.matches( "(1.4,1.5.2]" ) );
|
assertTrue( matcher.matches( "(1.4,1.5.2]" ) );
|
||||||
assertTrue( matcher.matches( "(1.5,)" ) );
|
assertTrue( matcher.matches( "(1.5,)" ) );
|
||||||
|
assertEquals( "1.5.2", matcher.toString() );
|
||||||
|
|
||||||
|
// Ensure it is not printed as 1.5.0
|
||||||
|
matcher = RequirementMatcherFactory.createVersionMatcher( "1.5" );
|
||||||
|
assertEquals( "1.5", matcher.toString() );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue