private void renderSectionPackages()

in maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportRenderer.java [174:275]


    private void renderSectionPackages() {
        Map<String, List<ReportTestSuite>> suitePackages = parser.getSuitesGroupByPackage(testSuites);
        if (suitePackages.isEmpty()) {
            return;
        }

        sink.section1();
        sinkAnchor("Package_List");
        sink.sectionTitle1();
        sink.text(getI18nString("surefire", "label.packagelist"));
        sink.sectionTitle1_();

        constructHotLinks();

        sink.lineBreak();

        startTable();

        tableHeader(new String[] {
            getI18nString("surefire", "label.package"),
            getI18nString("surefire", "label.tests"),
            getI18nString("surefire", "label.errors"),
            getI18nString("surefire", "label.failures"),
            getI18nString("surefire", "label.skipped"),
            getI18nString("surefire", "label.successrate"),
            getI18nString("surefire", "label.time")
        });

        for (Map.Entry<String, List<ReportTestSuite>> entry : suitePackages.entrySet()) {
            String packageName = entry.getKey();

            List<ReportTestSuite> testSuiteList = entry.getValue();

            Map<String, Object> packageSummary = parser.getSummary(testSuiteList);

            tableRow(new String[] {
                createLinkPatternedText(packageName, '#' + packageName),
                String.valueOf(packageSummary.get("totalTests")),
                String.valueOf(packageSummary.get("totalErrors")),
                String.valueOf(packageSummary.get("totalFailures")),
                String.valueOf(packageSummary.get("totalSkipped")),
                formatI18nString("surefire", "value.successrate", packageSummary.get("totalPercentage")),
                formatI18nString("surefire", "value.time", packageSummary.get("totalElapsedTime"))
            });
        }

        endTable();
        sink.lineBreak();

        paragraph(getI18nString("surefire", "text.note2"));

        for (Map.Entry<String, List<ReportTestSuite>> entry : suitePackages.entrySet()) {
            String packageName = entry.getKey();

            List<ReportTestSuite> testSuiteList = entry.getValue();

            sink.section2();
            sinkAnchor(packageName);
            sink.sectionTitle2();
            sink.text(packageName);
            sink.sectionTitle2_();

            boolean showTable = false;

            for (ReportTestSuite suite : testSuiteList) {
                if (showSuccess || suite.getNumberOfErrors() != 0 || suite.getNumberOfFailures() != 0) {
                    showTable = true;

                    break;
                }
            }

            if (showTable) {
                startTable();

                tableHeader(new String[] {
                    "",
                    getI18nString("surefire", "label.class"),
                    getI18nString("surefire", "label.tests"),
                    getI18nString("surefire", "label.errors"),
                    getI18nString("surefire", "label.failures"),
                    getI18nString("surefire", "label.skipped"),
                    getI18nString("surefire", "label.successrate"),
                    getI18nString("surefire", "label.time")
                });

                for (ReportTestSuite suite : testSuiteList) {
                    if (showSuccess || suite.getNumberOfErrors() != 0 || suite.getNumberOfFailures() != 0) {
                        renderSectionTestSuite(suite);
                    }
                }

                endTable();
            }

            sink.section2_();
        }

        sink.lineBreak();

        sink.section1_();
    }