summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--test/test-manager/src/vm/provision.rs17
1 files changed, 4 insertions, 13 deletions
diff --git a/test/test-manager/src/vm/provision.rs b/test/test-manager/src/vm/provision.rs
index 359cf16c33..0997780207 100644
--- a/test/test-manager/src/vm/provision.rs
+++ b/test/test-manager/src/vm/provision.rs
@@ -196,20 +196,11 @@ fn ssh_send_file<P: AsRef<Path> + Copy>(
}
/// Analogues to [`std::fs::write`], but over ssh!
-fn ssh_write<P: AsRef<Path>, C: AsRef<[u8]>>(session: &Session, dest: P, source: C) -> Result<()> {
- let bytes = source.as_ref();
+fn ssh_write<P: AsRef<Path>>(session: &Session, dest: P, mut source: impl Read) -> Result<()> {
+ let sftp = session.sftp()?;
+ let mut remote_file = sftp.create(dest.as_ref())?;
- let source = &mut &bytes[..];
- let source_len = u64::try_from(bytes.len()).context("File too large, did not fit in a u64")?;
-
- let mut remote_file = session.scp_send(dest.as_ref(), 0o744, source_len, None)?;
-
- io::copy(source, &mut remote_file).context("failed to write file")?;
-
- remote_file.send_eof()?;
- remote_file.wait_eof()?;
- remote_file.close()?;
- remote_file.wait_close()?;
+ io::copy(&mut source, &mut remote_file).context("failed to write file")?;
Ok(())
}