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
41 private static final String cmdPrefix = "p4 -d " + workingDirectory.getAbsolutePath();
42
43 public void testGetCommandLine()
44 throws Exception
45 {
46 ScmFileSet files = new ScmFileSet( new File( "." ), Arrays.asList(
47 new File[]{ new File( "foo.xml" ), new File( "bar.xml" ) } ) );
48 testCommandLine( "scm:perforce://depot/projects/pathname", cmdPrefix + " submit -i", files );
49 }
50
51 public void testGetCommandLineAbsolutePaths()
52 throws Exception
53 {
54 ScmFileSet files = new ScmFileSet( new File( "." ).getAbsoluteFile(), Arrays.asList(
55 new File[]{ new File( "foo.xml" ).getAbsoluteFile(), new File( "bar.xml" ).getAbsoluteFile() } ) );
56 testCommandLine( "scm:perforce://depot/projects/pathname", cmdPrefix + " submit -i", files );
57 }
58
59 public void testGetCommandLineWithHost()
60 throws Exception
61 {
62 ScmFileSet files = new ScmFileSet( new File( "." ), Arrays.asList(
63 new File[]{ new File( "foo.xml" ), new File( "bar.xml" ) } ) );
64 testCommandLine( "scm:perforce:a:username@//depot/projects/pathname", cmdPrefix + " -p a -u username submit -i",
65 files );
66 }
67
68 public void testGetCommandLineWithHostAndPort()
69 throws Exception
70 {
71 ScmFileSet files = new ScmFileSet( new File( "." ), Arrays.asList(
72 new File[]{ new File( "foo.xml" ), new File( "bar.xml" ) } ) );
73 testCommandLine( "scm:perforce:myhost:1234:username@//depot/projects/pathname",
74 cmdPrefix + " -p myhost:1234 -u username submit -i", files );
75 }
76
77
78
79
80
81 private void testCommandLine( String scmUrl, String commandLine, ScmFileSet files )
82 throws Exception
83 {
84 ScmRepository repository = getScmManager().makeScmRepository( scmUrl );
85 PerforceScmProviderRepository svnRepository =
86 (PerforceScmProviderRepository) repository.getProviderRepository();
87 Commandline cl = PerforceCheckInCommand.createCommandLine( svnRepository, workingDirectory );
88
89 assertCommandLine( commandLine, null, cl );
90
91 String change = PerforceCheckInCommand.createChangeListSpecification( svnRepository, files, "Test checkin",
92 "//depot/projects/pathname", "testjob" );
93 assertContains( change, "//depot/projects/pathname/foo.xml" );
94 assertContains( change, "//depot/projects/pathname/bar.xml" );
95 assertContains( change, "Test checkin" );
96 assertContains( change, "testjob" );
97 }
98
99 private void assertContains( String block, String element )
100 {
101 if ( block.indexOf( element ) == -1 )
102 {
103 fail( "Block '" + block + "' does not contain element '" + element + "'" );
104 }
105 }
106 }