Fix stdio observer refactor (#859)

This commit is contained in:
Andrea Fioraldi 2022-10-24 13:50:11 +02:00 committed by GitHub
parent de99ee1340
commit 1eb738695f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 28 additions and 20 deletions

View File

@ -212,7 +212,7 @@ where
pub fn from_cmd_with_file<P>(
cmd: &Command,
debug_child: bool,
mut observers: OT,
observers: OT,
path: P,
) -> Result<Self, Error>
where
@ -529,7 +529,7 @@ impl CommandExecutorBuilder {
/// Builds the `ComandExecutor`
pub fn build<EM, OT, S, Z>(
&self,
mut observers: OT,
observers: OT,
) -> Result<CommandExecutor<EM, OT, S, StdCommandConfigurator, Z>, Error>
where
OT: Debug + MatchName + ObserversTuple<S>,

View File

@ -141,13 +141,13 @@ where
/// Returns true if a `stdout` observer was added to the list
#[inline]
fn observes_stdout(&mut self) -> bool {
self.primary.as_mut().observes_stdout() || self.secondary.as_mut().observes_stdout()
fn observes_stdout(&self) -> bool {
self.primary.as_ref().observes_stdout() || self.secondary.as_ref().observes_stdout()
}
/// Returns true if a `stderr` observer was added to the list
#[inline]
fn observes_stderr(&mut self) -> bool {
self.primary.as_mut().observes_stderr() || self.secondary.as_mut().observes_stderr()
fn observes_stderr(&self) -> bool {
self.primary.as_ref().observes_stderr() || self.secondary.as_ref().observes_stderr()
}
/// Runs `observe_stdout` for all stdout observers in the list

View File

@ -93,12 +93,12 @@ where
/// If this observer observes `stdout`
#[inline]
fn observes_stdout(&mut self) -> bool {
fn observes_stdout(&self) -> bool {
false
}
/// If this observer observes `stderr`
#[inline]
fn observes_stderr(&mut self) -> bool {
fn observes_stderr(&self) -> bool {
false
}
@ -107,6 +107,7 @@ where
#[inline]
#[allow(unused_variables)]
fn observe_stdout(&mut self, stdout: &str) {}
/// React to new `stderr`
/// To use this, always return `true` from `observes_stderr`
#[inline]
@ -149,9 +150,9 @@ where
) -> Result<(), Error>;
/// Returns true if a `stdout` observer was added to the list
fn observes_stdout(&mut self) -> bool;
fn observes_stdout(&self) -> bool;
/// Returns true if a `stderr` observer was added to the list
fn observes_stderr(&mut self) -> bool;
fn observes_stderr(&self) -> bool;
/// Runs `observe_stdout` for all stdout observers in the list
fn observe_stdout(&mut self, stdout: &str);
@ -191,12 +192,13 @@ where
/// Returns true if a `stdout` observer was added to the list
#[inline]
fn observes_stdout(&mut self) -> bool {
fn observes_stdout(&self) -> bool {
false
}
/// Returns true if a `stderr` observer was added to the list
#[inline]
fn observes_stderr(&mut self) -> bool {
fn observes_stderr(&self) -> bool {
false
}
@ -204,6 +206,7 @@ where
#[inline]
#[allow(unused_variables)]
fn observe_stdout(&mut self, stdout: &str) {}
/// Runs `observe_stderr` for all stderr observers in the list
#[inline]
#[allow(unused_variables)]
@ -248,12 +251,13 @@ where
/// Returns true if a `stdout` observer was added to the list
#[inline]
fn observes_stdout(&mut self) -> bool {
fn observes_stdout(&self) -> bool {
self.0.observes_stdout() || self.1.observes_stdout()
}
/// Returns true if a `stderr` observer was added to the list
#[inline]
fn observes_stderr(&mut self) -> bool {
fn observes_stderr(&self) -> bool {
self.0.observes_stderr() || self.1.observes_stderr()
}
@ -261,10 +265,13 @@ where
#[inline]
fn observe_stdout(&mut self, stdout: &str) {
self.0.observe_stdout(stdout);
self.1.observe_stdout(stdout);
}
/// Runs `observe_stderr` for all stderr observers in the list
#[inline]
fn observe_stderr(&mut self, stderr: &str) {
self.0.observe_stderr(stderr);
self.1.observe_stderr(stderr);
}
}
@ -974,12 +981,12 @@ pub mod pybind {
// TODO: expose stdout/stderr to python
#[inline]
fn observes_stdout(&mut self) -> bool {
fn observes_stdout(&self) -> bool {
false
}
#[inline]
fn observes_stderr(&mut self) -> bool {
fn observes_stderr(&self) -> bool {
false
}

View File

@ -264,7 +264,7 @@ where
/// Do nothing on new `stderr`
#[inline]
fn observes_stderr(&mut self) -> bool {
fn observes_stderr(&self) -> bool {
true
}

View File

@ -32,9 +32,10 @@ where
S: UsesInput,
{
#[inline]
fn observes_stdout(&mut self) -> bool {
fn observes_stdout(&self) -> bool {
true
}
/// React to new `stdout`
fn observe_stdout(&mut self, stdout: &str) {
self.stdout = Some(stdout.into());
@ -71,11 +72,11 @@ where
S: UsesInput,
{
#[inline]
fn observes_stderr(&mut self) -> bool {
fn observes_stderr(&self) -> bool {
true
}
/// Do nothing on new `stderr`
/// React to new `stderr`
fn observe_stderr(&mut self, stderr: &str) {
self.stderr = Some(stderr.into());
}