001package org.apache.maven.scm.provider.accurev.command.tag; 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 static org.apache.maven.scm.ScmFileMatcher.assertHasScmFile; 023import static org.hamcrest.Matchers.is; 024import static org.hamcrest.Matchers.notNullValue; 025import static org.junit.Assert.assertThat; 026import static org.mockito.Mockito.when; 027 028import java.io.File; 029import java.util.Collections; 030import java.util.List; 031 032import org.apache.maven.scm.CommandParameter; 033import org.apache.maven.scm.CommandParameters; 034import org.apache.maven.scm.ScmFileSet; 035import org.apache.maven.scm.ScmFileStatus; 036import org.apache.maven.scm.command.tag.TagScmResult; 037import org.apache.maven.scm.provider.accurev.AccuRevInfo; 038import org.apache.maven.scm.provider.accurev.AccuRevScmProviderRepository; 039import org.apache.maven.scm.provider.accurev.command.AbstractAccuRevCommandTest; 040import org.junit.Test; 041 042public class AccuRevTagCommandTest 043 extends AbstractAccuRevCommandTest 044{ 045 046 @Test 047 public void testTag() 048 throws Exception 049 { 050 final ScmFileSet testFileSet = new ScmFileSet( new File( "/my/workspace/project/dir" ) ); 051 final File basedir = testFileSet.getBasedir(); 052 053 final String basisStream = "basisStream"; 054 final AccuRevInfo info = new AccuRevInfo( basedir ); 055 info.setBasis( basisStream ); 056 057 AccuRevScmProviderRepository repo = new AccuRevScmProviderRepository(); 058 repo.setStreamName( "myStream" ); 059 repo.setAccuRev( accurev ); 060 repo.setProjectPath( "/project/dir" ); 061 062 when( accurev.info( basedir )).thenReturn(info); 063 064 when( accurev.mksnap( "theTagName", basisStream ) ).thenReturn( Boolean.TRUE ); 065 066 List<File> taggedFiles = Collections.singletonList( new File( "tagged/file" ) ); 067 when( accurev.statTag( "theTagName" ) ).thenReturn( taggedFiles ); 068 069 AccuRevTagCommand command = new AccuRevTagCommand( getLogger() ); 070 071 CommandParameters commandParameters = new CommandParameters(); 072 commandParameters.setString( CommandParameter.TAG_NAME, "theTagName" ); 073 TagScmResult result = command.tag( repo, testFileSet, commandParameters ); 074 075 assertThat( result.isSuccess(), is( true ) ); 076 assertThat( result.getTaggedFiles().size(), is( 1 ) ); 077 assertHasScmFile( result.getTaggedFiles(), "tagged/file", ScmFileStatus.TAGGED ); 078 079 } 080 081 @Test 082 public void testAccuRevError() 083 throws Exception 084 { 085 final ScmFileSet testFileSet = new ScmFileSet( new File( "/my/workspace/project/dir" ) ); 086 final File basedir = testFileSet.getBasedir(); 087 088 final String basisStream = "basisStream"; 089 final AccuRevInfo info = new AccuRevInfo( basedir ); 090 info.setBasis( basisStream ); 091 092 AccuRevScmProviderRepository repo = new AccuRevScmProviderRepository(); 093 repo.setStreamName( "myStream" ); 094 repo.setAccuRev( accurev ); 095 repo.setProjectPath( "/project/dir" ); 096 when( accurev.info( basedir )).thenReturn(info); 097 098 when( accurev.mksnap( "theTagName", basisStream ) ).thenReturn( Boolean.FALSE ); 099 AccuRevTagCommand command = new AccuRevTagCommand( getLogger() ); 100 101 CommandParameters commandParameters = new CommandParameters(); 102 commandParameters.setString( CommandParameter.TAG_NAME, "theTagName" ); 103 TagScmResult result = command.tag( repo, testFileSet, commandParameters ); 104 105 assertThat( result.isSuccess(), is( false ) ); 106 assertThat( result.getProviderMessage(), notNullValue() ); 107 108 } 109 110}