diff --git a/test/testAll.m b/test/testAll.m index 3e64557cf7..9847869542 100644 --- a/test/testAll.m +++ b/test/testAll.m @@ -188,6 +188,7 @@ fprintf(['\n > ', num2str(sumFailed), ' tests failed. ', num2str(sumSkipped), ' tests were skipped due to missing requirements.\n\n']); %% NEW: Generate JUnit XML report for Codecov + xmlFileName = 'CodeCovTestResults.xml'; fid = fopen(xmlFileName, 'w'); if fid == -1 @@ -195,23 +196,24 @@ end fprintf(fid, '\n'); - - numTests = height(resultTable); + + numTests = height(resultTable); numFailures = sum(resultTable.Failed); - numSkipped = sum(resultTable.Skipped); - totalTime = 0; - for i = 1:numTests - if isnan(resultTable.Time(i)) - tVal = 0; - else - tVal = resultTable.Time(i); - end - totalTime = totalTime + tVal; - end + numErrors = sum(resultTable.Failed); + numSkipped = sum(resultTable.Skipped); + + % Compute total time and also count how many are "failures" vs. "errors" + totalTime = sum(resultTable.Time); - fprintf(fid, '\n', ... - numTests, numFailures, numSkipped, totalTime); + % 1) Wrap in -- typical JUnit format + fprintf(fid, '\n', ... + numTests, numFailures, numErrors, totalTime); + % 2) A single inside + fprintf(fid, ' \n', ... + numTests, numFailures, numErrors, numSkipped, totalTime); + + % 3) Loop over each test case for i = 1:numTests testName = resultTable.TestName{i}; if isnan(resultTable.Time(i)) @@ -219,21 +221,39 @@ else tVal = resultTable.Time(i); end - fprintf(fid, ' tag + fprintf(fid, ' just close fprintf(fid, '/>\n'); - else + elseif resultTable.Skipped(i) + % Skipped => fprintf(fid, '>\n'); - if resultTable.Skipped(i) - fprintf(fid, ' \n', escapeXML(resultTable.Details{i})); + fprintf(fid, ' \n', escapeXML(resultTable.Details{i})); + fprintf(fid, ' \n'); + else + % Not passed, not skipped => either or + % Check the .Error or .Details to decide + errMsg = result(i).Error.message; % or getReport() + + % Heuristic: if "Assertion" => , else . + if contains(errMsg, 'Assertion') || contains(errMsg, 'assert') + fprintf(fid, '>\n'); + fprintf(fid, ' \n', escapeXML(errMsg)); else - fprintf(fid, ' \n', escapeXML(resultTable.Details{i})); + fprintf(fid, '>\n'); + fprintf(fid, ' \n', escapeXML(errMsg)); end - fprintf(fid, ' \n'); + + fprintf(fid, ' \n'); end end - fprintf(fid, '\n'); + % Close out the suite and suites + fprintf(fid, ' \n'); + fprintf(fid, '\n'); fclose(fid); %% End of XML generation