Skip to content

Commit bf5a19d

Browse files
committed
Replace calls to CoreTest.assertEquals() with matcher statements #903
Replaces all calls to CoreTest.assertEquals() for comparing array contents with matcher statements. This makes the assertions independent from JUnit 3 and improves the provided error messages in case of a test failure. The change also improves the other assertions in the touched test classes. Contributes to #903
1 parent c75e9a1 commit bf5a19d

File tree

10 files changed

+377
-331
lines changed

10 files changed

+377
-331
lines changed

resources/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/builders/BuildContextTest.java

Lines changed: 60 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
*******************************************************************************/
1414
package org.eclipse.core.tests.internal.builders;
1515

16+
import static org.hamcrest.MatcherAssert.assertThat;
17+
import static org.hamcrest.Matchers.arrayContaining;
18+
import static org.hamcrest.Matchers.emptyArray;
19+
1620
import org.eclipse.core.internal.events.BuildContext;
1721
import org.eclipse.core.internal.resources.BuildConfiguration;
1822
import org.eclipse.core.resources.IBuildConfiguration;
@@ -91,8 +95,8 @@ private IBuildConfiguration changeActiveBuildConfig(IProject project) throws Cor
9195
return config;
9296
}
9397
}
94-
assertTrue(false);
95-
return null;
98+
throw new IllegalStateException(
99+
"No build config other than the active one could be found for project: " + project);
96100
}
97101

