def test_warn_when_rules_matches_zero_nodes(self, capsys, info_warn_logger, tmp_path_factory): config_file = create_temp_yaml_file( tmp_path_factory, """ [rules] /does_not_exist = left /array_of_hashes[name = "Does Not Compute"] = right """) lhs_yaml_file = create_temp_yaml_file( tmp_path_factory, """--- hash: lhs_exclusive: lhs value 1 merge_targets: subkey: lhs value 2 subarray: - one - two array_of_hashes: - name: LHS Record 1 id: 1 prop: LHS value AoH 1 - name: LHS Record 2 id: 2 prop: LHS value AoH 2 """) lhs_yaml = get_yaml_editor() lhs_data = get_yaml_data(lhs_yaml, info_warn_logger, lhs_yaml_file) mc = MergerConfig(info_warn_logger, SimpleNamespace(config=config_file)) mc.prepare(lhs_data) console = capsys.readouterr() assert "YAML Path matches no nodes" in console.out
def test_aoh_merge_key_default(self, quiet_logger, tmp_path_factory): lhs_yaml_file = create_temp_yaml_file( tmp_path_factory, """--- hash: lhs_exclusive: lhs value 1 merge_targets: subkey: lhs value 2 subarray: - one - two array_of_hashes: - name: LHS Record 1 id: 1 prop: LHS value AoH 1 - name: LHS Record 2 id: 2 prop: LHS value AoH 2 """) lhs_yaml = get_yaml_editor() (lhs_data, lhs_loaded) = get_yaml_data(lhs_yaml, quiet_logger, lhs_yaml_file) mc = MergerConfig(quiet_logger, SimpleNamespace()) mc.prepare(lhs_data) node = lhs_data["array_of_hashes"] parent = lhs_data parentref = "array_of_hashes" record = node[0] assert mc.aoh_merge_key(NodeCoords(node, parent, parentref), record) == "name"
def test_set_merge_mode_ini_rule_overrides_cli(self, quiet_logger, tmp_path_factory, cli, ini_default, ini_rule, mode): config_file = create_temp_yaml_file( tmp_path_factory, """ [defaults] sets = {} [rules] /hash/merge_targets/subset = {} """.format(ini_default, ini_rule)) lhs_yaml_file = create_temp_yaml_file( tmp_path_factory, """--- hash: lhs_exclusive: lhs value 1 merge_targets: subkey: lhs value 2 subset: ? one ? two """) lhs_yaml = get_yaml_editor() (lhs_data, lhs_loaded) = get_yaml_data(lhs_yaml, quiet_logger, lhs_yaml_file) mc = MergerConfig(quiet_logger, SimpleNamespace(config=config_file, sets=cli)) mc.prepare(lhs_data) node = lhs_data["hash"]["merge_targets"]["subset"] parent = lhs_data["hash"]["merge_targets"] parentref = "subset" assert mc.set_merge_mode(NodeCoords(node, parent, parentref)) == mode
def test_aoh_merge_mode_ini_rule_overrides_cli(self, quiet_logger, tmp_path_factory, cli, ini_default, ini_rule, mode): config_file = create_temp_yaml_file( tmp_path_factory, """ [defaults] aoh = {} [rules] /array_of_hashes = {} """.format(ini_default, ini_rule)) lhs_yaml_file = create_temp_yaml_file( tmp_path_factory, """--- hash: lhs_exclusive: lhs value 1 merge_targets: subkey: lhs value 2 subarray: - one - two array_of_hashes: - name: LHS Record 1 id: 1 prop: LHS value AoH 1 - name: LHS Record 2 id: 2 prop: LHS value AoH 2 """) lhs_yaml = get_yaml_editor() (lhs_data, lhs_loaded) = get_yaml_data(lhs_yaml, quiet_logger, lhs_yaml_file) mc = MergerConfig(quiet_logger, SimpleNamespace(config=config_file, aoh=cli)) mc.prepare(lhs_data) node = lhs_data["array_of_hashes"] parent = lhs_data parentref = "array_of_hashes" assert mc.aoh_merge_mode(NodeCoords(node, parent, parentref)) == mode