openlark 0.17.0

飞书开放平台 Rust SDK - 企业级高覆盖率 API 客户端,极简依赖一条命令
Documentation
import json
import tempfile
import unittest
from pathlib import Path
import importlib.util


MODULE_PATH = Path(__file__).resolve().parents[1] / "release_quality_status.py"
SPEC = importlib.util.spec_from_file_location("release_quality_status", MODULE_PATH)
release_quality_status = importlib.util.module_from_spec(SPEC)
assert SPEC.loader is not None
SPEC.loader.exec_module(release_quality_status)


class ReleaseQualityStatusTests(unittest.TestCase):
    def test_render_rows_marks_contract_and_snapshot_signals(self):
        with tempfile.TemporaryDirectory() as temp_dir:
            root = Path(temp_dir)
            (root / "Cargo.toml").write_text(
                """
[workspace]
members = ["crates/openlark-demo"]

[package]
name = "openlark"
version = "0.15.0"
                """.strip(),
                encoding="utf-8",
            )

            crate_dir = root / "crates" / "openlark-demo"
            crate_dir.mkdir(parents=True)
            (crate_dir / "Cargo.toml").write_text(
                """
[package]
name = "openlark-demo"
version = "0.15.0"
                """.strip(),
                encoding="utf-8",
            )
            tests_dir = crate_dir / "tests"
            tests_dir.mkdir()
            (tests_dir / "demo_contract_models.rs").write_text("// contract", encoding="utf-8")
            (tests_dir / "helper_snapshots.rs").write_text("// snapshots", encoding="utf-8")
            snapshots_dir = tests_dir / "snapshots"
            snapshots_dir.mkdir()
            (snapshots_dir / "demo.snap").write_text("snapshot", encoding="utf-8")

            summary = {
                "crates": {
                    "openlark-demo": {
                        "completion_rate": 97.5,
                        "missing": 2,
                        "priority_counts": {"P0": 1, "P1": 1},
                    }
                }
            }

            rows = release_quality_status.build_rows(root, summary)
            demo = next(row for row in rows if row["crate"] == "openlark-demo")
            self.assertEqual(demo["typed_coverage"], "97.5%")
            self.assertEqual(demo["missing"], 2)
            self.assertEqual(demo["contract_tests"], "yes")
            self.assertEqual(demo["snapshot_tests"], "yes")
            self.assertEqual(demo["note"], "缺口:P0=1, P1=1")

    def test_render_rows_marks_non_summary_crate_as_na(self):
        with tempfile.TemporaryDirectory() as temp_dir:
            root = Path(temp_dir)
            (root / "Cargo.toml").write_text(
                """
[workspace]
members = ["crates/openlark-core"]

[package]
name = "openlark"
version = "0.15.0"
                """.strip(),
                encoding="utf-8",
            )
            crate_dir = root / "crates" / "openlark-core"
            crate_dir.mkdir(parents=True)
            (crate_dir / "Cargo.toml").write_text(
                """
[package]
name = "openlark-core"
version = "0.15.0"
                """.strip(),
                encoding="utf-8",
            )

            rows = release_quality_status.build_rows(root, {"crates": {}})
            core = next(row for row in rows if row["crate"] == "openlark-core")
            self.assertEqual(core["typed_coverage"], "n/a")
            self.assertEqual(core["missing"], "n/a")
            self.assertEqual(core["note"], "非 typed API 覆盖统计对象")


if __name__ == "__main__":
    unittest.main()