summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorMarkus Pettersson <markus.pettersson@mullvad.net>2024-12-10 15:43:46 +0100
committerMarkus Pettersson <markus.pettersson@mullvad.net>2024-12-17 11:54:03 +0100
commit1a4730359f0edbf1c7c3d6489ff9616c2ac9e163 (patch)
tree1a92ae51567e1ad44305c1e4b7d4285b8f8c10f2 /test
parenta59360c0e3a5b6ae06db0854eb87821f5d207759 (diff)
downloadmullvadvpn-1a4730359f0edbf1c7c3d6489ff9616c2ac9e163.tar.xz
mullvadvpn-1a4730359f0edbf1c7c3d6489ff9616c2ac9e163.zip
Use SFTP instead of SCP to copy file
Fix SCP not working on well with Windows guests. Switch over to SFTP instead
Diffstat (limited to 'test')
-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(())
}