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
53 lines
2.6 KiB
9 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')
|