"""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