package com.perforce.maven.scm.provider.p4.util; import java.io.File; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; public class P4UrlParserTest { @BeforeClass public static void beforeClass() { // we dont want external p4maven-settings.xml influence this test P4Utils.setP4MavenSettingsDirecotry( new File( "some-unknown-location" ) ); } @Test public void testUrlWithEnvHost() { String p4PortEnv = System.getenv( P4ScmUrl.P4PORT_KEY ); if ( p4PortEnv == null ) { return; } P4ScmUrl p4ScmUrl = P4ScmUrl.parse( "scm:p4://depot/project" ); Assert.assertEquals( "//depot/project", p4ScmUrl.getPath() ); Assert.assertNotNull( p4ScmUrl.getHost() ); } @Test public void testUrlWithSystemPropertyHost() { // this prevents concurrent junit test String currentP4PortProp = System.getProperty( P4ScmUrl.P4PORT_KEY ); if ( currentP4PortProp == null ) { currentP4PortProp = ""; } try { System.setProperty( P4ScmUrl.P4PORT_KEY, "host:3111" ); P4ScmUrl p4ScmUrl = P4ScmUrl.parse( "scm:p4:ssl:host://depot/project" ); Assert.assertEquals( "//depot/project", p4ScmUrl.getPath() ); Assert.assertEquals( "host", p4ScmUrl.getHost() ); Assert.assertNull( p4ScmUrl.getProtocol() ); Assert.assertEquals( 3111, p4ScmUrl.getPort() ); } finally { System.setProperty( P4ScmUrl.P4PORT_KEY, currentP4PortProp ); } } @Test( expected = IllegalArgumentException.class ) public void testBadProviderWithHostInfo() { P4ScmUrl.parse( "scm:p5:ssl:host://depot/project" ); } @Test( expected = IllegalArgumentException.class ) public void testBadProviderWithOutHostInfo() { P4ScmUrl.parse( "scm:p5://depot/project" ); } @Test( expected = IllegalArgumentException.class ) public void testBadProtocol() { P4ScmUrl.parse( "scm:p4:xxx:host://depot/project" ); } @Test public void testFullUrl() { String p4User = System.getenv( P4ScmUrl.P4USER_KEY ); String urlPart1 = "scm:p4:ssl:"; String urlPart2 = "host:1234://depot/project"; String url = urlPart1 + urlPart2; String urlWithUser = url; if ( null != p4User ) { urlWithUser = urlPart1 + p4User + "@" + urlPart2; } P4ScmUrl p4ScmUrl = P4ScmUrl.parse( url ); Assert.assertEquals( "//depot/project", p4ScmUrl.getPath() ); Assert.assertEquals( "host", p4ScmUrl.getHost() ); Assert.assertEquals( "ssl", p4ScmUrl.getProtocol() ); Assert.assertEquals( 1234, p4ScmUrl.getPort() ); Assert.assertEquals( p4User, p4ScmUrl.getUsername() ); Assert.assertEquals( urlWithUser, p4ScmUrl.getUrl() ); urlPart1 = "scm:p4:tcp:"; urlPart2 = "host://depot/project"; url = urlPart1 + urlPart2; urlWithUser = url; if ( null != p4User ) { urlWithUser = urlPart1 + p4User + "@" + urlPart2; } url = "scm:p4:tcp:host://depot/project"; p4ScmUrl = P4ScmUrl.parse( url ); Assert.assertEquals( "//depot/project", p4ScmUrl.getPath() ); Assert.assertEquals( "host", p4ScmUrl.getHost() ); Assert.assertEquals( "tcp", p4ScmUrl.getProtocol() ); Assert.assertEquals( 0, p4ScmUrl.getPort() ); Assert.assertEquals( p4User, p4ScmUrl.getUsername() ); Assert.assertEquals( urlWithUser, p4ScmUrl.getUrl() ); } @Test public void testUrlWithP4MavenSettings() { String p4User = System.getenv( P4ScmUrl.P4USER_KEY ); String urlPart1 = "scm:p4:"; String urlPart2 = "//depot/project"; String url = urlPart1 + urlPart2; String expectedUrl = "scm:p4:localhost:666://depot/project"; if ( null != p4User ) { expectedUrl = urlPart1 + p4User + "@localhost:666:" + urlPart2; } try { P4Utils.resetSettings(); P4Utils.setP4MavenSettingsDirecotry( new File( "src/test/data" ) ); P4ScmUrl p4ScmUrl = P4ScmUrl.parse( url ); Assert.assertEquals( "//depot/project", p4ScmUrl.getPath() ); Assert.assertEquals( "localhost", p4ScmUrl.getHost() ); Assert.assertNull( p4ScmUrl.getProtocol() ); Assert.assertEquals( 666, p4ScmUrl.getPort() ); Assert.assertEquals( expectedUrl, p4ScmUrl.getUrl() ); } finally { P4Utils.setP4MavenSettingsDirecotry( new File( "some-unknown-location" ) ); } } @Test public void testUrlWithRelativePath() throws Exception { String url = "scm:p4:ssl:user@host:1234://depot/project/module2/sub1/../sub1/../.."; P4ScmUrl p4ScmUrl = P4ScmUrl.parse( url ); Assert.assertEquals( "//depot/project", p4ScmUrl.getPath() ); Assert.assertEquals( "host", p4ScmUrl.getHost() ); Assert.assertEquals( "ssl", p4ScmUrl.getProtocol() ); Assert.assertEquals( 1234, p4ScmUrl.getPort() ); Assert.assertEquals( "scm:p4:ssl:user@host:1234://depot/project", p4ScmUrl.getUrl() ); } }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#2 | 19967 | jkovisto | Pull over numerous changes from @dantran's branch from change 16716. | ||
#1 | 10055 | Matt Attaway | Pull over numerous changes from @dantran's branch. | ||
//guest/dantran/p4maven/p4maven-provider/src/test/java/com/perforce/maven/scm/provider/p4/util/P4UrlParserTest.java | |||||
#4 | 9678 | dantran | add p4maven-settings test | ||
#3 | 9632 | dantran |
- use groupId:artifactId:version to test release automation - Implment p4maven-settings.xml's p4Port field |
||
#2 | 9628 | dantran | better P4ScmUrl parser | ||
#1 | 9590 | dantran |
- add option to fail tag when it already exist - add P4ScmUrl parser test - cleanup |