@@ -852,93 +852,89 @@ def test_required_choice_question_without_data(
852
852
853
853
854
854
@pytest .mark .parametrize (
855
- "type_name, default , expected" ,
855
+ "spec , expected" ,
856
856
[
857
- (" str" , "string" , does_not_raise ()),
858
- (" str" , "1.0" , does_not_raise ()),
859
- (" str" , 1.0 , does_not_raise ()),
860
- (" str" , None , pytest .raises (TypeError )),
857
+ ({ "type" : " str" , "default" : " string"} , does_not_raise ()),
858
+ ({ "type" : " str" , "default" : " 1.0"} , does_not_raise ()),
859
+ ({ "type" : " str" , "default" : 1.0 } , does_not_raise ()),
860
+ ({ "type" : " str" , "default" : None } , pytest .raises (TypeError )),
861
861
(
862
862
{
863
863
"type" : "str" ,
864
+ "default" : "" ,
865
+ "validator" : "[% if q|length < 3 %]too short[% endif %]" ,
866
+ },
867
+ pytest .raises (ValueError ),
868
+ ),
869
+ (
870
+ {
871
+ "type" : "str" ,
872
+ "default" : "" ,
864
873
"secret" : True ,
865
874
"validator" : "[% if q|length < 3 %]too short[% endif %]" ,
866
875
},
867
- "" ,
868
876
pytest .raises (ValueError ),
869
877
),
870
- (" int" , 1 , does_not_raise ()),
871
- (" int" , 1.0 , does_not_raise ()),
872
- (" int" , "1" , does_not_raise ()),
873
- (" int" , "1.0" , pytest .raises (ValueError )),
874
- (" int" , "no-int" , pytest .raises (ValueError )),
875
- (" int" , None , pytest .raises (TypeError )),
876
- (" int" , { }, pytest .raises (TypeError )),
877
- (" int" , [] , pytest .raises (TypeError )),
878
- (" float" , 1.1 , does_not_raise ()),
879
- (" float" , 1 , does_not_raise ()),
880
- (" float" , "1.1" , does_not_raise ()),
881
- (" float" , "no-float" , pytest .raises (ValueError )),
882
- (" float" , None , pytest .raises (TypeError )),
883
- (" float" , { }, pytest .raises (TypeError )),
884
- (" float" , [] , pytest .raises (TypeError )),
885
- (" bool" , True , does_not_raise ()),
886
- (" bool" , False , does_not_raise ()),
887
- (" bool" , "y" , does_not_raise ()),
888
- (" bool" , "n" , does_not_raise ()),
889
- (" bool" , None , pytest .raises (TypeError )),
890
- (" json" , '"string"' , does_not_raise ()),
891
- (" json" , "1" , does_not_raise ()),
892
- (" json" , 1 , does_not_raise ()),
893
- (" json" , "1.1" , does_not_raise ()),
894
- (" json" , 1.1 , does_not_raise ()),
895
- (" json" , "true" , does_not_raise ()),
896
- (" json" , True , does_not_raise ()),
897
- (" json" , "false" , does_not_raise ()),
898
- (" json" , False , does_not_raise ()),
899
- (" json" , "{}" , does_not_raise ()),
900
- (" json" , { }, does_not_raise ()),
901
- (" json" , "[]" , does_not_raise ()),
902
- (" json" , [] , does_not_raise ()),
903
- (" json" , "null" , does_not_raise ()),
904
- (" json" , None , does_not_raise ()),
905
- (" yaml" , '"string"' , does_not_raise ()),
906
- (" yaml" , "string" , does_not_raise ()),
907
- (" yaml" , "1" , does_not_raise ()),
908
- (" yaml" , 1 , does_not_raise ()),
909
- (" yaml" , "1.1" , does_not_raise ()),
910
- (" yaml" , 1.1 , does_not_raise ()),
911
- (" yaml" , "true" , does_not_raise ()),
912
- (" yaml" , True , does_not_raise ()),
913
- (" yaml" , "false" , does_not_raise ()),
914
- (" yaml" , False , does_not_raise ()),
915
- (" yaml" , "{}" , does_not_raise ()),
916
- (" yaml" , { }, does_not_raise ()),
917
- (" yaml" , "[]" , does_not_raise ()),
918
- (" yaml" , [] , does_not_raise ()),
919
- (" yaml" , "null" , does_not_raise ()),
920
- (" yaml" , None , does_not_raise ()),
878
+ ({ "type" : " int" , "default" : 1 } , does_not_raise ()),
879
+ ({ "type" : " int" , "default" : 1.0 } , does_not_raise ()),
880
+ ({ "type" : " int" , "default" : "1" } , does_not_raise ()),
881
+ ({ "type" : " int" , "default" : " 1.0"} , pytest .raises (ValueError )),
882
+ ({ "type" : " int" , "default" : " no-int"} , pytest .raises (ValueError )),
883
+ ({ "type" : " int" , "default" : None } , pytest .raises (TypeError )),
884
+ ({ "type" : " int" , "default" : {} }, pytest .raises (TypeError )),
885
+ ({ "type" : " int" , "default" : []} , pytest .raises (TypeError )),
886
+ ({ "type" : " float" , "default" : 1.1 } , does_not_raise ()),
887
+ ({ "type" : " float" , "default" : 1 } , does_not_raise ()),
888
+ ({ "type" : " float" , "default" : " 1.1"} , does_not_raise ()),
889
+ ({ "type" : " float" , "default" : " no-float"} , pytest .raises (ValueError )),
890
+ ({ "type" : " float" , "default" : None } , pytest .raises (TypeError )),
891
+ ({ "type" : " float" , "default" : {} }, pytest .raises (TypeError )),
892
+ ({ "type" : " float" , "default" : []} , pytest .raises (TypeError )),
893
+ ({ "type" : " bool" , "default" : True } , does_not_raise ()),
894
+ ({ "type" : " bool" , "default" : False } , does_not_raise ()),
895
+ ({ "type" : " bool" , "default" : "y" } , does_not_raise ()),
896
+ ({ "type" : " bool" , "default" : "n" } , does_not_raise ()),
897
+ ({ "type" : " bool" , "default" : None } , pytest .raises (TypeError )),
898
+ ({ "type" : " json" , "default" : '"string"' } , does_not_raise ()),
899
+ ({ "type" : " json" , "default" : "1" } , does_not_raise ()),
900
+ ({ "type" : " json" , "default" : 1 } , does_not_raise ()),
901
+ ({ "type" : " json" , "default" : " 1.1"} , does_not_raise ()),
902
+ ({ "type" : " json" , "default" : 1.1 } , does_not_raise ()),
903
+ ({ "type" : " json" , "default" : " true"} , does_not_raise ()),
904
+ ({ "type" : " json" , "default" : True } , does_not_raise ()),
905
+ ({ "type" : " json" , "default" : " false"} , does_not_raise ()),
906
+ ({ "type" : " json" , "default" : False } , does_not_raise ()),
907
+ ({ "type" : " json" , "default" : " {}"} , does_not_raise ()),
908
+ ({ "type" : " json" , "default" : {} }, does_not_raise ()),
909
+ ({ "type" : " json" , "default" : " []"} , does_not_raise ()),
910
+ ({ "type" : " json" , "default" : []} , does_not_raise ()),
911
+ ({ "type" : " json" , "default" : " null"} , does_not_raise ()),
912
+ ({ "type" : " json" , "default" : None } , does_not_raise ()),
913
+ ({ "type" : " yaml" , "default" : '"string"' } , does_not_raise ()),
914
+ ({ "type" : " yaml" , "default" : " string"} , does_not_raise ()),
915
+ ({ "type" : " yaml" , "default" : "1" } , does_not_raise ()),
916
+ ({ "type" : " yaml" , "default" : 1 } , does_not_raise ()),
917
+ ({ "type" : " yaml" , "default" : " 1.1"} , does_not_raise ()),
918
+ ({ "type" : " yaml" , "default" : 1.1 } , does_not_raise ()),
919
+ ({ "type" : " yaml" , "default" : " true"} , does_not_raise ()),
920
+ ({ "type" : " yaml" , "default" : True } , does_not_raise ()),
921
+ ({ "type" : " yaml" , "default" : " false"} , does_not_raise ()),
922
+ ({ "type" : " yaml" , "default" : False } , does_not_raise ()),
923
+ ({ "type" : " yaml" , "default" : " {}"} , does_not_raise ()),
924
+ ({ "type" : " yaml" , "default" : {} }, does_not_raise ()),
925
+ ({ "type" : " yaml" , "default" : " []"} , does_not_raise ()),
926
+ ({ "type" : " yaml" , "default" : []} , does_not_raise ()),
927
+ ({ "type" : " yaml" , "default" : " null"} , does_not_raise ()),
928
+ ({ "type" : " yaml" , "default" : None } , does_not_raise ()),
921
929
],
922
930
)
923
931
def test_validate_default_value (
924
932
tmp_path_factory : pytest .TempPathFactory ,
925
- type_name : str ,
926
- default : Any ,
933
+ spec : AnyByStrDict ,
927
934
expected : AbstractContextManager [None ],
928
935
) -> None :
929
936
src , dst = map (tmp_path_factory .mktemp , ("src" , "dst" ))
930
- build_file_tree (
931
- {
932
- (src / "copier.yml" ): yaml .dump (
933
- {
934
- "q" : {
935
- "type" : type_name ,
936
- "default" : default ,
937
- }
938
- }
939
- )
940
- }
941
- )
937
+ build_file_tree ({(src / "copier.yml" ): yaml .dump ({"q" : spec })})
942
938
with expected :
943
939
copier .run_copy (str (src ), dst , defaults = True )
944
940
0 commit comments