diff --git a/src/rust/engine/process_execution/src/lib.rs b/src/rust/engine/process_execution/src/lib.rs index a88b7e6cc70..e09c9ed93c2 100644 --- a/src/rust/engine/process_execution/src/lib.rs +++ b/src/rust/engine/process_execution/src/lib.rs @@ -21,7 +21,7 @@ extern crate tempdir; extern crate testutil; use bytes::Bytes; -use std::collections::BTreeMap; +use std::collections::{BTreeMap, BTreeSet}; use std::path::PathBuf; pub mod local; @@ -51,7 +51,7 @@ pub struct ExecuteProcessRequest { pub input_files: hashing::Digest, - pub output_files: Vec, + pub output_files: BTreeSet, } /// diff --git a/src/rust/engine/process_execution/src/local.rs b/src/rust/engine/process_execution/src/local.rs index b5549f3e6eb..086ae22e843 100644 --- a/src/rust/engine/process_execution/src/local.rs +++ b/src/rust/engine/process_execution/src/local.rs @@ -64,7 +64,7 @@ impl CommandRunner { .map(|posix_fs| Arc::new(posix_fs)) .and_then(|posix_fs| { posix_fs - .path_stats(output_file_paths) + .path_stats(output_file_paths.into_iter().collect()) .map_err(|e| format!("Error stating output files: {}", e)) .and_then(move |paths| { fs::Snapshot::from_path_stats( @@ -100,7 +100,7 @@ mod tests { use futures::Future; use super::{ExecuteProcessRequest, ExecuteProcessResult}; use std; - use std::collections::BTreeMap; + use std::collections::{BTreeMap, BTreeSet}; use std::env; use std::os::unix::fs::PermissionsExt; use std::path::{Path, PathBuf}; @@ -116,7 +116,7 @@ mod tests { argv: owned_string_vec(&["/bin/echo", "-n", "foo"]), env: BTreeMap::new(), input_files: fs::EMPTY_DIGEST, - output_files: vec![], + output_files: BTreeSet::new(), }); assert_eq!( @@ -137,7 +137,7 @@ mod tests { argv: owned_string_vec(&["/bin/bash", "-c", "echo -n foo ; echo >&2 -n bar ; exit 1"]), env: BTreeMap::new(), input_files: fs::EMPTY_DIGEST, - output_files: vec![], + output_files: BTreeSet::new(), }); assert_eq!( @@ -162,7 +162,7 @@ mod tests { argv: owned_string_vec(&["/usr/bin/env"]), env: env.clone(), input_files: fs::EMPTY_DIGEST, - output_files: vec![], + output_files: BTreeSet::new(), }); let stdout = String::from_utf8(result.unwrap().stdout.to_vec()).unwrap(); @@ -194,7 +194,7 @@ mod tests { argv: owned_string_vec(&["/usr/bin/env"]), env: env, input_files: fs::EMPTY_DIGEST, - output_files: vec![], + output_files: BTreeSet::new(), } } @@ -210,7 +210,7 @@ mod tests { argv: owned_string_vec(&["echo", "-n", "foo"]), env: BTreeMap::new(), input_files: fs::EMPTY_DIGEST, - output_files: vec![], + output_files: BTreeSet::new(), }).expect_err("Want Err"); } @@ -224,7 +224,7 @@ mod tests { ]), env: BTreeMap::new(), input_files: fs::EMPTY_DIGEST, - output_files: vec![], + output_files: BTreeSet::new(), }); assert_eq!( result.unwrap(), @@ -254,7 +254,7 @@ mod tests { ], env: BTreeMap::new(), input_files: fs::EMPTY_DIGEST, - output_files: vec![output_file_path.clone()], + output_files: vec![output_file_path.clone()].into_iter().collect(), }, working_dir, ); diff --git a/src/rust/engine/process_execution/src/remote.rs b/src/rust/engine/process_execution/src/remote.rs index 9ca7c3a20b6..e788e94157d 100644 --- a/src/rust/engine/process_execution/src/remote.rs +++ b/src/rust/engine/process_execution/src/remote.rs @@ -472,7 +472,7 @@ mod tests { use testutil::{as_bytes, owned_string_vec}; use super::{CommandRunner, ExecuteProcessRequest, ExecuteProcessResult, ExecutionError}; - use std::collections::BTreeMap; + use std::collections::{BTreeMap, BTreeSet}; use std::iter::{self, FromIterator}; use std::sync::Arc; use std::time::Duration; @@ -501,7 +501,7 @@ mod tests { argv: owned_string_vec(&["/bin/echo", "-n", "bar"]), env: BTreeMap::new(), input_files: fs::EMPTY_DIGEST, - output_files: vec![], + output_files: BTreeSet::new(), }).unwrap() .1, vec![], @@ -1119,7 +1119,7 @@ mod tests { argv: owned_string_vec(&["/bin/echo", "-n", "foo"]), env: BTreeMap::new(), input_files: fs::EMPTY_DIGEST, - output_files: vec![], + output_files: BTreeSet::new(), } } @@ -1266,7 +1266,7 @@ mod tests { argv: owned_string_vec(&["/bin/cat", "roland"]), env: BTreeMap::new(), input_files: TestDirectory::containing_roland().digest(), - output_files: vec![], + output_files: BTreeSet::new(), } } } diff --git a/src/rust/engine/process_executor/src/main.rs b/src/rust/engine/process_executor/src/main.rs index f200083ff89..f99c4f41d91 100644 --- a/src/rust/engine/process_executor/src/main.rs +++ b/src/rust/engine/process_executor/src/main.rs @@ -11,7 +11,7 @@ use clap::{App, AppSettings, Arg}; use futures::future::Future; use hashing::{Digest, Fingerprint}; use tempdir::TempDir; -use std::collections::BTreeMap; +use std::collections::{BTreeMap, BTreeSet}; use std::iter::Iterator; use std::process::exit; use std::sync::Arc; @@ -128,7 +128,7 @@ fn main() { argv, env, input_files, - output_files: vec![], + output_files: BTreeSet::new(), }; let result = match server_arg {