001package org.apache.maven.scm.provider.starteam.command.update;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022import org.apache.maven.scm.ScmFileSet;
023import org.apache.maven.scm.ScmTag;
024import org.apache.maven.scm.ScmTestCase;
025import org.apache.maven.scm.ScmVersion;
026import org.apache.maven.scm.provider.starteam.command.StarteamCommandLineUtils;
027import org.apache.maven.scm.provider.starteam.repository.StarteamScmProviderRepository;
028import org.apache.maven.scm.repository.ScmRepository;
029import org.codehaus.plexus.util.cli.Commandline;
030
031import java.io.File;
032
033/**
034 * @author <a href="mailto:dantran@gmail.com">Dan T. Tran</a>
035 */
036public class StarteamUpdateCommandTest
037    extends ScmTestCase
038{
039    public void testGetCommandLineWithWorkingDirectory()
040        throws Exception
041    {
042
043        ScmFileSet workingCopy = new ScmFileSet( this.getWorkingCopy() );
044
045        String workDirAbsolutePath = StarteamCommandLineUtils.toJavaPath( workingCopy.getBasedir().getAbsolutePath() );
046
047        String starteamUrl = "user:password@host:1234/project/view";
048        String mavenUrl = "scm:starteam:" + starteamUrl;
049
050        String expectedCmd = "stcmd co -x -nologo -stop" + " -p " + starteamUrl + " -fp " + workDirAbsolutePath +
051            " -is -merge -neverprompt -vl myTag -eol on";
052
053        testCommandLine( mavenUrl, workingCopy, new ScmTag( "myTag" ), expectedCmd );
054
055    }
056
057
058    public void testGetCommandLineWithFileOnRoot()
059        throws Exception
060    {
061        ScmFileSet workingCopy = new ScmFileSet( this.getWorkingCopy(), new File( "test.txt" ) );
062
063        String workDirAbsolutePath = StarteamCommandLineUtils.toJavaPath( workingCopy.getBasedir().getAbsolutePath() );
064
065        String starteamUrl = "user:password@host:1234/project/view";
066        String mavenUrl = "scm:starteam:" + starteamUrl;
067
068        String expectedCmd = "stcmd co -x -nologo -stop" + " -p " + starteamUrl + " -fp " + workDirAbsolutePath +
069            " -merge -neverprompt -vl myTag" + " -eol on test.txt";
070
071        testCommandLine( mavenUrl, workingCopy, new ScmTag( "myTag" ), expectedCmd );
072    }
073
074    public void testGetCommandLineWithFileInSubDir()
075        throws Exception
076    {
077        ScmFileSet workingCopy = new ScmFileSet( this.getWorkingCopy(), new File( "subdir/test.txt" ) );
078
079        String workDirAbsolutePath = StarteamCommandLineUtils.toJavaPath( workingCopy.getBasedir().getAbsolutePath() );
080
081        String starteamUrl = "user:password@host:1234/project/view";
082        String mavenUrl = "scm:starteam:" + starteamUrl;
083
084        String expectedCmd = "stcmd co -x -nologo -stop" + " -p " + starteamUrl + "/subdir" + " -fp " +
085            workDirAbsolutePath + "/subdir" + " -merge -neverprompt -vl myTag" + " -eol on test.txt";
086
087        testCommandLine( mavenUrl, workingCopy, new ScmTag( "myTag" ), expectedCmd );
088    }
089
090    // ----------------------------------------------------------------------
091    //
092    // ----------------------------------------------------------------------
093
094    private void testCommandLine( String scmUrl, ScmFileSet fileSet, ScmVersion version, String commandLine )
095        throws Exception
096    {
097        ScmRepository repo = getScmManager().makeScmRepository( scmUrl );
098
099        StarteamScmProviderRepository repository = (StarteamScmProviderRepository) repo.getProviderRepository();
100
101        Commandline cl = StarteamUpdateCommand.createCommandLine( repository, fileSet, version );
102
103        System.out.println( commandLine );
104
105        System.out.println( cl );
106
107        assertCommandLine( commandLine, null, cl );
108    }
109}