40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
"""Unit tests: set_operating_system"""
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"proc_value, expected_os",
|
|
[
|
|
("missing", "uname"),
|
|
("has microsoft inside", "WSL"), # case insensitive
|
|
("has Microsoft inside", "WSL"), # case insensitive
|
|
("another value", "uname"),
|
|
],
|
|
ids=[
|
|
"/proc/version missing",
|
|
"/proc/version includes ms",
|
|
"/proc/version excludes Ms",
|
|
"another value",
|
|
],
|
|
)
|
|
def test_set_operating_system(runner, paths, tst_sys, proc_value, expected_os):
|
|
"""Run set_operating_system and test result"""
|
|
|
|
# Normally /proc/version (set in PROC_VERSION) is inspected to identify
|
|
# WSL. During testing, we will override that value.
|
|
proc_version = paths.root.join("proc_version")
|
|
if proc_value != "missing":
|
|
proc_version.write(proc_value)
|
|
script = f"""
|
|
YADM_TEST=1 source {paths.pgm}
|
|
PROC_VERSION={proc_version}
|
|
set_operating_system
|
|
echo $OPERATING_SYSTEM
|
|
"""
|
|
run = runner(command=["bash"], inp=script)
|
|
assert run.success
|
|
assert run.err == ""
|
|
if expected_os == "uname":
|
|
expected_os = tst_sys
|
|
assert run.out.rstrip() == expected_os
|