semdiff_differ_binary/
report_json.rs1use crate::{BinaryDiff, BinaryDiffReporter};
2use semdiff_core::fs::FileLeaf;
3use semdiff_core::{DetailReporter, MayUnsupported};
4use semdiff_output::json::JsonReport;
5use serde::Serialize;
6use std::convert;
7
8const COMPARES_NAME: &str = "binary";
9
10impl<W> DetailReporter<BinaryDiff, FileLeaf, JsonReport<W>> for BinaryDiffReporter {
11 type Error = convert::Infallible;
12
13 fn report_unchanged(
14 &self,
15 name: &str,
16 diff: &BinaryDiff,
17 reporter: &JsonReport<W>,
18 ) -> Result<MayUnsupported<()>, Self::Error> {
19 let report = SingleReport {
20 size: diff.expected().len(),
21 };
22 reporter.record_unchanged(name, COMPARES_NAME, report);
23 Ok(MayUnsupported::Ok(()))
24 }
25
26 fn report_modified(
27 &self,
28 name: &str,
29 diff: &BinaryDiff,
30 reporter: &JsonReport<W>,
31 ) -> Result<MayUnsupported<()>, Self::Error> {
32 let stat = BinaryDiff::stat(&diff.changes());
33 let expected_size = diff.expected.len();
34 let actual_size = diff.actual.len();
35 let report = ModifiedReport {
36 expected_size,
37 actual_size,
38 added: stat.added,
39 deleted: stat.deleted,
40 };
41 reporter.record_modified(name, COMPARES_NAME, report);
42 Ok(MayUnsupported::Ok(()))
43 }
44
45 fn report_added(
46 &self,
47 name: &str,
48 data: &FileLeaf,
49 reporter: &JsonReport<W>,
50 ) -> Result<MayUnsupported<()>, Self::Error> {
51 let report = SingleReport {
52 size: data.content.len(),
53 };
54 reporter.record_added(name, COMPARES_NAME, report);
55 Ok(MayUnsupported::Ok(()))
56 }
57
58 fn report_deleted(
59 &self,
60 name: &str,
61 data: &FileLeaf,
62 reporter: &JsonReport<W>,
63 ) -> Result<MayUnsupported<()>, Self::Error> {
64 let report = SingleReport {
65 size: data.content.len(),
66 };
67 reporter.record_deleted(name, COMPARES_NAME, report);
68 Ok(MayUnsupported::Ok(()))
69 }
70}
71
72#[derive(Serialize)]
73struct ModifiedReport {
74 expected_size: usize,
75 actual_size: usize,
76 added: usize,
77 deleted: usize,
78}
79
80#[derive(Serialize)]
81struct SingleReport {
82 size: usize,
83}