@@ -716,6 +716,41 @@ def test_specific_comparator(self, ref_tree, res_tree_equal):
716
716
717
717
assert res == {}
718
718
719
+ def test_specific_patterns (self , ref_tree , res_tree_equal , base_diff ):
720
+ """Test specific args."""
721
+ specific_args = {
722
+ "all yaml files" : {
723
+ "args" : [None , None , None , False , 0 , False ],
724
+ "patterns" : [r".*\.yaml" ],
725
+ },
726
+ "all json files" : {
727
+ "comparator" : dir_content_diff .DefaultComparator (),
728
+ "patterns" : [r".*\.json" ],
729
+ },
730
+ }
731
+ res = compare_trees (ref_tree , res_tree_equal , specific_args = specific_args )
732
+
733
+ assert res == {}
734
+
735
+ # Test pattern override
736
+ specific_args ["all json files" ]["comparator" ] = dir_content_diff .PdfComparator ()
737
+ specific_args ["file.json" ] = {"comparator" : dir_content_diff .DefaultComparator ()}
738
+ res = compare_trees (ref_tree , res_tree_equal , specific_args = specific_args )
739
+
740
+ assert res == {}
741
+
742
+ # Test pattern multiple matches
743
+ specific_args = {
744
+ "all files" : {
745
+ "comparator" : dir_content_diff .DefaultComparator (),
746
+ "patterns" : [r"file\..*" ],
747
+ },
748
+ }
749
+ res = compare_trees (ref_tree , res_tree_equal , specific_args = specific_args )
750
+
751
+ assert list (res .keys ()) == ["file.pdf" ]
752
+ assert re .match (base_diff , res ["file.pdf" ]) is not None
753
+
719
754
720
755
class TestDiffTrees :
721
756
"""Tests that should return differences."""
@@ -851,6 +886,48 @@ def test_specific_args(self, ref_tree, res_tree_diff, dict_diff, xml_diff, ini_d
851
886
for match_i in [match_res_0 , match_res_1 , match_res_2 , match_res_3 ]:
852
887
assert match_i is not None
853
888
889
+ def test_specific_patterns (self , ref_tree , res_tree_diff , base_diff , dict_diff ):
890
+ """Test specific args."""
891
+ specific_args = {
892
+ "all yaml files" : {
893
+ "args" : [None , None , None , False , 0 , False ],
894
+ "patterns" : [r".*\.yaml" ],
895
+ },
896
+ "all json files" : {
897
+ "comparator" : dir_content_diff .DefaultComparator (),
898
+ "patterns" : [r".*\.json" ],
899
+ },
900
+ }
901
+ res = compare_trees (ref_tree , res_tree_diff , specific_args = specific_args )
902
+
903
+ assert re .match (base_diff , res ["file.json" ]) is not None
904
+
905
+ # Test pattern override
906
+ specific_args ["all json files" ]["comparator" ] = dir_content_diff .DefaultComparator ()
907
+ specific_args ["file.json" ] = {"comparator" : dir_content_diff .JsonComparator ()}
908
+ res = compare_trees (ref_tree , res_tree_diff , specific_args = specific_args )
909
+
910
+ assert re .match (dict_diff , res ["file.json" ]) is not None
911
+
912
+ # Test pattern multiple matches
913
+ specific_args = {
914
+ "all files" : {
915
+ "comparator" : dir_content_diff .DefaultComparator (),
916
+ "patterns" : [r"file\..*" ],
917
+ },
918
+ }
919
+ res = compare_trees (ref_tree , res_tree_diff , specific_args = specific_args )
920
+
921
+ assert sorted (res .keys ()) == [
922
+ "file.ini" ,
923
+ "file.json" ,
924
+ "file.pdf" ,
925
+ "file.xml" ,
926
+ "file.yaml" ,
927
+ ]
928
+ for v in res .values ():
929
+ assert re .match (base_diff , v )
930
+
854
931
def test_unknown_comparator (self , ref_tree , res_tree_diff , registry_reseter ):
855
932
"""Test with an unknown extension."""
856
933
dir_content_diff .unregister_comparator (".yaml" )
0 commit comments