You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
2.6 KiB

10 months ago
import mock
import pytest
from leapp.cli.commands import command_utils
from leapp.exceptions import CommandError
@mock.patch("leapp.cli.commands.command_utils.get_upgrade_paths_config",
return_value={"default": {"7.9": ["8.4"], "8.6": ["9.0"], "7": ["8.4"], "8": ["9.0"]}})
def test_get_target_version(mock_open, monkeypatch):
monkeypatch.setattr(command_utils, 'get_os_release_version_id', lambda x: '8.6')
assert command_utils.get_target_version('default') == '9.0'
monkeypatch.setenv('LEAPP_DEVEL_TARGET_RELEASE', '')
monkeypatch.setattr(command_utils, 'get_os_release_version_id', lambda x: '8.6')
assert command_utils.get_target_version('default') == '9.0'
monkeypatch.delenv('LEAPP_DEVEL_TARGET_RELEASE', raising=True)
# unsupported path
monkeypatch.setattr(command_utils, 'get_os_release_version_id', lambda x: '8.5')
assert command_utils.get_target_version('default') == '9.0'
@mock.patch("leapp.cli.commands.command_utils.get_upgrade_paths_config",
return_value={"default": {"7.9": ["8.4"], "8.6": ["9.0"], "7": ["8.4"], "8": ["9.0"]}})
def test_vet_upgrade_path(mock_open, monkeypatch):
monkeypatch.setattr(command_utils, 'get_os_release_version_id', lambda x: '8.6')
# make sure env var LEAPP_DEVEL_TARGET_RELEASE takes precedence
# when env var set to a bad version - abort the upgrade
args = mock.Mock(target='9.0')
monkeypatch.setenv('LEAPP_DEVEL_TARGET_RELEASE', '1.2badsemver')
with pytest.raises(CommandError) as err:
command_utils.vet_upgrade_path(args)
assert 'Unexpected format of target version' in err
# MAJOR.MINOR.PATCH is considered as bad version, only MAJOR.MINOR is accepted
args = mock.Mock(target='9.0')
monkeypatch.setenv('LEAPP_DEVEL_TARGET_RELEASE', '9.0.0')
with pytest.raises(CommandError) as err:
command_utils.vet_upgrade_path(args)
assert 'Unexpected format of target version' in err
# when env var set to a version not in upgrade_paths map - go on and use it
monkeypatch.setenv('LEAPP_DEVEL_TARGET_RELEASE', '1.2')
assert command_utils.vet_upgrade_path(args) == ('1.2', 'default')
# no env var set, --target is set to proper version
monkeypatch.delenv('LEAPP_DEVEL_TARGET_RELEASE', raising=False)
assert command_utils.vet_upgrade_path(args) == ('9.0', 'default')
# env var is set to proper version, --target is set to a bad one - use env var and go on with the upgrade
monkeypatch.setenv('LEAPP_DEVEL_TARGET_RELEASE', '9.0')
args = mock.Mock(target='1.2')
assert command_utils.vet_upgrade_path(args) == ('9.0', 'default')