@@ -1077,9 +1077,9 @@ def test_exit(self):
1077
1077
1078
1078
1079
1079
class CoverageReportingFake :
1080
- """A fake Coverage.coverage test double."""
1080
+ """A fake Coverage.coverage test double for FailUnderTest methods ."""
1081
1081
# pylint: disable=missing-function-docstring
1082
- def __init__ (self , report_result , html_result , xml_result , json_report , lcov_result ):
1082
+ def __init__ (self , report_result , html_result = 0 , xml_result = 0 , json_report = 0 , lcov_result = 0 ):
1083
1083
self .config = CoverageConfig ()
1084
1084
self .report_result = report_result
1085
1085
self .html_result = html_result
@@ -1111,39 +1111,52 @@ def json_report(self, *args_unused, **kwargs_unused):
1111
1111
def lcov_report (self , * args_unused , ** kwargs_unused ):
1112
1112
return self .lcov_result
1113
1113
1114
- @pytest .mark .parametrize ("results, fail_under, cmd, ret" , [
1115
- # Command-line switch properly checks the result of reporting functions.
1116
- ((20 , 30 , 40 , 50 , 60 ), None , "report --fail-under=19" , 0 ),
1117
- ((20 , 30 , 40 , 50 , 60 ), None , "report --fail-under=21" , 2 ),
1118
- ((20 , 30 , 40 , 50 , 60 ), None , "html --fail-under=29" , 0 ),
1119
- ((20 , 30 , 40 , 50 , 60 ), None , "html --fail-under=31" , 2 ),
1120
- ((20 , 30 , 40 , 50 , 60 ), None , "xml --fail-under=39" , 0 ),
1121
- ((20 , 30 , 40 , 50 , 60 ), None , "xml --fail-under=41" , 2 ),
1122
- ((20 , 30 , 40 , 50 , 60 ), None , "json --fail-under=49" , 0 ),
1123
- ((20 , 30 , 40 , 50 , 60 ), None , "json --fail-under=51" , 2 ),
1124
- ((20 , 30 , 40 , 50 , 60 ), None , "lcov --fail-under=59" , 0 ),
1125
- ((20 , 30 , 40 , 50 , 60 ), None , "lcov --fail-under=61" , 2 ),
1126
- # Configuration file setting properly checks the result of reporting.
1127
- ((20 , 30 , 40 , 50 , 60 ), 19 , "report" , 0 ),
1128
- ((20 , 30 , 40 , 50 , 60 ), 21 , "report" , 2 ),
1129
- ((20 , 30 , 40 , 50 , 60 ), 29 , "html" , 0 ),
1130
- ((20 , 30 , 40 , 50 , 60 ), 31 , "html" , 2 ),
1131
- ((20 , 30 , 40 , 50 , 60 ), 39 , "xml" , 0 ),
1132
- ((20 , 30 , 40 , 50 , 60 ), 41 , "xml" , 2 ),
1133
- ((20 , 30 , 40 , 50 , 60 ), 49 , "json" , 0 ),
1134
- ((20 , 30 , 40 , 50 , 60 ), 51 , "json" , 2 ),
1135
- ((20 , 30 , 40 , 50 , 60 ), 59 , "lcov" , 0 ),
1136
- ((20 , 30 , 40 , 50 , 60 ), 61 , "lcov" , 2 ),
1137
- # Command-line overrides configuration.
1138
- ((20 , 30 , 40 , 50 , 60 ), 19 , "report --fail-under=21" , 2 ),
1139
- # Precision defined
1140
- ((20 , 30 , 40 , 50 , 60 ), None , "report --fail-under=20.1 --precision=1" , 2 ),
1141
- ((20 , 30 , 40 , 50 , 60 ), None , "report --fail-under=19.9 --precision=1" , 0 ),
1142
- ])
1143
- def test_fail_under (results , fail_under , cmd , ret ):
1144
- cov = CoverageReportingFake (* results )
1145
- if fail_under is not None :
1146
- cov .set_option ("report:fail_under" , fail_under )
1147
- with mock .patch ("coverage.cmdline.Coverage" , lambda * a ,** kw : cov ):
1148
- ret_actual = command_line (cmd )
1149
- assert ret_actual == ret
1114
+
1115
+ class FailUnderTest (CoverageTest ):
1116
+ """Tests of the --fail-under handling in cmdline.py."""
1117
+
1118
+ @pytest .mark .parametrize ("results, fail_under, cmd, ret" , [
1119
+ # Command-line switch properly checks the result of reporting functions.
1120
+ ((20 , 30 , 40 , 50 , 60 ), None , "report --fail-under=19" , 0 ),
1121
+ ((20 , 30 , 40 , 50 , 60 ), None , "report --fail-under=21" , 2 ),
1122
+ ((20 , 30 , 40 , 50 , 60 ), None , "html --fail-under=29" , 0 ),
1123
+ ((20 , 30 , 40 , 50 , 60 ), None , "html --fail-under=31" , 2 ),
1124
+ ((20 , 30 , 40 , 50 , 60 ), None , "xml --fail-under=39" , 0 ),
1125
+ ((20 , 30 , 40 , 50 , 60 ), None , "xml --fail-under=41" , 2 ),
1126
+ ((20 , 30 , 40 , 50 , 60 ), None , "json --fail-under=49" , 0 ),
1127
+ ((20 , 30 , 40 , 50 , 60 ), None , "json --fail-under=51" , 2 ),
1128
+ ((20 , 30 , 40 , 50 , 60 ), None , "lcov --fail-under=59" , 0 ),
1129
+ ((20 , 30 , 40 , 50 , 60 ), None , "lcov --fail-under=61" , 2 ),
1130
+ # Configuration file setting properly checks the result of reporting.
1131
+ ((20 , 30 , 40 , 50 , 60 ), 19 , "report" , 0 ),
1132
+ ((20 , 30 , 40 , 50 , 60 ), 21 , "report" , 2 ),
1133
+ ((20 , 30 , 40 , 50 , 60 ), 29 , "html" , 0 ),
1134
+ ((20 , 30 , 40 , 50 , 60 ), 31 , "html" , 2 ),
1135
+ ((20 , 30 , 40 , 50 , 60 ), 39 , "xml" , 0 ),
1136
+ ((20 , 30 , 40 , 50 , 60 ), 41 , "xml" , 2 ),
1137
+ ((20 , 30 , 40 , 50 , 60 ), 49 , "json" , 0 ),
1138
+ ((20 , 30 , 40 , 50 , 60 ), 51 , "json" , 2 ),
1139
+ ((20 , 30 , 40 , 50 , 60 ), 59 , "lcov" , 0 ),
1140
+ ((20 , 30 , 40 , 50 , 60 ), 61 , "lcov" , 2 ),
1141
+ # Command-line overrides configuration.
1142
+ ((20 , 30 , 40 , 50 , 60 ), 19 , "report --fail-under=21" , 2 ),
1143
+ ])
1144
+ def test_fail_under (self , results , fail_under , cmd , ret ):
1145
+ cov = CoverageReportingFake (* results )
1146
+ if fail_under is not None :
1147
+ cov .set_option ("report:fail_under" , fail_under )
1148
+ with mock .patch ("coverage.cmdline.Coverage" , lambda * a ,** kw : cov ):
1149
+ self .command_line (cmd , ret )
1150
+
1151
+ @pytest .mark .parametrize ("result, cmd, ret, msg" , [
1152
+ (20.5 , "report --fail-under=20.4 --precision=1" , 0 , "" ),
1153
+ (20.5 , "report --fail-under=20.6 --precision=1" , 2 ,
1154
+ "Coverage failure: total of 20.5 is less than fail-under=20.6\n " ),
1155
+ (20.12345 , "report --fail-under=20.1235 --precision=5" , 2 ,
1156
+ "Coverage failure: total of 20.12345 is less than fail-under=20.12350\n " ),
1157
+ ])
1158
+ def test_fail_under_with_precision (self , result , cmd , ret , msg ):
1159
+ cov = CoverageReportingFake (report_result = result )
1160
+ with mock .patch ("coverage.cmdline.Coverage" , lambda * a ,** kw : cov ):
1161
+ self .command_line (cmd , ret )
1162
+ assert self .stdout () == msg
0 commit comments