package org.codehaus.mojo.build;
/**
* The MIT License
*
* Copyright (c) 2005 Learning Commons, University of Calgary
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
* associated documentation files (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, publish, distribute,
* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or
* substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
import java.io.File;
import java.text.DateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Locale;
import org.codehaus.plexus.PlexusTestCase;
public class TestCreateMojo
extends PlexusTestCase
{
protected void setUp()
throws Exception
{
//without this, locale test fails intermittenly depending timezone
System.setProperty( "user.timezone", "UTC" );
super.setUp();
}
public void testMessageFormat()
throws Exception
{
CreateMojo mojo = new CreateMojo();
mojo.setFormat( "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}." );
mojo.setItems( Arrays.asList( new Object[] { new Integer( 7 ), "timestamp", "a disturbance in the Force" } ) );
Locale currentLocale = Locale.getDefault();
try
{
Locale.setDefault( Locale.US );
mojo.execute();
String rev = mojo.getRevision();
System.out.println( "rev = " + rev );
assertTrue(
"Format didn't match.",
rev
.matches( "^At (\\d{1,2}:?){3} (AM|PM) on \\w{3} \\d{1,2}, \\d{4}, there was a disturbance in the Force on planet 7." ) );
}
finally
{
Locale.setDefault( currentLocale );
}
}
/**
* Test that dates are correctly formatted for different locales.
*/
public void testLocale()
throws Exception
{
Date date = new Date( 0 ); // the epoch
CreateMojo mojo = new CreateMojo();
mojo.setFormat( "{0,date}" );
mojo.setItems( Arrays.asList( new Object[] { date } ) );
mojo.execute();
assertEquals( DateFormat.getDateInstance( DateFormat.DEFAULT ).format( date ), mojo.getRevision() );
mojo.setLocale( "en" );
mojo.execute();
assertEquals( "Jan 1, 1970", mojo.getRevision() );
mojo.setLocale( "fi" );
mojo.execute();
assertEquals( "1.1.1970", mojo.getRevision() );
mojo.setLocale( "de" );
mojo.execute();
assertEquals( "01.01.1970", mojo.getRevision() );
}
public void testSequenceFormat()
throws Exception
{
CreateMojo mojo = new CreateMojo();
mojo.setBuildNumberPropertiesFileLocation( new File( getBasedir(), "target/buildNumber.properties" ) );
mojo.setFormat( "{0,number}.{1,number}.{2,number}" );
mojo.setItems( Arrays.asList( new Object[] { "buildNumber0", "buildNumber1", "buildNumber2" } ) );
File file = new File( getBasedir(), "target/buildNumber.properties" );
file.delete();
mojo.execute();
String rev = mojo.getRevision();
System.out.println( "rev = " + rev );
assertTrue( "Format didn't match.", rev.matches( "(\\d+\\.?){3}" ) );
assertTrue( file.exists() );
// for tests, we don't want this hanging around
file.delete();
}
public void testFilterBranchFromScmUrl()
{
CreateMojo mojo = new CreateMojo();
String scmUrlTrunk = "https://mifos.dev.java.net/svn/mifos/trunk";
assertEquals("trunk", mojo.filterBranchFromScmUrl(scmUrlTrunk));
String scmUrlBranch = "https://mifos.dev.java.net/svn/mifos/branches/v1.2.x";
assertEquals("branches/v1.2.x", mojo.filterBranchFromScmUrl(scmUrlBranch));
String scmUrlTag = "https://mifos.dev.java.net/svn/mifos/tags/v1.2.1";
assertEquals("tags/v1.2.1", mojo.filterBranchFromScmUrl(scmUrlTag));
}
}