@@ -803,26 +803,42 @@ def test_generate_tree_from_commits(gitcommits, tags):
803
803
(
804
804
["BREAKING CHANGE" , "refactor" ],
805
805
{
806
- 2 : (["refactor" , "feat" , "fix" ], ["feat" , "fix" , "refactor" ]),
807
- 3 : (["BREAKING CHANGE" , "refactor" ], ["refactor" , "BREAKING CHANGE" ]),
806
+ "1.1.0" : {
807
+ "original" : ["feat" , "fix" , "refactor" ],
808
+ "sorted" : ["refactor" , "feat" , "fix" ],
809
+ },
810
+ "1.0.0" : {
811
+ "original" : ["refactor" , "BREAKING CHANGE" ],
812
+ "sorted" : ["BREAKING CHANGE" , "refactor" ],
813
+ },
808
814
},
809
815
),
810
816
),
811
817
)
812
818
def test_order_changelog_tree (change_type_order , expected_reordering ):
813
- tree = tuple ( changelog .order_changelog_tree (COMMITS_TREE , change_type_order ) )
819
+ tree = changelog .order_changelog_tree (COMMITS_TREE , change_type_order )
814
820
815
- index_of_reordered_entry = [* expected_reordering .keys ()]
816
821
for index , entry in enumerate (tuple (tree )):
817
- if index in index_of_reordered_entry :
818
- sorted_order , original_order = expected_reordering [index ]
822
+ version = tree [index ]["version" ]
823
+ if version in expected_reordering :
824
+ # Verify that all keys are present
819
825
assert [* tree [index ].keys ()] == [* COMMITS_TREE [index ].keys ()]
820
- assert [* tree [index ]["changes" ].keys ()] == sorted_order
821
- assert [* COMMITS_TREE [index ]["changes" ].keys ()] == original_order
826
+ # Verify that the reorder only impacted the returned dict and not the original
827
+ expected = expected_reordering [version ]
828
+ assert [* tree [index ]["changes" ].keys ()] == expected ["sorted" ]
829
+ assert [* COMMITS_TREE [index ]["changes" ].keys ()] == expected ["original" ]
822
830
else :
823
831
assert [* entry ["changes" ].keys ()] == [* tree [index ]["changes" ].keys ()]
824
832
825
833
834
+ def test_order_changelog_tree_raises ():
835
+ change_type_order = ["BREAKING CHANGE" , "feat" , "refactor" , "feat" ]
836
+ with pytest .raises (RuntimeError ) as excinfo :
837
+ changelog .order_changelog_tree (COMMITS_TREE , change_type_order )
838
+
839
+ assert " duplicate" in str (excinfo )
840
+
841
+
826
842
def test_render_changelog (gitcommits , tags , changelog_content ):
827
843
parser = defaults .commit_parser
828
844
changelog_pattern = defaults .bump_pattern
0 commit comments