aboutsummaryrefslogtreecommitdiff
path: root/tests/test_junitxml.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_junitxml.c')
-rw-r--r--tests/test_junitxml.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/test_junitxml.c b/tests/test_junitxml.c
new file mode 100644
index 0000000..9b2181e
--- /dev/null
+++ b/tests/test_junitxml.c
@@ -0,0 +1,82 @@
+#include "testing.h"
+
+void test_junitxml_testsuite_read() {
+ struct JUNIT_Testsuite *testsuite;
+ STASIS_ASSERT_FATAL((testsuite = junitxml_testsuite_read("result.xml")) != NULL, "failed to load testsuite data");
+ STASIS_ASSERT(testsuite->name != NULL, "Test suite must be named");
+ STASIS_ASSERT(testsuite->skipped > 0, "missed skipped tests");
+ STASIS_ASSERT(testsuite->failures > 0, "missed failed tests");
+ STASIS_ASSERT(testsuite->errors == 0, "should not have errored tests");
+ STASIS_ASSERT(testsuite->tests > 0, "missed tests");
+
+ for (size_t i = 0; i < testsuite->_tc_inuse; i++) {
+ struct JUNIT_Testcase *testcase = testsuite->testcase[i];
+ STASIS_ASSERT_FATAL(testcase->name != NULL, "test case should not be NULL");
+ STASIS_ASSERT(testcase->name != NULL, "name should not be NULL");
+ STASIS_ASSERT(testcase->classname != NULL, "classname should not be NULL");
+
+ switch (testcase->tc_result_state_type) {
+ case JUNIT_RESULT_STATE_SKIPPED:
+ STASIS_ASSERT(testcase->result_state.skipped != NULL, "skipped state set, but data pointer was null");
+ STASIS_ASSERT(testcase->result_state.skipped->message != NULL, "data pointer set, but message pointer was null");
+ break;
+ case JUNIT_RESULT_STATE_FAILURE:
+ STASIS_ASSERT(testcase->result_state.failure != NULL, "failure state set, but data pointer was null");
+ STASIS_ASSERT(testcase->result_state.failure->message != NULL, "data pointer set, but message pointer was null");
+ break;
+ case JUNIT_RESULT_STATE_ERROR:
+ STASIS_ASSERT(testcase->result_state.error != NULL, "error state set, but data pointer was null");
+ STASIS_ASSERT(testcase->result_state.error->message != NULL, "data pointer set, but message pointer was null");
+ break;
+ case JUNIT_RESULT_STATE_NONE:
+ STASIS_ASSERT(testcase->result_state.failure == NULL, "success, but has an failure record");
+ STASIS_ASSERT(testcase->result_state.skipped == NULL, "success, but has a skipped record ");
+ STASIS_ASSERT(testcase->result_state.error == NULL, "success, but has an error record");
+ break;
+ default:
+ SYSERROR("unknown test case result type (%d)", testcase->tc_result_state_type);
+ break;
+ }
+ }
+ junitxml_testsuite_free(&testsuite);
+}
+
+void test_junitxml_testsuite_read_error() {
+ struct JUNIT_Testsuite *testsuite;
+ STASIS_ASSERT_FATAL((testsuite = junitxml_testsuite_read("result_error.xml")) != NULL, "failed to load testsuite data");
+
+ STASIS_ASSERT(testsuite->name != NULL, "test suite must be named");
+ STASIS_ASSERT(testsuite->skipped == 0, "should not have any skipped tests");
+ STASIS_ASSERT(testsuite->failures == 0, "should not have any failures, only errors");
+ STASIS_ASSERT(testsuite->errors > 0, "missed failed tests");
+ STASIS_ASSERT(testsuite->tests > 0, "missed tests");
+ STASIS_ASSERT(testsuite->timestamp != NULL, "Test suite must have a timestamp");
+
+ for (size_t i = 0; i < testsuite->_tc_inuse; i++) {
+ struct JUNIT_Testcase *testcase = testsuite->testcase[i];
+ STASIS_ASSERT_FATAL(testcase->name != NULL, "test case should not be NULL");
+ STASIS_ASSERT(testcase->name != NULL, "name should not be NULL");
+ STASIS_ASSERT(testcase->classname != NULL, "classname should not be NULL");
+
+ switch (testcase->tc_result_state_type) {
+ case JUNIT_RESULT_STATE_ERROR:
+ STASIS_ASSERT(testcase->result_state.error != NULL, "error state set, but data pointer was null");
+ STASIS_ASSERT(testcase->result_state.error->message != NULL, "data pointer set, but message pointer was null");
+ break;
+ default:
+ SYSERROR("unexpected test case result type (%d)", testcase->tc_result_state_type);
+ break;
+ }
+ }
+ junitxml_testsuite_free(&testsuite);
+}
+
+int main(int argc, char *argv[]) {
+ STASIS_TEST_BEGIN_MAIN();
+ STASIS_TEST_FUNC *tests[] = {
+ test_junitxml_testsuite_read,
+ test_junitxml_testsuite_read_error,
+ };
+ STASIS_TEST_RUN(tests);
+ STASIS_TEST_END_MAIN();
+} \ No newline at end of file