diff options
| -rw-r--r-- | test/test-manager/src/vm/provision.rs | 17 |
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(()) } |
