# HG changeset patch # User Simon Sapin # Date 2021-12-13 13:37:16 # Node ID 0c408831b2f101fe67d52cbef50f02bfc5aa695b # Parent bf2738e03e96332fc05cbc71d8e5462ee2ecebab rhg: Print "bad match" errors in rhg status Previously these would only be visible if enabled with some RUST_LOG environment variable. Differential Revision: https://phab.mercurial-scm.org/D11908 diff --git a/rust/rhg/src/commands/status.rs b/rust/rhg/src/commands/status.rs --- a/rust/rhg/src/commands/status.rs +++ b/rust/rhg/src/commands/status.rs @@ -237,8 +237,20 @@ pub fn run(invocation: &crate::CliInvoca warn!("Pattern warnings: {:?}", &pattern_warnings); } - if !ds_status.bad.is_empty() { - warn!("Bad matches {:?}", &(ds_status.bad)) + for (path, error) in ds_status.bad { + let error = match error { + hg::BadMatch::OsError(code) => { + std::io::Error::from_raw_os_error(code).to_string() + } + hg::BadMatch::BadType(ty) => { + format!("unsupported file type (type is {})", ty) + } + }; + ui.write_stderr(&format_bytes!( + b"{}: {}\n", + path.as_bytes(), + error.as_bytes() + ))? } if !ds_status.unsure.is_empty() { info!( diff --git a/tests/test-permissions.t b/tests/test-permissions.t --- a/tests/test-permissions.t +++ b/tests/test-permissions.t @@ -11,10 +11,6 @@ > EOF #endif -TODO: fix rhg bugs that make this test fail when status is enabled - $ unset RHG_STATUS - - $ hg init t $ cd t @@ -82,7 +78,7 @@ TODO: fix rhg bugs that make this test f (fsmonitor makes "hg status" avoid accessing to "dir") $ hg status - dir: Permission denied + dir: Permission denied* (glob) M a #endif