/******************************************************************************* * * Copyright (c) 2011 Oracle Corporation. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * * Anton Kozak * *******************************************************************************/ package hudson.scm.util; import hudson.scm.util.RevisionUtil; import hudson.scm.RevisionParameterAction; import hudson.scm.SubversionSCM; import java.util.Calendar; import java.util.Date; import junit.framework.TestCase; import org.tmatesoft.svn.core.wc.SVNRevision; /** * Test for {@link RevisionUtil} * <p/> * Date: 4/19/11 * * @author Anton Kozak */ public class RevisionUtilTest extends TestCase { private static final int REVISION_NUMBER = 13000; private static final String SVN_URL = "https://svn.java.net/svn/hudson~svn/trunk/hudson/test-projects/trivial-ant"; private static final String HEAD_REVISION = "HEAD"; private Date currDate = Calendar.getInstance().getTime(); protected void setUp() throws Exception { } public void testGetRevisionFromRemoteWithNumericRevision(){ SubversionSCM.ModuleLocation config = new SubversionSCM.ModuleLocation(SVN_URL + RevisionUtil.AT_SYMBOL + REVISION_NUMBER, null, null, false); SVNRevision revision = RevisionUtil.getRevision(config, null, null, null, null); assertTrue(revision.isValid()); assertEquals(revision.getNumber(), REVISION_NUMBER); assertEquals(config.getURL(), SVN_URL); } public void testGetRevisionFromRemoteWithHeadRevision(){ SubversionSCM.ModuleLocation config = new SubversionSCM.ModuleLocation(SVN_URL + RevisionUtil.AT_SYMBOL + HEAD_REVISION, null, null, false); SVNRevision revision = RevisionUtil.getRevision(config, null, null, null, null); assertTrue(revision.isValid()); assertEquals(revision, SVNRevision.HEAD); assertEquals(config.getURL(), SVN_URL); } public void testGetRevisionFromRemoteWithIncorrectRevision(){ SubversionSCM.ModuleLocation config = new SubversionSCM.ModuleLocation(SVN_URL + RevisionUtil.AT_SYMBOL + "FAKE", null, null, false); SVNRevision revision = RevisionUtil.getRevision(config, null, null, null, null); assertFalse(revision.isValid()); assertEquals(config.getURL(), SVN_URL+"@FAKE"); } public void testGetRevisionQueueTimePolicy(){ SubversionSCM.ModuleLocation config = new SubversionSCM.ModuleLocation(SVN_URL, null, null, false); SVNRevision revision = RevisionUtil.getRevision(config, null, SubversionSCM.RevisionPolicy.QUEUE_TIME, currDate, null); assertTrue(revision.isValid()); assertEquals(revision.getDate(), currDate); assertEquals(config.getURL(), SVN_URL); } public void testGetRevisionBuildTimePolicy(){ SubversionSCM.ModuleLocation config = new SubversionSCM.ModuleLocation(SVN_URL, null, null, false); SVNRevision revision = RevisionUtil.getRevision(config, null, SubversionSCM.RevisionPolicy.BUILD_TIME, null, currDate); assertTrue(revision.isValid()); assertEquals(revision.getDate(), currDate); assertEquals(config.getURL(), SVN_URL); } public void testGetRevisionHeadPolicy(){ SubversionSCM.ModuleLocation config = new SubversionSCM.ModuleLocation(SVN_URL, null, null, false); SVNRevision revision = RevisionUtil.getRevision(config, null, SubversionSCM.RevisionPolicy.HEAD, null, currDate); assertTrue(revision.isValid()); assertEquals(revision, SVNRevision.HEAD); assertEquals(config.getURL(), SVN_URL); } public void testGetRevisionRevisionParameterAction(){ SubversionSCM.ModuleLocation config = new SubversionSCM.ModuleLocation(SVN_URL, null, null, false); SubversionSCM.SvnInfo svnInfo = new SubversionSCM.SvnInfo(SVN_URL, REVISION_NUMBER); RevisionParameterAction action = new RevisionParameterAction(svnInfo); SVNRevision revision = RevisionUtil.getRevision(config, action, SubversionSCM.RevisionPolicy.HEAD, null, currDate); assertTrue(revision.isValid()); assertEquals(revision.getNumber(), REVISION_NUMBER); assertEquals(config.getURL(), SVN_URL); } }