rust-covfix 0.2.1

Fix Rust coverage data based on source code
Documentation
use super::WorkSpace;
use std::fs;

use rust_covfix::{
    parser::LcovParser, BranchCoverage, CoverageWriter, FileCoverage, LineCoverage, PackageCoverage,
};

#[test]
fn test() {
    let ws = WorkSpace::from_template("tests/write_lcov");
    let coverage = PackageCoverage::with_test_name(
        "write_lcov",
        vec![
            FileCoverage::new(
                ws.path().join("src/lib.rs"),
                vec![
                    LineCoverage {
                        line_number: 2,
                        count: Some(2),
                    },
                    LineCoverage {
                        line_number: 3,
                        count: Some(2),
                    },
                    LineCoverage {
                        line_number: 8,
                        count: Some(1),
                    },
                    LineCoverage {
                        line_number: 9,
                        count: Some(4),
                    },
                    LineCoverage {
                        line_number: 10,
                        count: Some(1),
                    },
                ],
                vec![
                    BranchCoverage {
                        line_number: 3,
                        block_number: Some(0),
                        taken: Some(false),
                    },
                    BranchCoverage {
                        line_number: 3,
                        block_number: Some(0),
                        taken: Some(false),
                    },
                    BranchCoverage {
                        line_number: 3,
                        block_number: Some(0),
                        taken: Some(true),
                    },
                    BranchCoverage {
                        line_number: 8,
                        block_number: Some(0),
                        taken: Some(true),
                    },
                    BranchCoverage {
                        line_number: 8,
                        block_number: Some(0),
                        taken: Some(false),
                    },
                ],
            ),
            FileCoverage::new(
                ws.path().join("src/sub.rs"),
                vec![
                    LineCoverage {
                        line_number: 1,
                        count: Some(1),
                    },
                    LineCoverage {
                        line_number: 2,
                        count: Some(2),
                    },
                    LineCoverage {
                        line_number: 3,
                        count: Some(3),
                    },
                    LineCoverage {
                        line_number: 9,
                        count: Some(0),
                    },
                    LineCoverage {
                        line_number: 10000,
                        count: Some(3),
                    },
                ],
                vec![],
            ),
        ],
    );

    let parser = LcovParser::new(ws.path());
    let target_file = ws.path().join("lcov2.info");
    parser.write_to_file(&coverage, &target_file).unwrap();

    let content = fs::read_to_string(target_file).unwrap();

    let lcov_file = ws.path().join("lcov.info");
    let expected_content = fs::read_to_string(&lcov_file).unwrap();

    assert_eq!(content.trim_end(), expected_content.trim_end());
}