Fix various minor bugs in the regression test suite

Now if a test fails it keep testing the others tests from the same
family. The output was also improved.
This commit is contained in:
Felipe Zimmerle 2015-12-10 18:36:20 -03:00
parent 42ce0475b2
commit 2a950a435b
4 changed files with 25 additions and 13 deletions

View File

@ -129,14 +129,17 @@ void perform_unit_test(std::vector<RegressionTest *> *tests,
}
if (modsec_rules->load(t->rules.c_str(), filename) < 0) {
/* Parser error */
if (t->parser_error.empty() == true) {
/* Not expecting any error, thus return the error to the user. */
std::cout << KRED << "failed!" << RESET << std::endl;
testRes->reason << KRED << "parse failed." << RESET \
<< std::endl;
testRes->reason << modsec_rules->getParserError() \
<< std::endl;
testRes->passed = false;
res->push_back(testRes);
return;
continue;
}
Regex re(t->parser_error);
@ -144,10 +147,16 @@ void perform_unit_test(std::vector<RegressionTest *> *tests,
std::string s = modsec_rules->getParserError();
if (regex_search(s, &match, re) && match.size() >= 1) {
std::cout << KGRN << "passed!" << RESET << std::endl;
/* Parser error was expected, thus, the test passed. */
testRes->reason << KGRN << "passed!" << RESET << std::endl;
testRes->passed = true;
return;
res->push_back(testRes);
continue;
} else {
/* Parser error was expected, but with a different content */
std::cout << KRED << "failed!" << RESET << std::endl;
testRes->reason << KRED << "failed!" << RESET << std::endl;
testRes->reason << KWHT << "Expected a parser error." \
<< RESET << std::endl;
@ -156,17 +165,20 @@ void perform_unit_test(std::vector<RegressionTest *> *tests,
testRes->reason << KWHT << "Produced: " << RESET \
<< s << std::endl;
testRes->passed = false;
return;
res->push_back(testRes);
continue;
}
} else {
/* Parser error was expected but never happened */
if (t->parser_error.empty() == false) {
std::cout << KRED << "failed!" << std::endl;
std::cout << KRED << "failed!" << RESET << std::endl;
std::cout << KWHT << "Expected a parser error." \
<< RESET << std::endl;
std::cout << KWHT << "Expected: " << RESET \
<< t->parser_error << std::endl;
testRes->passed = false;
res->push_back(testRes);
continue;
}
}

View File

@ -82,7 +82,7 @@
]
},
"expected":{
"parser_error": "Rules error. File: action-id.json. Line: 4. Column: 31. id:-1"
"parser_error": "Rules error. File: action-id.json. Line: 4. Column: 31. .*"
},
"rules":[
"SecRuleEngine On",
@ -220,7 +220,7 @@
]
},
"expected":{
"parser_error": "Rules error. File: action-id.json. Line: 4. Column: 31. id:'1"
"parser_error": "Rules error. File: action-id.json. Line: 4. Column: 31. .*"
},
"rules":[
"SecRuleEngine On",

View File

@ -4,7 +4,7 @@
"version_min":300000,
"title":"Include - bad rule",
"expected":{
"parser_error": "Rules error. File: test-cases/data/config_example3.txt. Line: 2. Column: 42. ops"
"parser_error": "Rules error. File: test-cases/data/config_example3.txt. Line: 2. Column: 42. invalid character .*"
},
"rules":[
"SecRuleEngine On",
@ -19,7 +19,7 @@
"version_min":300000,
"title":"Include - missing file",
"expected":{
"parser_error": "Rules error. File: config-include-bad.json. Line: 4. Column: 47. Include test-cases/data/config_example-ops.txt: Not able to open file."
"parser_error": "Rules error. File: config-include-bad.json. Line: 4. Column: 47. test-cases/data/config_example-ops.txt: Not able to open file."
},
"rules":[
"SecRuleEngine On",
@ -34,7 +34,7 @@
"version_min":300000,
"title":"Include - missing at include",
"expected":{
"parser_error": "Rules error. File: test-cases/data/config_example-ops-include.txt. Line: 1. Column: 53. Include test-cases/data/config_example-not-exist.txt: Not able to open file."
"parser_error": "Rules error. File: test-cases/data/config_example-ops-include.txt. Line: 1. Column: 53. test-cases/data/config_example-not-exist.txt: Not able to open file."
},
"rules":[
"SecRuleEngine On",
@ -49,7 +49,7 @@
"version_min":300000,
"title":"Include - bad operator inside include",
"expected":{
"parser_error": "Rules error. File: test-cases/data/config_example-bad-op-include.txt. Line: 2. Column: 32."
"parser_error": "Rules error. File: test-cases/data/config_example-bad-op-include.txt. Line: 2. Column: 67. .*"
},
"rules":[
"SecRuleEngine On",
@ -64,7 +64,7 @@
"version_min":300000,
"title":"Include - duplicate id",
"expected":{
"parser_error": "Rule id: 40.000000 is duplicated"
"parser_error": "Rule id: 40 is duplicated"
},
"rules":[
"SecRuleEngine On",

View File

@ -82,7 +82,7 @@
]
},
"expected":{
"parser_error":"Failed to open file: file-not-found.txt"
"parser_error":"Rules error. File: operator-ipMatchFromFile.json. Line: 4. Column: 20. .*"
},
"rules":[
"SecRuleEngine On",