-
Notifications
You must be signed in to change notification settings - Fork 285
/
Copy pathtest_write_images.py
40 lines (31 loc) · 1.51 KB
/
test_write_images.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import pytest
import re
import subprocess
import os
import time
from shlex import quote
def shell(cmd, url):
msg = ''
try:
subprocess.run(cmd, shell=True, check=True, capture_output=True)
except subprocess.CalledProcessError as err:
msg = "{} Error running '{}' exit code {} stderr: '{}'".format(url, err.cmd, err.returncode, err.output)
if msg != '':
pytest.fail(msg, False)
def test_write_image_and_modify_fat(imageitem, device):
if not device:
pytest.skip("--device=<device> not specified. Skipping write tests")
return
assert "extract_sha256" in imageitem, "{}: missing extract_sha256. Cannot perform write test.".format(imageitem["url"])
assert "image_download_size" in imageitem, "{}: missing image_download_size. Cannot perform write test.".format(imageitem["url"])
assert re.search("^[a-z0-9]{64}$", imageitem["extract_sha256"]) != None
cacheFile = "cache/"+imageitem["extract_sha256"]
if os.path.exists(cacheFile) and os.path.getsize(cacheFile) != imageitem["image_download_size"]:
os.remove(cacheFile)
shell("rpi-imager --cli --quiet --enable-writing-system-drives --sha256 {} --cache-file {} --first-run-script test_firstrun.txt {} {}".format(
quote(imageitem["extract_sha256"]), quote(cacheFile), quote(imageitem["url"]), quote(device) ), imageitem["url"])
time.sleep(0.5)
shell("fsck.vfat -n "+quote(device+"p1"), imageitem["url"])
@pytest.fixture
def device(request):
return request.config.getoption("--device")