1 package org.apache.maven.scm.provider.perforce.command.checkin;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.scm.ScmFileSet;
23 import org.apache.maven.scm.ScmTestCase;
24 import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
25 import org.apache.maven.scm.repository.ScmRepository;
26 import org.codehaus.plexus.util.cli.Commandline;
27
28 import java.io.File;
29 import java.util.Arrays;
30
31
32
33
34
35
36 public class PerforceCheckInCommandTest
37 extends ScmTestCase
38 {
39 private static final File workingDirectory = getTestFile( "target/perforce-checkin-command-test" );
40 private static final String cmdPrefix = "p4 -d " + workingDirectory.getAbsolutePath();
41
42 public void testGetCommandLine()
43 throws Exception
44 {
45 testCommandLine( "scm:perforce://depot/projects/pathname", cmdPrefix + " submit -i" );
46 }
47
48 public void testGetCommandLineWithHost()
49 throws Exception
50 {
51 testCommandLine( "scm:perforce:a:username@//depot/projects/pathname", cmdPrefix + " -p a -u username submit -i" );
52 }
53
54 public void testGetCommandLineWithHostAndPort()
55 throws Exception
56 {
57 testCommandLine( "scm:perforce:myhost:1234:username@//depot/projects/pathname",
58 cmdPrefix + " -p myhost:1234 -u username submit -i" );
59 }
60
61
62
63
64
65 private void testCommandLine( String scmUrl, String commandLine )
66 throws Exception
67 {
68 ScmRepository repository = getScmManager().makeScmRepository( scmUrl );
69 PerforceScmProviderRepository svnRepository =
70 (PerforceScmProviderRepository) repository.getProviderRepository();
71 ScmFileSet files =
72 new ScmFileSet( new File( "." ),
73 Arrays.asList( new File[] { new File( "foo.xml" ), new File( "bar.xml" ) } ) );
74 Commandline cl = PerforceCheckInCommand.createCommandLine( svnRepository, workingDirectory );
75
76 assertCommandLine( commandLine, null, cl );
77
78 String change = PerforceCheckInCommand.createChangeListSpecification( svnRepository, files, "Test checkin",
79 "//depot/projects/pathname", "testjob" );
80 assertContains( change, "//depot/projects/pathname/foo.xml" );
81 assertContains( change, "//depot/projects/pathname/bar.xml" );
82 assertContains( change, "Test checkin" );
83 assertContains( change, "testjob" );
84 }
85
86 private void assertContains( String block, String element )
87 {
88 if ( block.indexOf( element ) == -1 )
89 {
90 fail( "Block '" + block + "' does not contain element '" + element + "'" );
91 }
92 }
93 }