1 package org.apache.maven.scm.provider.cvslib.command.update;
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.ScmFile;
23 import org.apache.maven.scm.ScmFileSet;
24 import org.apache.maven.scm.ScmFileStatus;
25 import org.apache.maven.scm.ScmTestCase;
26 import org.apache.maven.scm.command.update.UpdateScmResult;
27 import org.apache.maven.scm.manager.ScmManager;
28 import org.apache.maven.scm.provider.cvslib.AbstractCvsScmTest;
29 import org.apache.maven.scm.provider.cvslib.CvsScmTestUtils;
30 import org.apache.maven.scm.repository.ScmRepository;
31 import org.codehaus.plexus.util.FileUtils;
32 import org.codehaus.plexus.util.IOUtil;
33
34 import java.io.File;
35 import java.io.FileWriter;
36
37
38
39
40
41
42 public class CvsUpdateCommandTest
43 extends AbstractCvsScmTest
44 {
45 private File repository;
46
47 private File workingDirectory;
48
49 private File assertionDirectory;
50
51
52
53
54 public void setUp()
55 throws Exception
56 {
57 super.setUp();
58
59 repository = getTestFile( "target/update-test/repository" );
60
61 workingDirectory = getTestFile( "target/update-test/working-directory" );
62
63 assertionDirectory = getTestFile( "target/update-test/assertion-directory" );
64
65 CvsScmTestUtils.initRepo( repository, workingDirectory, assertionDirectory );
66 }
67
68
69
70
71 protected String getModule()
72 {
73 return "test-repo/update";
74 }
75
76
77
78
79 public void testCvsUpdate()
80 throws Exception
81 {
82
83 FileWriter writer = null;
84 try
85 {
86 if ( !isSystemCmd( CvsScmTestUtils.CVS_COMMAND_LINE ) )
87 {
88 ScmTestCase.printSystemCmdUnavail( CvsScmTestUtils.CVS_COMMAND_LINE, getName() );
89 return;
90 }
91
92 ScmManager scmManager = getScmManager();
93
94 String scmUrl = CvsScmTestUtils.getScmUrl( repository, getModule() );
95
96
97 String arguments =
98 "-f -d " + repository.getAbsolutePath() + " " + "co -d " + workingDirectory.getName() + " "
99 + getModule();
100
101 CvsScmTestUtils.executeCVS( workingDirectory.getParentFile(), arguments );
102
103
104 arguments = "-f -d " + repository.getAbsolutePath() + " " + "co -d " + assertionDirectory.getName() + " "
105 + getModule();
106
107 CvsScmTestUtils.executeCVS( assertionDirectory.getParentFile(), arguments );
108
109
110 ScmRepository scmRepository = scmManager.makeScmRepository( scmUrl );
111
112 UpdateScmResult result = scmManager.update( scmRepository, new ScmFileSet( assertionDirectory ) );
113
114 assertNotNull( result );
115
116 if ( !result.isSuccess() )
117 {
118 System.out.println( "result.providerMessage: " + result.getProviderMessage() );
119
120 System.out.println( "result.commandOutput: " + result.getCommandOutput() );
121
122 fail( "Command failed" );
123 }
124
125 assertNull( result.getProviderMessage() );
126
127 assertNull( result.getCommandOutput() );
128
129 assertNotNull( result.getUpdatedFiles() );
130
131 assertEquals( 0, result.getUpdatedFiles().size() );
132
133
134 File fooJava = new File( workingDirectory, "Foo.java" );
135
136 String content = FileUtils.fileRead( fooJava );
137
138 writer = new FileWriter( fooJava );
139
140 writer.write( content + System.getProperty( "line.separator" ) );
141 writer.write( "extra line" );
142
143 writer.close();
144
145
146 writer = new FileWriter( new File( workingDirectory, "New.txt" ) );
147
148 writer.write( "new file" );
149
150 writer.close();
151
152 arguments = "-f -d " + repository.getAbsolutePath() + " add New.txt";
153
154 CvsScmTestUtils.executeCVS( workingDirectory, arguments );
155
156
157 arguments = "-f -d " + repository.getAbsolutePath() + " commit -m .";
158
159 CvsScmTestUtils.executeCVS( workingDirectory, arguments );
160
161
162 result = scmManager.update( scmRepository, new ScmFileSet( assertionDirectory ) );
163
164 assertNotNull( result );
165
166 if ( !result.isSuccess() )
167 {
168 System.out.println( "result.providerMessage: " + result.getProviderMessage() );
169
170 System.out.println( "result.commandOutput: " + result.getCommandOutput() );
171
172 fail( "Command failed" );
173 }
174
175 assertNull( result.getProviderMessage() );
176
177 assertNull( result.getCommandOutput() );
178
179 assertNotNull( result.getUpdatedFiles() );
180
181 assertEquals( 2, result.getUpdatedFiles().size() );
182
183 ScmFile file1 = result.getUpdatedFiles().get( 0 );
184
185 assertPath( "Foo.java", file1.getPath() );
186
187 assertEquals( ScmFileStatus.UPDATED, file1.getStatus() );
188
189 ScmFile file2 = result.getUpdatedFiles().get( 1 );
190
191 assertPath( "New.txt", file2.getPath() );
192
193 assertEquals( ScmFileStatus.UPDATED, file2.getStatus() );
194 }
195 finally
196 {
197 IOUtil.close( writer );
198 }
199 }
200 }