1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 17:05:26 +02:00

Made test more robust so that it doesn't fail when unrelated checkers

are present.
This commit is contained in:
Sergey Prigogin 2012-04-28 17:57:36 -07:00
parent db6b4cf5ac
commit 5a643e5e57
2 changed files with 42 additions and 22 deletions

View file

@ -19,10 +19,12 @@ import org.eclipse.cdt.codan.internal.checkers.CaseBreakChecker;
* Test for {@link CaseBreakChecker} class
*/
public class CaseBreakCheckerTest extends CheckerTestCase {
public static final String ER_ID = CaseBreakChecker.ER_ID;
@Override
public void setUp() throws Exception {
super.setUp();
// set default prefs
// Set default preferences.
setEmpty(false);
setLast(true);
}
@ -85,7 +87,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
// }
public void testEmptyLastCaseOKbreak() {
loadCodeAndRun(getAboveComment());
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(void) {
@ -97,7 +99,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
// }
public void testEmptyLastCaseWithReturn() {
loadCodeAndRun(getAboveComment());
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(int a) {
@ -109,7 +111,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
// }
public void testEmptyLastCaseWithContinue() {
loadCodeAndRun(getAboveComment());
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(int a) {
@ -121,7 +123,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
// }
public void testEmptyLastCaseWithThrow() {
loadCodeAndRunCpp(getAboveComment());
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(void) {
@ -134,7 +136,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
// }
public void testLastCaseOKbreak() {
loadCodeAndRun(getAboveComment());
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(void) {
@ -149,7 +151,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
// }
public void testEmptyCaseOKbreak() {
loadCodeAndRun(getAboveComment());
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(void) {
@ -161,7 +163,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
// }
public void testEmptyLastCaseOKcomment() {
loadCodeAndRun(getAboveComment());
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(int a, int b) {
@ -190,7 +192,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
// }
public void testLastCaseOKcomment() {
loadCodeAndRun(getAboveComment());
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(void) {
@ -204,7 +206,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
// }
public void testEmptyCaseOKcomment() {
loadCodeAndRun(getAboveComment());
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(void) {
@ -388,7 +390,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
public void testLastCaseIgnore() {
setLast(false);
loadCodeAndRun(getAboveComment());
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
setLast(true);
}
@ -407,7 +409,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
public void testEmptyCaseIgnore() {
setEmpty(false);
loadCodeAndRun(getAboveComment());
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(void) {
@ -420,11 +422,11 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
String code = getAboveComment();
setLast(false);
loadCodeAndRun(code);
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
setLast(true);
setEmpty(false);
loadCodeAndRun(code);
checkErrorLine(4);
checkErrorLine(4, ER_ID);
}
private void setLast(boolean val) {
@ -466,7 +468,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
// }
public void testCaseWithCurlyBrackets() {
loadCodeAndRun(getAboveComment());
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(void) {
@ -482,10 +484,10 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
setLast(true);
setEmpty(false);
loadCodeAndRun(code);
checkErrorLine(6);
checkErrorLine(6, ER_ID);
setLast(false);
loadCodeAndRun(code);
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(int a) {
@ -502,7 +504,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
public void testIf() {
String code = getAboveComment();
loadCodeAndRun(code);
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo(int a) {
@ -519,7 +521,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
public void testIfErr() {
String code = getAboveComment();
loadCodeAndRun(code);
checkErrorLine(7);
checkErrorLine(7, ER_ID);
}
// #define DEFINE_BREAK {break;}
@ -532,7 +534,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
public void testBreakInBraces() {
String code = getAboveComment();
loadCodeAndRun(code);
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// #define MY_MACRO(i) \
@ -548,7 +550,7 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
public void testInMacro() {
String code = getAboveComment();
loadCodeAndRun(code);
checkNoErrors();
checkNoErrorsOfKind(ER_ID);
}
// void foo() {
@ -559,6 +561,6 @@ public class CaseBreakCheckerTest extends CheckerTestCase {
public void testEmptyCompoundStatement() {
String code = getAboveComment();
loadCodeAndRun(code);
checkErrorLine(4);
checkErrorLine(4, ER_ID);
}
}

View file

@ -13,6 +13,8 @@ package org.eclipse.cdt.codan.core.test;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.cdt.codan.core.CodanRuntime;
import org.eclipse.cdt.codan.core.model.CheckerLaunchMode;
@ -127,6 +129,22 @@ public class CheckerTestCase extends CodanTestCase {
}
}
public void checkNoErrorsOfKind(String problemId) {
if (markers != null && markers.length > 0) {
List<IMarker> filtered = new ArrayList<IMarker>(markers.length);
for (IMarker m : markers) {
if (CodanProblemMarker.getProblemId(m).equals(problemId)) {
filtered.add(m);
}
}
if (!filtered.isEmpty()) {
IMarker m = filtered.get(0);
fail("Found " + filtered.size() + " errors but should not. First " +
CodanProblemMarker.getProblemId(m) + " at line " + getLine(m));
}
}
}
public void runOnProject() {
try {
indexFiles();