diff --git a/tests/test_add_toml_integration.py b/tests/test_add_toml_integration.py index a0995dd..c321ee9 100644 --- a/tests/test_add_toml_integration.py +++ b/tests/test_add_toml_integration.py @@ -3,6 +3,8 @@ from dendropy import Tree +from tact.tree_util import get_tip_labels + execution_number = range(2) @@ -52,3 +54,35 @@ def test_lone_singleton(script_runner, execution_number, tmp_path, focal_clade): mrca_node = res.mrca(taxon_labels=all_tips) mrca_tips = set([x.taxon.label for x in mrca_node.leaf_iter()]) assert all_tips == mrca_tips + + +@pytest.mark.parametrize("execution_number", execution_number) +@pytest.mark.parametrize("clades", [["A", "B"], ["A", "C"], ["B", "C"]]) +def test_poly_singleton(script_runner, execution_number, tmp_path, clades): + config = f""" + [[tact]] + name = "X" + missing = 10 + + [[tact.include]] + stem = true + mrca = ["{clades[0]}"] + + [[tact.include]] + stem = true + mrca = ["{clades[1]}"] + """ + + backbone = "((A:1,B:1):1,C:2);" + res = run_tact(script_runner, tmp_path, config, backbone) + new_tips = set([f"X_tact_{x}" for x in range(10)]) + + all_tips = set() + for clade in clades: + mrca_node = None + all_tips.update(clade.mrca) + tip_node = res.mrca(taxon_labels=all_tips) + for nn in tip_node.ancestor_iter(): + all_tips.update(get_tip_labels(nn)) + mrca_node = res.mrca(taxon_labels=all_tips) + raise