98102
/**
@@ -129,22 +133,22 @@ public void testBuildContext() {
129133
IBuildContext context;
130134

131135
context = new BuildContext(p0v0, new IBuildConfiguration[] {p0v0, p1v0}, buildOrder);
132-
assertEquals("1.0", new IBuildConfiguration[] {}, context.getAllReferencedBuildConfigs());
133-
assertEquals("1.1", new IBuildConfiguration[] {p0v1, p1v0}, context.getAllReferencingBuildConfigs());
134-
assertEquals("1.2", new IBuildConfiguration[] {p0v0, p1v0}, context.getRequestedConfigs());
136+
assertThat(context.getAllReferencedBuildConfigs(), emptyArray());
137+
assertThat(context.getAllReferencingBuildConfigs(), arrayContaining(p0v1, p1v0));
138+
assertThat(context.getRequestedConfigs(), arrayContaining(p0v0, p1v0));
135139

136140
context = new BuildContext(p0v1, buildOrder, buildOrder);
137-
assertEquals("2.0", new IBuildConfiguration[] {p0v0}, context.getAllReferencedBuildConfigs());
138-
assertEquals("2.1", new IBuildConfiguration[] {p1v0}, context.getAllReferencingBuildConfigs());
141+
assertThat(context.getAllReferencedBuildConfigs(), arrayContaining(p0v0));
142+
assertThat(context.getAllReferencingBuildConfigs(), arrayContaining(p1v0));
139143

140144
context = new BuildContext(p1v0, buildOrder, buildOrder);
141-
assertEquals("3.0", new IBuildConfiguration[] {p0v0, p0v1}, context.getAllReferencedBuildConfigs());
142-
assertEquals("3.1", new IBuildConfiguration[] {}, context.getAllReferencingBuildConfigs());
145+
assertThat(context.getAllReferencedBuildConfigs(), arrayContaining(p0v0, p0v1));
146+
assertThat(context.getAllReferencingBuildConfigs(), emptyArray());
143147

144148
// And it works with no build context too
145149
context = new BuildContext(p1v0);
146-
assertEquals("4.0", new IBuildConfiguration[] {}, context.getAllReferencedBuildConfigs());
147-
assertEquals("4.1", new IBuildConfiguration[] {}, context.getAllReferencingBuildConfigs());
150+
assertThat(context.getAllReferencedBuildConfigs(), emptyArray());
151+
assertThat(context.getAllReferencingBuildConfigs(), emptyArray());
148152
}
149153

150154
public void testSingleProjectBuild() throws CoreException {
@@ -153,20 +157,20 @@ public void testSingleProjectBuild() throws CoreException {
153157
setupSimpleReferences();
154158
ContextBuilder.clearStats();
155159
project0.build(IncrementalProjectBuilder.FULL_BUILD, getMonitor());
156-
assertTrue("1.0", ContextBuilder.checkValid());
160+
ContextBuilder.assertValid();
157161

158162
IBuildContext context = ContextBuilder.getContext(project0.getActiveBuildConfig());
159-
assertEquals("2.0", 0, context.getAllReferencedBuildConfigs().length);
160-
assertEquals("2.1", 0, context.getAllReferencingBuildConfigs().length);
163+
assertThat(context.getAllReferencedBuildConfigs(), emptyArray());
164+
assertThat(context.getAllReferencingBuildConfigs(), emptyArray());
161165

162166
// Change the active build configuration will cause the project to be rebuilt
163167
ContextBuilder.clearStats();
164168
IBuildConfiguration newActive = changeActiveBuildConfig(project0);
165169
waitForBuild();
166-
assertTrue("3.0", ContextBuilder.checkValid());
170+
ContextBuilder.assertValid();
167171

168172
context = ContextBuilder.getContext(newActive);
169-
assertEquals("3.1", 0, context.getAllReferencedBuildConfigs().length);
173+
assertThat(context.getAllReferencedBuildConfigs(), emptyArray());
170174
}
171175

172176
/**
@@ -178,28 +182,30 @@ public void testWorkspaceBuildProject() throws CoreException {
178182

179183
// Build project and resolve references
180184
getWorkspace().build(new IBuildConfiguration[] {project0.getActiveBuildConfig()}, IncrementalProjectBuilder.FULL_BUILD, true, getMonitor());
181-
assertTrue("1.0", ContextBuilder.checkValid());
185+
ContextBuilder.assertValid();
182186

183187
IBuildContext context = ContextBuilder.getContext(project0.getActiveBuildConfig());
184-
assertEquals("2.0", new IBuildConfiguration[] {project2.getActiveBuildConfig(), project1.getActiveBuildConfig()}, context.getAllReferencedBuildConfigs());
185-
assertEquals("2.1", 0, context.getAllReferencingBuildConfigs().length);
188+
assertThat(context.getAllReferencedBuildConfigs(),
189+
arrayContaining(project2.getActiveBuildConfig(), project1.getActiveBuildConfig()));
190+
assertThat(context.getAllReferencingBuildConfigs(), emptyArray());
186191

187192
context = ContextBuilder.getBuilder(project1.getActiveBuildConfig()).contextForLastBuild;
188-
assertEquals("3.0", new IBuildConfiguration[] {project2.getActiveBuildConfig()}, context.getAllReferencedBuildConfigs());
189-
assertEquals("3.1", new IBuildConfiguration[] {project0.getActiveBuildConfig()}, context.getAllReferencingBuildConfigs());
193+
assertThat(context.getAllReferencedBuildConfigs(), arrayContaining(project2.getActiveBuildConfig()));
194+
assertThat(context.getAllReferencingBuildConfigs(), arrayContaining(project0.getActiveBuildConfig()));
190195

191196
context = ContextBuilder.getBuilder(project2.getActiveBuildConfig()).contextForLastBuild;
192-
assertEquals("4.0", 0, context.getAllReferencedBuildConfigs().length);
193-
assertEquals("4.1", new IBuildConfiguration[] {project1.getActiveBuildConfig(), project0.getActiveBuildConfig()}, context.getAllReferencingBuildConfigs());
197+
assertThat(context.getAllReferencedBuildConfigs(), emptyArray());
198+
assertThat(context.getAllReferencingBuildConfigs(),
199+
arrayContaining(project1.getActiveBuildConfig(), project0.getActiveBuildConfig()));
194200

195201
// Build just project0
196202
ContextBuilder.clearStats();
197203
getWorkspace().build(new IBuildConfiguration[] {project0.getActiveBuildConfig()}, IncrementalProjectBuilder.FULL_BUILD, false, getMonitor());
198-
assertTrue("5.0", ContextBuilder.checkValid());
204+
ContextBuilder.assertValid();
199205

200206
context = ContextBuilder.getContext(project0.getActiveBuildConfig());
201-
assertTrue("5.1", context.getAllReferencedBuildConfigs().length == 0);
202-
assertTrue("5.2", context.getAllReferencingBuildConfigs().length == 0);
207+
assertThat(context.getAllReferencedBuildConfigs(), emptyArray());
208+
assertThat(context.getAllReferencingBuildConfigs(), emptyArray());
203209
}
204210

205211
/**
@@ -210,19 +216,21 @@ public void testWorkspaceBuildProjects() throws CoreException {
210216
ContextBuilder.clearStats();
211217
// build project0 & project2 ; project1 will end up being built too.
212218
getWorkspace().build(new IBuildConfiguration[] {project0.getActiveBuildConfig(), project2.getActiveBuildConfig()}, IncrementalProjectBuilder.FULL_BUILD, true, getMonitor());
213-
assertTrue("1.0", ContextBuilder.checkValid());
219+
ContextBuilder.assertValid();
214220

215221
IBuildContext context = ContextBuilder.getContext(project0.getActiveBuildConfig());
216-
assertEquals("2.0", new IBuildConfiguration[] {project2.getActiveBuildConfig(), project1.getActiveBuildConfig()}, context.getAllReferencedBuildConfigs());
217-
assertEquals("2.1", 0, context.getAllReferencingBuildConfigs().length);
222+
assertThat(context.getAllReferencedBuildConfigs(),
223+
arrayContaining(project2.getActiveBuildConfig(), project1.getActiveBuildConfig()));
224+
assertThat(context.getAllReferencingBuildConfigs(), emptyArray());
218225

219226
context = ContextBuilder.getBuilder(project1.getActiveBuildConfig()).contextForLastBuild;
220-
assertEquals("3.0", new IBuildConfiguration[] {project2.getActiveBuildConfig()}, context.getAllReferencedBuildConfigs());
221-
assertEquals("3.1", new IBuildConfiguration[] {project0.getActiveBuildConfig()}, context.getAllReferencingBuildConfigs());
227+
assertThat(context.getAllReferencedBuildConfigs(), arrayContaining(project2.getActiveBuildConfig()));
228+
assertThat(context.getAllReferencingBuildConfigs(), arrayContaining(project0.getActiveBuildConfig()));
222229

223230
context = ContextBuilder.getBuilder(project2.getActiveBuildConfig()).contextForLastBuild;
224-
assertEquals("4.0", 0, context.getAllReferencedBuildConfigs().length);
225-
assertEquals("4.1", new IBuildConfiguration[] {project1.getActiveBuildConfig(), project0.getActiveBuildConfig()}, context.getAllReferencingBuildConfigs());
231+
assertThat(context.getAllReferencedBuildConfigs(), emptyArray());
232+
assertThat(context.getAllReferencingBuildConfigs(),
233+
arrayContaining(project1.getActiveBuildConfig(), project0.getActiveBuildConfig()));
226234
}
227235

228236
/**
@@ -235,19 +243,21 @@ public void testReferenceActiveVariant() throws CoreException {
235243

236244
ContextBuilder.clearStats();
237245
getWorkspace().build(new IBuildConfiguration[] {project0.getActiveBuildConfig()}, IncrementalProjectBuilder.FULL_BUILD, true, getMonitor());
238-
assertTrue("1.0", ContextBuilder.checkValid());
246+
ContextBuilder.assertValid();
239247

240248
IBuildContext context = ContextBuilder.getContext(project0.getActiveBuildConfig());
241-
assertEquals("2.0", new IBuildConfiguration[] {project2.getActiveBuildConfig(), project1.getActiveBuildConfig()}, context.getAllReferencedBuildConfigs());
242-
assertEquals("2.1", 0, context.getAllReferencingBuildConfigs().length);
249+
assertThat(context.getAllReferencedBuildConfigs(),
250+
arrayContaining(project2.getActiveBuildConfig(), project1.getActiveBuildConfig()));
251+
assertThat(context.getAllReferencingBuildConfigs(), emptyArray());
243252

244253
context = ContextBuilder.getBuilder(project1.getActiveBuildConfig()).contextForLastBuild;
245-
assertEquals("3.0", new IBuildConfiguration[] {project2.getActiveBuildConfig()}, context.getAllReferencedBuildConfigs());
246-
assertEquals("3.1", new IBuildConfiguration[] {project0.getActiveBuildConfig()}, context.getAllReferencingBuildConfigs());
254+
assertThat(context.getAllReferencedBuildConfigs(), arrayContaining(project2.getActiveBuildConfig()));
255+
assertThat(context.getAllReferencingBuildConfigs(), arrayContaining(project0.getActiveBuildConfig()));
247256

248257
context = ContextBuilder.getBuilder(project2.getActiveBuildConfig()).contextForLastBuild;
249-
assertEquals("4.0", 0, context.getAllReferencedBuildConfigs().length);
250-
assertEquals("4.1", new IBuildConfiguration[] {project1.getActiveBuildConfig(), project0.getActiveBuildConfig()}, context.getAllReferencingBuildConfigs());
258+
assertThat(context.getAllReferencedBuildConfigs(), emptyArray());
259+
assertThat(context.getAllReferencingBuildConfigs(),
260+
arrayContaining(project1.getActiveBuildConfig(), project0.getActiveBuildConfig()));
251261
}
252262

253263
/**
@@ -262,27 +272,27 @@ public void testReferenceVariantTwice() throws CoreException {
262272

263273
ContextBuilder.clearStats();
264274
getWorkspace().build(new IBuildConfiguration[] {project0.getActiveBuildConfig()}, IncrementalProjectBuilder.FULL_BUILD, true, getMonitor());
265-
assertTrue("1.0", ContextBuilder.checkValid());
275+
ContextBuilder.assertValid();
266276

267277
IBuildContext context = ContextBuilder.getContext(project0.getActiveBuildConfig());
268-
assertEquals("2.0", new IBuildConfiguration[] {project1.getActiveBuildConfig()}, context.getAllReferencedBuildConfigs());
269-
assertEquals("2.1", 0, context.getAllReferencingBuildConfigs().length);
270-
assertEquals("2.2", new IBuildConfiguration[] {project0.getActiveBuildConfig()}, context.getRequestedConfigs());
278+
assertThat(context.getAllReferencedBuildConfigs(), arrayContaining(project1.getActiveBuildConfig()));
279+
assertThat(context.getAllReferencingBuildConfigs(), emptyArray());
280+
assertThat(context.getRequestedConfigs(), arrayContaining(project0.getActiveBuildConfig()));
271281

272282
context = ContextBuilder.getBuilder(project1.getActiveBuildConfig()).contextForLastBuild;
273-
assertEquals("3.0", 0, context.getAllReferencedBuildConfigs().length);
274-
assertEquals("3.1", new IBuildConfiguration[] {project0.getActiveBuildConfig()}, context.getAllReferencingBuildConfigs());
283+
assertThat(context.getAllReferencedBuildConfigs(), emptyArray());
284+
assertThat(context.getAllReferencingBuildConfigs(), arrayContaining(project0.getActiveBuildConfig()));
275285

276286
// Change the active configuration of project1, and test that two configurations are built
277287
ContextBuilder.clearStats();
278288
IBuildConfiguration project1PreviousActive = project1.getActiveBuildConfig();
279289
IBuildConfiguration project1NewActive = changeActiveBuildConfig(project1);
280290
getWorkspace().build(new IBuildConfiguration[] {project0.getActiveBuildConfig()}, IncrementalProjectBuilder.FULL_BUILD, true, getMonitor());
281-
assertTrue("4.0", ContextBuilder.checkValid());
291+
ContextBuilder.assertValid();
282292

283293
context = ContextBuilder.getContext(project0.getActiveBuildConfig());
284-
assertEquals("4.1", new IBuildConfiguration[] {project1PreviousActive, project1NewActive}, context.getAllReferencedBuildConfigs());
285-
assertEquals("4.2", 0, context.getAllReferencingBuildConfigs().length);
286-
assertEquals("4.3", new IBuildConfiguration[] {project0.getActiveBuildConfig()}, context.getRequestedConfigs());
294+
assertThat(context.getAllReferencedBuildConfigs(), arrayContaining(project1PreviousActive, project1NewActive));
295+
assertThat(context.getAllReferencingBuildConfigs(), emptyArray());
296+
assertThat(context.getRequestedConfigs(), arrayContaining(project0.getActiveBuildConfig()));
287297
}
288298
}

resources/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/internal/builders/ContextBuilder.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,15 @@
1313
*******************************************************************************/
1414
package org.eclipse.core.tests.internal.builders;
1515

