weopqrst/mooncassette/drift does not have a README file

    DriftEntry

    pub(all) struct DriftEntry {
    kind : DriftKind
    fingerprint : String
    model : String
    old_index : Int?
    new_index : Int?
    } derive(Eq)

    一条漂移记录。

    DriftKind

    pub(all) enum DriftKind {
    Removed
    Added
    Changed
    } derive(Eq)

    漂移的类型。

    DriftReport

    pub(all) struct DriftReport {
    entries : Array[DriftEntry]
    unchanged : Int
    } derive(Eq)

    漂移报告。

    条目顺序是确定的:先 Removed,再 Changed,最后 Added 每组内部按各自的下标升序。这样报告可以直接用于 diff 或快照测试。

    DriftReport::count_of

    fn DriftReport::count_of(self : DriftReport, kind : DriftKind) -> Int

    统计某一类漂移的条数。

    DriftReport::is_clean

    fn DriftReport::is_clean(self : DriftReport) -> Bool

    是否存在任何漂移。

    DriftReport::lines

    fn DriftReport::lines(self : DriftReport) -> Array[String]

    逐条渲染报告,每行一条。

    DriftReport::summary

    fn DriftReport::summary(self : DriftReport) -> String

    一行式摘要,适合作为日志或 CI 输出。

    compare

    比较两份录制,产出漂移报告。

    匹配依据是请求指纹(即规范化后的请求),因此:
    • 对象键顺序变化、request_id 之类的易变字段变化,都不会被误判成漂移;
    • 请求本身改动则会表现为「一条 Removed + 一条 Added」,这是刻意的: 我们无法判断改后的请求「对应」原来哪一条,与其猜,不如如实报告。

    同一指纹出现多次时,按出现顺序两两配对,从而正确处理 「同一请求被调用多次」的情形。

    render_entry

    fn render_entry(entry : DriftEntry) -> String

    渲染一条漂移记录。

    Source Files