From: Ian Jackson Date: Thu, 24 Dec 2020 01:05:11 +0000 (+0000) Subject: just_warn X-Git-Tag: otter-0.2.0~138 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=920e8337c9af397f9362812d6818186505d8f169;p=otter.git just_warn Signed-off-by: Ian Jackson --- diff --git a/wdriver.rs b/wdriver.rs index a410d818..e1873205 100644 --- a/wdriver.rs +++ b/wdriver.rs @@ -6,6 +6,7 @@ pub use anyhow::{anyhow, Context}; pub use fehler::{throw, throws}; pub use structopt::StructOpt; pub use thirtyfour_sync as t4; +use nix::unistd::LinkatFlags; pub use void::Void; pub use t4::WebDriverCommands; @@ -31,6 +32,7 @@ pub const URL : &str = "http://localhost:8000"; pub trait AlwaysContext { fn always_context(self, msg: &'static str) -> anyhow::Result; + fn just_warn(self, msg: &'static str) -> Option; } impl AlwaysContext for Result @@ -41,6 +43,15 @@ where Self: anyhow::Context if x.is_ok() { eprintln!("completed {}.", msg) }; x } + fn just_warn(self, msg: &'static str) -> Option { + match self { + Ok(x) => Some(x), + e@ Err(_) => { + eprintln!("warning: {:#}", e.context(msg).err().unwrap()); + None + }, + } + } } #[derive(Debug,Clone)] @@ -424,25 +435,10 @@ fn prepare_thirtyfour() { impl Drop for FinalInfoCollection { fn drop(&mut self) { - match (||{ - fs::copy("Xvfb_screen0","final-auto.xwd") - .context("copy")?; - - let mut cmd = Command::new("xwd"); - cmd.args("-root \ - -silent \ - -out final-xwd.xwd".split(' ')); - let s = cmd - .spawn().context("spawn")? - .wait().context("wait")?; - if !s.success() { - throw!(anyhow!("failed, waitstatus={}", &s)); - } - Ok::<_,AE>(()) - })() { - Ok(()) => eprintln!("taken screenshot"), - Err(e) => eprintln!("screenshot failed: {:#?}", &e), - } + nix::unistd::linkat(None, "Xvfb_screen0", + None, "Xvfb_keep.xwd", + LinkatFlags::NoSymlinkFollow) + .just_warn("preserve Xvfb screen"); } }