16+
import static org.hamcrest.MatcherAssert.assertThat;
17+
import static org.hamcrest.Matchers.is;
18+
1619
import java.util.HashMap;
1720
import java.util.Map;
18-
import org.eclipse.core.resources.*;
21+
import org.eclipse.core.resources.IBuildConfiguration;
22+
import org.eclipse.core.resources.IBuildContext;
23+
import org.eclipse.core.resources.IProject;
24+
import org.eclipse.core.resources.IncrementalProjectBuilder;
1925
import org.eclipse.core.runtime.CoreException;
2026
import org.eclipse.core.runtime.IProgressMonitor;
2127
import org.eclipse.core.runtime.jobs.ISchedulingRule;
@@ -53,16 +59,13 @@ public static IBuildContext getContext(IBuildConfiguration variant) {
5359
return getBuilder(variant).contextForLastBuild;
5460
}
5561

56-
public static boolean checkValid() {
62+
public static void assertValid() {
5763
for (ContextBuilder builder : builders.values()) {
58-
if (builder.getRuleCalledForLastBuild && !builder.contextForLastBuild.equals(builder.contextForLastBuildInGetRule)) {
59-
return false;
60-
}
61-
if (builder.getRuleCalledForLastBuild && !builder.buildConfigurationForLastBuild.equals(builder.buildConfigurationForLastBuildInGetRule)) {
62-
return false;
64+
if (builder.getRuleCalledForLastBuild) {
65+
assertThat(builder.contextForLastBuild, is(builder.contextForLastBuildInGetRule));
66+
assertThat(builder.buildConfigurationForLastBuild, is(builder.buildConfigurationForLastBuildInGetRule));
6367
}
6468
}
65-
return true;
6669
}
6770

6871
public static void clearStats() {

0 commit comments

Comments
 (0)