Source code for ramble.test.util.yaml_generation

# Copyright 2022-2025 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.

import pytest
import ruamel.yaml as yaml

import ramble.repository
import ramble.util.yaml_generation

import spack.util.spack_yaml as syaml


[docs] @pytest.fixture(scope="session") def yaml_config(tmpdir_factory): test_data = {} test_data["foo"] = {} test_data["foo"]["foo2"] = {} test_data["foo"]["foo2"]["foo3"] = "foo4" test_data["bar"] = {} test_data["bar"]["bar2"] = {} test_data["bar"]["bar_str"] = "bar" test_data["bar"]["bar2"]["bar3"] = "bar4" test_data["bar"]["bar2"][32] = 0.3 test_data["baz"] = {} test_data["baz"]["baz2"] = "baz" path = str(tmpdir_factory.mktemp("config.yaml").join("config")) with open(path, "w+") as f: yaml.dump( test_data, default_flow_style=False, width=syaml.maxint, Dumper=syaml.OrderedLineDumper, stream=f, ) return path
[docs] def test_read_config_file(yaml_config): read_data = ramble.util.yaml_generation.read_config_file(yaml_config) assert "foo" in read_data assert "foo2" in read_data["foo"] assert "bar" in read_data assert "bar2" in read_data["bar"] assert 32 in read_data["bar"]["bar2"] assert "baz" in read_data assert "baz2" in read_data["baz"]
[docs] def test_all_config_options(yaml_config): read_data = ramble.util.yaml_generation.read_config_file(yaml_config) all_configs = ramble.util.yaml_generation.all_config_options(read_data) assert "foo.foo2.foo3" in all_configs assert "bar.bar2.bar3" in all_configs assert "bar.bar_str" in all_configs assert "baz.baz2" in all_configs
[docs] def test_get_config_value(yaml_config): read_data = ramble.util.yaml_generation.read_config_file(yaml_config) config_tests = [ ("foo.foo2.foo3", "foo4"), ("bar.bar_str", "bar"), ("bar.bar2.bar3", "bar4"), ("baz.baz2", "baz"), ("bar.bar2.32", 0.3), ] for config, ans in config_tests: test_val = ramble.util.yaml_generation.get_config_value(read_data, config) assert test_val == ans
[docs] def test_set_config_value(yaml_config): read_data = ramble.util.yaml_generation.read_config_file(yaml_config) ramble.util.yaml_generation.set_config_value(read_data, "foo.foo2.foo3", "foo_set") assert read_data["foo"]["foo2"]["foo3"] == "foo_set" # Test without forcing ramble.util.yaml_generation.set_config_value(read_data, "foo.bar.baz", "test") assert "bar" not in read_data["foo"] # Test with forcing ramble.util.yaml_generation.set_config_value(read_data, "foo.bar.baz", "test", force=True) assert read_data["foo"]["bar"]["baz"] == "test"
[docs] def test_remove_config_value(yaml_config): read_data = ramble.util.yaml_generation.read_config_file(yaml_config) # Test parent removal ramble.util.yaml_generation.remove_config_value(read_data, "foo.foo2.foo3") assert "foo" not in read_data # Test partial removal ramble.util.yaml_generation.remove_config_value(read_data, "bar.bar_str") assert "bar_str" not in read_data["bar"] assert "bar2" in read_data["bar"]