# Copyright 2022-2026 The Ramble Authors
#
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
# https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
# <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
# option. This file may not be copied, modified, or distributed
# except according to those terms.
"""Perform tests of the package manager class"""
import pytest
import ramble.repository
UserManagedPackageManager = ramble.repository.get_obj_class(
"user-managed", ramble.repository.ObjectTypes.package_managers
)
pm_types = [UserManagedPackageManager]
[docs]
@pytest.mark.parametrize("pm_class", pm_types)
def test_pkg_man_type_features(pm_class):
pm_path = "/path/to/pm"
test_pm = pm_class(pm_path)
assert hasattr(test_pm, "object_variables")
assert hasattr(test_pm, "maintainers")
[docs]
def add_variable(pm_inst, pm_num=1):
var_name = f"TestVariable{pm_num}"
var_default = f"DefaultValue{pm_num}"
var_description = f"Description{pm_num}"
pm_inst.package_manager_variable(var_name, default=var_default, description=var_description)
var_def = {"name": var_name, "default": var_default, "description": var_description}
return var_def
[docs]
@pytest.mark.parametrize("pm_class", pm_types)
def test_pkg_man_variables(pm_class):
test_defs = {}
pm_inst = pm_class("/not/a/path")
test_defs.update(add_variable(pm_inst))
var_name = test_defs["name"]
assert hasattr(pm_inst, "object_variables")
found = False
for var in pm_inst.object_variables[frozenset()]:
if var_name == var.name:
assert var.default == test_defs["default"]
assert var.description == test_defs["description"]
found = True
assert found