Codex Handbook
git-utils/src/fsmonitor_tests.rs 139 lines
use std::collections::VecDeque;use std::future::Future;use pretty_assertions::assert_eq;use super::FsmonitorOverride;use super::FsmonitorProbeRunner;use super::detect_fsmonitor_override;struct ProbeResponse {    args: Vec<&'static str>,    output: Option<Vec<u8>>,}struct FakeRunner {    responses: VecDeque<ProbeResponse>,}impl FsmonitorProbeRunner for FakeRunner {    fn run_probe(&mut self, args: &[&str]) -> impl Future<Output = Option<Vec<u8>>> + Send {        let response = self.responses.pop_front().expect("missing probe response");        assert_eq!(args, response.args);        std::future::ready(response.output)    }}#[tokio::test]async fn detects_supported_builtin_fsmonitor_values() {    let cases = [        (            "missing config",            vec![response(config_args(), /*output*/ None)],            FsmonitorOverride::Disabled,        ),        (            "helper path",            vec![                response(config_args(), Some(b"/tmp/fsmonitor-helper\0")),                response(                    typed_config_args("/tmp/fsmonitor-helper"),                    /*output*/ None,                ),            ],            FsmonitorOverride::Disabled,        ),        (            "false spelling",            vec![response(config_args(), Some(b"OFF\0"))],            FsmonitorOverride::Disabled,        ),        (            "unsupported Git",            vec![                response(config_args(), Some(b"yes\0")),                response(capability_args(), Some(b"")),            ],            FsmonitorOverride::Disabled,        ),        (            "common true spelling",            vec![                response(config_args(), Some(b"On\0")),                response(capability_args(), Some(fsmonitor_capability())),            ],            FsmonitorOverride::BuiltIn,        ),        (            "numeric true",            vec![                response(config_args(), Some(b"2k\0")),                response(typed_config_args("2k"), Some(b"true\0")),                response(capability_args(), Some(fsmonitor_capability())),            ],            FsmonitorOverride::BuiltIn,        ),        (            "valueless true",            vec![                response(config_args(), Some(b"\0")),                response(typed_config_args(""), Some(b"true\0")),                response(capability_args(), Some(fsmonitor_capability())),            ],            FsmonitorOverride::BuiltIn,        ),        (            "explicit empty false",            vec![                response(config_args(), Some(b"\0")),                response(typed_config_args(""), Some(b"false\0")),            ],            FsmonitorOverride::Disabled,        ),    ];    for (name, responses, expected) in cases {        let mut runner = FakeRunner {            responses: responses.into(),        };        let actual = detect_fsmonitor_override(&mut runner).await;        assert_eq!(            (actual, runner.responses.len()),            (expected, 0),            "case: {name}"        );    }}fn response(args: Vec<&'static str>, output: Option<&[u8]>) -> ProbeResponse {    ProbeResponse {        args,        output: output.map(<[u8]>::to_vec),    }}fn config_args() -> Vec<&'static str> {    vec!["config", "--null", "--get", "core.fsmonitor"]}fn typed_config_args(value: &'static str) -> Vec<&'static str> {    vec![        "config",        "--null",        "--type=bool",        "--fixed-value",        "--get",        "core.fsmonitor",        value,    ]}fn capability_args() -> Vec<&'static str> {    vec!["version", "--build-options"]}fn fsmonitor_capability() -> &'static [u8] {    b"feature: fsmonitor--daemon\n"}