source: trunk/UTestCases.pas

Last change on this file was 10, checked in by chronos, 21 months ago
  • Modified: General UTest unit moved into Common package.
File size: 6.5 KB
Line 
1unit UTestCases;
2
3interface
4
5uses
6 Classes, SysUtils, FileUtil, UTestCase, USubversion;
7
8type
9 { TTestCaseSvn }
10
11 TTestCaseSvn = class(TTestCase)
12 private
13 function CheckError(Text: string): Boolean;
14 protected
15 LastDir: string;
16 RepoDir: string;
17 WorkDir: string;
18 TestDir: string;
19 procedure Svn(Parameters: array of string);
20 procedure SvnAdmin(Parameters: array of string);
21 public
22 Subversion: TSubversion;
23 SubversionAdmin: TSubversionAdmin;
24 procedure Initialize; override;
25 procedure Run; override;
26 procedure Finalize; override;
27 constructor Create; override;
28 destructor Destroy; override;
29 end;
30
31 { TTestCaseAdd }
32
33 TTestCaseAdd = class(TTestCaseSvn)
34 procedure Run; override;
35 end;
36
37 { TTestCaseModify }
38
39 TTestCaseModify = class(TTestCaseSvn)
40 procedure Run; override;
41 end;
42
43 { TTestCaseUpdate }
44
45 TTestCaseUpdate = class(TTestCaseSvn)
46 procedure Run; override;
47 end;
48
49 { TTestCaseDelete }
50
51 TTestCaseDelete = class(TTestCaseSvn)
52 procedure Run; override;
53 end;
54
55 { TTestCaseDeleteUpdate }
56
57 TTestCaseDeleteUpdate = class(TTestCaseSvn)
58 procedure Run; override;
59 end;
60
61 { TTestCaseMerge }
62
63 TTestCaseMerge = class(TTestCaseSvn)
64 procedure Run; override;
65 end;
66
67 { TTestCaseUpdateMultiple }
68
69 TTestCaseUpdateMultiple = class(TTestCaseSvn)
70 procedure Run; override;
71 end;
72
73 { TTestCaseDeleteUpdateDuplicateFiles }
74
75 TTestCaseDeleteUpdateDuplicateFiles = class(TTestCaseSvn)
76 procedure Run; override;
77 end;
78
79implementation
80
81uses
82 USvnZero, UCommon;
83
84{ TTestCaseDeleteUpdateDuplicateFiles }
85
86procedure TTestCaseDeleteUpdateDuplicateFiles.Run;
87var
88 TestFile: string;
89 TestFile2: string;
90const
91 TestText = 'Some text';
92begin
93 TestFile := 'TestFile.txt';
94 TestFile2 := 'TestFile2.txt';
95 SaveStringToFile(TestText, TestFile);
96 SaveStringToFile(TestText, TestFile2);
97 Svn(['add', TestFile]);
98 Svn(['add', TestFile2]);
99 Svn(['commit', '-m', '"Commit message"']);
100 Svn(['delete', TestFile]);
101 Svn(['commit', '-m', '"Commit message 2"']);
102 Svn(['update', '-r', '1']);
103 Evaluate(LoadFileToStr(TestFile) = TestText);
104end;
105
106{ TTestCaseDeleteUpdate }
107
108procedure TTestCaseDeleteUpdate.Run;
109var
110 TestFile: string;
111 TestFile2: string;
112begin
113 TestFile := 'TestFile.txt';
114 TestFile2 := 'TestFile2.txt';
115 SaveStringToFile('Some text', TestFile);
116 Svn(['add', TestFile]);
117 Svn(['commit', '-m', '"Commit message"']);
118 Svn(['delete', TestFile]);
119 SaveStringToFile('File2 test', TestFile2);
120 Svn(['add', TestFile2]);
121 Svn(['commit', '-m', '"Commit message 2"']);
122 Svn(['delete', TestFile2]);
123 Svn(['commit', '-m', '"Commit message 3"']);
124 Svn(['update', '-r', '1']);
125 Svn(['update', '-r', '2']);
126 Svn(['update', '-r', '3']);
127 Svn(['update']);
128 Evaluate(True);
129end;
130
131{ TTestCaseSvn }
132
133procedure TTestCaseSvn.Svn(Parameters: array of string);
134begin
135 Subversion.ExecuteOutput(Parameters);
136 if CheckError(Subversion.ErrorOutput) then
137 TestResult := trFailed;
138end;
139
140procedure TTestCaseSvn.SvnAdmin(Parameters: array of string);
141begin
142 SubversionAdmin.ExecuteOutput(Parameters);
143 if CheckError(SubversionAdmin.ErrorOutput) then
144 TestResult := trFailed;
145end;
146
147procedure TTestCaseSvn.Initialize;
148begin
149 inherited;
150 LastDir := GetCurrentDir;
151 ChDir(TestDir);
152 SvnAdmin(['create', RepoDir]);
153 Svn(['checkout', 'file:///' + RepoDir, WorkDir]);
154 ChDir(WorkDir);
155end;
156
157function TTestCaseSvn.CheckError(Text: string): Boolean;
158begin
159 Result := Pos('svn: E', Text) > 0;
160end;
161
162procedure TTestCaseSvn.Run;
163begin
164end;
165
166procedure TTestCaseSvn.Finalize;
167begin
168 ChDir(LastDir);
169 DeleteDirectory(WorkDir, False);
170 DeleteDirectory(RepoDir, False);
171 inherited;
172end;
173
174constructor TTestCaseSvn.Create;
175begin
176 TestDir := GetTempDir(False) + 'SVNZero';
177 ForceDirectories(TestDir);
178 RepoDir := TestDir + DirectorySeparator + 'Repo';
179 WorkDir := TestDir + DirectorySeparator + 'Work';
180 //Subversion := TSubversion.Create;
181 Subversion := TSvnZero.Create;
182 SubversionAdmin := TSubversionAdmin.Create;
183end;
184
185destructor TTestCaseSvn.Destroy;
186begin
187 FreeAndNil(SubversionAdmin);
188 FreeAndNil(Subversion);
189 inherited;
190end;
191
192{ TTestCaseMerge }
193
194procedure TTestCaseMerge.Run;
195var
196 TestFile: string;
197begin
198 TestFile := 'TestFile.txt';
199 SaveStringToFile('First line' + LineEnding + 'Second line' + LineEnding + 'Third line', TestFile);
200 Svn(['add', TestFile]);
201 Svn(['commit', '-m', '"Commit message"']);
202 SaveStringToFile('First line' + LineEnding + 'Second line' + LineEnding + 'Third line 2', TestFile);
203 Svn(['commit', '-m', '"Commit message 2"']);
204 Svn(['update', '-r', '1', TestFile]);
205 SaveStringToFile('First line 2' + LineEnding + 'Second line' + LineEnding + 'Third line', TestFile);
206 Svn(['update', TestFile]);
207 Svn(['commit', '-m', '"Commit message 3"']);
208 Evaluate(True);
209end;
210
211procedure TTestCaseAdd.Run;
212var
213 TestFile: string;
214begin
215 TestFile := 'TestFile.txt';
216 SaveStringToFile('Some text', TestFile);
217 Svn(['add', TestFile]);
218 Svn(['commit', '-m', '"Commit message"']);
219 Evaluate(True);
220end;
221
222procedure TTestCaseModify.Run;
223var
224 TestFile: string;
225begin
226 TestFile := 'TestFile.txt';
227 SaveStringToFile('Some text', TestFile);
228 Svn(['add', TestFile]);
229 Svn(['commit', '-m', '"Commit message"']);
230 SaveStringToFile('Different text', TestFile);
231 Svn(['commit', '-m', '"Commit message 2"']);
232 Evaluate(True);
233end;
234
235procedure TTestCaseUpdate.Run;
236var
237 TestFile: string;
238begin
239 TestFile := 'TestFile.txt';
240 SaveStringToFile('Some text', TestFile);
241 Svn(['add', TestFile]);
242 Svn(['commit', '-m', '"Commit message"']);
243 SaveStringToFile('Different text', TestFile);
244 Svn(['commit', '-m', '"Commit message 2"']);
245 Svn(['update', '-r', '1', TestFile]);
246 Svn(['update', '-r', '2', TestFile]);
247 Svn(['update']);
248 Evaluate(True);
249end;
250
251procedure TTestCaseDelete.Run;
252var
253 TestFile: string;
254begin
255 TestFile := 'TestFile.txt';
256 SaveStringToFile('Some text', TestFile);
257 Svn(['add', TestFile]);
258 Svn(['commit', '-m', '"Commit message"']);
259 Svn(['delete', TestFile]);
260 Svn(['commit', '-m', '"Commit message 2"']);
261 Evaluate(True);
262end;
263
264procedure TTestCaseUpdateMultiple.Run;
265var
266 I: Integer;
267const
268 Count = 20;
269begin
270 for I := 0 to Count - 1 do begin
271 SaveStringToFile('Some text', 'TestFile' + IntToStr(I) + '.txt');
272 Svn(['add', 'TestFile' + IntToStr(I) + '.txt']);
273 end;
274 Svn(['commit', '-m', '"Commit message"']);
275 for I := 0 to Count - 1 do
276 SaveStringToFile('Different text', 'TestFile' + IntToStr(I) + '.txt');
277 Svn(['commit', '-m', '"Commit message 2"']);
278 Svn(['update', '-r', '1']);
279 Svn(['update', '-r', '2']);
280 Svn(['update']);
281 Evaluate(True);
282end;
283
284end.
285
Note: See TracBrowser for help on using the repository browser.