Skip to content

Commit 8351b9b

Browse files
committed
tests/sshdriver: Add scp
Signed-off-by: Sebastian Gross <[email protected]>
1 parent 9e9f828 commit 8351b9b

File tree

1 file changed

+155
-0
lines changed

1 file changed

+155
-0
lines changed

tests/test_sshdriver.py

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22
import socket
3+
import os
34

45
from labgrid import Environment
56
from labgrid.driver import SSHDriver, ExecutionError
@@ -218,3 +219,157 @@ def test_unix_socket_forward(ssh_localhost, tmpdir):
218219
send_socket.send(test_string.encode("utf-8"))
219220

220221
assert client_socket.recv(16).decode("utf-8") == test_string
222+
223+
224+
@pytest.mark.sshusername
225+
def test_local_scp_to(ssh_localhost, tmpdir):
226+
l_dir = tmpdir.join("local")
227+
r_dir = tmpdir.join("remote")
228+
229+
os.mkdir(l_dir)
230+
os.mkdir(r_dir)
231+
232+
magic = ["FOObar 1337 scp-to"]
233+
name = "test_scp-to.txt"
234+
235+
file = l_dir.join(name)
236+
open(file, 'x').writelines(magic)
237+
238+
ssh_localhost.scp(src=f'{file}', dst=f':{r_dir}')
239+
assert open(r_dir.join(name), 'r').readlines() == magic
240+
241+
242+
@pytest.mark.sshusername
243+
def test_local_scp_from(ssh_localhost, tmpdir):
244+
l_dir = tmpdir.join("local")
245+
r_dir = tmpdir.join("remote")
246+
247+
os.mkdir(l_dir)
248+
os.mkdir(r_dir)
249+
250+
magic = ["FOObar 1337 scp-to"]
251+
name = 'test_scp-from.txt'
252+
253+
file = r_dir.join(name)
254+
open(file, 'x').writelines(magic)
255+
256+
ssh_localhost.scp(src=f':{file}', dst=f'{l_dir}')
257+
assert open(l_dir.join(name), 'r').readlines() == magic
258+
259+
260+
@pytest.mark.sshusername
261+
def test_local_scp_to_multi(ssh_localhost, tmpdir):
262+
l_dir = tmpdir.join("local")
263+
r_dir = tmpdir.join("remote")
264+
os.mkdir(l_dir)
265+
os.mkdir(r_dir)
266+
267+
n_files = 13
268+
269+
magics = [[f"FOObar 1337 scp-to_{i}"] for i in range(n_files)]
270+
names = [f"test_scp-to_{i}.txt" for i in range(n_files)]
271+
272+
files = [str(l_dir.join(name)) for name in names]
273+
for i in range(n_files):
274+
open(files[i], 'x').writelines(magics[i])
275+
276+
ssh_localhost.scp(src=files, dst=f':{r_dir}')
277+
278+
for i in range(n_files):
279+
assert open(r_dir.join(names[i]), 'r').readlines() == magics[i]
280+
281+
282+
@pytest.mark.sshusername
283+
def test_local_scp_from_multi(ssh_localhost, tmpdir):
284+
l_dir = tmpdir.join("local")
285+
r_dir = tmpdir.join("remote")
286+
os.mkdir(l_dir)
287+
os.mkdir(r_dir)
288+
289+
n_files = 13
290+
291+
magics = [[f"FOObar 1337 scp-from_{i}"] for i in range(n_files)]
292+
names = [f"test_scp-from_{i}.txt" for i in range(n_files)]
293+
294+
files = [str(r_dir.join(name)) for name in names]
295+
for i in range(n_files):
296+
open(files[i], 'x').writelines(magics[i])
297+
298+
ssh_localhost.scp(src=[f":{f}" for f in files], dst=f'{l_dir}')
299+
300+
for i in range(n_files):
301+
assert open(l_dir.join(names[i]), 'r').readlines() == magics[i]
302+
303+
304+
@pytest.mark.sshusername
305+
def test_local_scp_to_recursive(ssh_localhost, tmpdir):
306+
l_dir = tmpdir.join("local")
307+
r_dir = tmpdir.join("remote")
308+
os.mkdir(l_dir)
309+
os.mkdir(r_dir)
310+
311+
n_files = 13
312+
313+
magics = [[f"FOObar 1337 scp-to_{i}"] for i in range(n_files)]
314+
names = [f"test_scp-to_{i}.txt" for i in range(n_files)]
315+
316+
files = [str(l_dir.join(name)) for name in names]
317+
for i in range(n_files):
318+
open(files[i], 'x').writelines(magics[i])
319+
320+
ssh_localhost.scp(src=f"{l_dir}", dst=f':{r_dir}', recursive=True)
321+
322+
for i in range(n_files):
323+
assert open(r_dir.join("local").join(names[i]), 'r').readlines() == magics[i]
324+
325+
326+
@pytest.mark.sshusername
327+
def test_local_scp_from_recursive(ssh_localhost, tmpdir):
328+
l_dir = tmpdir.join("local")
329+
r_dir = tmpdir.join("remote")
330+
os.mkdir(l_dir)
331+
os.mkdir(r_dir)
332+
333+
n_files = 13
334+
335+
magics = [[f"FOObar 1337 scp-from_{i}"] for i in range(n_files)]
336+
names = [f"test_scp-from_{i}.txt" for i in range(n_files)]
337+
338+
files = [str(r_dir.join(name)) for name in names]
339+
for i in range(n_files):
340+
open(files[i], 'x').writelines(magics[i])
341+
342+
ssh_localhost.scp(src=f":{r_dir}", dst=f'{l_dir}', recursive=True)
343+
344+
for i in range(n_files):
345+
assert open(l_dir.join("remote").join(names[i]), 'r').readlines() == magics[i]
346+
347+
348+
@pytest.mark.sshusername
349+
def test_local_scp_none_remote(ssh_localhost, tmpdir):
350+
l_dir = tmpdir.join("local")
351+
r_dir = tmpdir.join("remote")
352+
os.mkdir(l_dir)
353+
os.mkdir(r_dir)
354+
355+
try:
356+
ssh_localhost.scp(src=l_dir, dst=r_dir)
357+
except ValueError:
358+
return
359+
360+
assert False
361+
362+
363+
@pytest.mark.sshusername
364+
def test_local_scp_both_remote(ssh_localhost, tmpdir):
365+
l_dir = tmpdir.join("local")
366+
r_dir = tmpdir.join("remote")
367+
os.mkdir(l_dir)
368+
os.mkdir(r_dir)
369+
370+
try:
371+
ssh_localhost.scp(src=f":{l_dir}", dst=f":{r_dir}")
372+
except ValueError:
373+
return
374+
375+
assert False

0 commit comments

Comments
 (0)