workspacer_test_coverage/
generate_report.rs

1// ---------------- [ File: workspacer-test-coverage/src/generate_report.rs ]
2crate::ix!();
3
4impl GenerateReport for TestCoverageCommand {
5
6    type Report = TestCoverageReport;
7    type Error  = TestCoverageError;
8
9    fn generate_report(&self) -> Result<Self::Report, Self::Error> {
10        // Try to generate the report from text output
11        if let Ok(report) = TestCoverageReport::from_maybe_plaintext_coverage_summary(self.stdout()) {
12            return Ok(report);
13        }
14
15        // If the stdout is empty or contains errors
16        if self.is_stdout_empty() || self.has_stderr_errors() {
17            return Err(TestCoverageError::CoverageParseError);
18        }
19
20        // Parse the JSON output and generate the report
21        let coverage_data = self.parse_json_output()?;
22        TestCoverageReport::try_from(&coverage_data)
23    }
24}