2018-07-11 12:50:42 +00:00
|
|
|
"""Unit tests: set_operating_system"""
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
|
|
'proc_value, expected_os', [
|
|
|
|
('missing', 'uname'),
|
2020-02-03 14:30:34 +00:00
|
|
|
('has microsoft inside', 'WSL'), # case insensitive
|
|
|
|
('has Microsoft inside', 'WSL'), # case insensitive
|
2018-07-11 12:50:42 +00:00
|
|
|
('another value', 'uname'),
|
|
|
|
], ids=[
|
|
|
|
'/proc/version missing',
|
2020-02-03 14:30:34 +00:00
|
|
|
'/proc/version includes ms',
|
|
|
|
'/proc/version excludes Ms',
|
|
|
|
'another value',
|
2018-07-11 12:50:42 +00:00
|
|
|
])
|
|
|
|
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
|