1 package org.apache.maven.scm.tck.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.ChangeSet;
23 import org.apache.maven.scm.ScmFile;
24 import org.apache.maven.scm.ScmFileSet;
25 import org.apache.maven.scm.ScmFileStatus;
26 import org.apache.maven.scm.ScmTckTestCase;
27 import org.apache.maven.scm.ScmTestCase;
28 import org.apache.maven.scm.ScmVersion;
29 import org.apache.maven.scm.command.checkin.CheckInScmResult;
30 import org.apache.maven.scm.command.update.UpdateScmResult;
31 import org.apache.maven.scm.manager.ScmManager;
32 import org.apache.maven.scm.repository.ScmRepository;
33 import org.codehaus.plexus.util.StringUtils;
34
35 import java.io.File;
36 import java.util.Date;
37 import java.util.Iterator;
38 import java.util.List;
39 import java.util.TreeSet;
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 public abstract class UpdateCommandTckTest
60 extends ScmTckTestCase
61 {
62
63 private void commit( File workingDirectory, ScmRepository repository )
64 throws Exception
65 {
66 CheckInScmResult result = getScmManager().checkIn( repository, new ScmFileSet( workingDirectory ), "No msg" );
67
68 assertTrue( "Check result was successful, output: " + result.getCommandOutput(), result.isSuccess() );
69
70 List committedFiles = result.getCheckedInFiles();
71
72 assertEquals(
73 "Expected 3 files in the committed files list:\n " + StringUtils.join( committedFiles.iterator(), "\n " ),
74 3, committedFiles.size() );
75 }
76
77 public void testUpdateCommand()
78 throws Exception
79 {
80 ScmRepository repository = makeScmRepository( getScmUrl() );
81
82 checkOut( getUpdatingCopy(), repository );
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 ScmTestCase.makeFile( getWorkingCopy(), "/readme.txt", "changed readme.txt" );
99
100
101 ScmTestCase.makeFile( getWorkingCopy(), "/project.xml", "changed project.xml" );
102
103 addToWorkingTree( getWorkingCopy(), new File( "project.xml" ), repository );
104
105
106 ScmTestCase.makeDirectory( getWorkingCopy(), "/src/test/java/org" );
107
108 addToWorkingTree( getWorkingCopy(), new File( "src/test/java/org" ), repository );
109
110
111 ScmTestCase.makeFile( getWorkingCopy(), "/src/main/java/org/Foo.java" );
112
113 addToWorkingTree( getWorkingCopy(), new File( "src/main/java/org" ), repository );
114
115
116 addToWorkingTree( getWorkingCopy(), new File( "src/main/java/org/Foo.java" ), repository );
117
118 ScmManager scmManager = getScmManager();
119
120 Date lastUpdate = new Date( System.currentTimeMillis() );
121
122 Thread.sleep( 1000 );
123
124 commit( getWorkingCopy(), repository );
125
126
127
128
129
130 UpdateScmResult result = scmManager.update( repository, new ScmFileSet( getUpdatingCopy() ), lastUpdate );
131
132 assertNotNull( "The command returned a null result.", result );
133
134 assertResultIsSuccess( result );
135
136 List updatedFiles = result.getUpdatedFiles();
137
138 List changedFiles = result.getChanges();
139
140 assertEquals( "Expected 3 files in the updated files list " + updatedFiles, 3, updatedFiles.size() );
141
142 assertNotNull( "The changed files list is null", changedFiles );
143
144 assertFalse( "The changed files list is empty", changedFiles.isEmpty() );
145
146 for ( Iterator i = changedFiles.iterator(); i.hasNext(); )
147 {
148 ChangeSet changeSet = (ChangeSet) i.next();
149 System.out.println( changeSet.toXML() );
150 }
151
152
153
154
155
156 Iterator files = new TreeSet( updatedFiles ).iterator();
157
158
159 ScmFile file = (ScmFile) files.next();
160 assertPath( "/src/main/java/org/Foo.java", file.getPath() );
161
162 assertTrue( file.getStatus().isUpdate() || file.getStatus() == ScmFileStatus.ADDED );
163
164
165 file = (ScmFile) files.next();
166 assertPath( "/readme.txt", file.getPath() );
167 assertTrue( file.getStatus().isUpdate() );
168
169
170 file = (ScmFile) files.next();
171 assertPath( "/project.xml", file.getPath() );
172
173 assertTrue( file.getStatus().isUpdate() || file.getStatus() == ScmFileStatus.ADDED );
174 }
175 }