Coverage for /pythoncovmergedfiles/medio/medio/src/fuzz_aniso8601.py: 59%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

63 statements  

1###### Coverage stub 

2import atexit 

3import coverage 

4cov = coverage.coverage(data_file='.coverage', cover_pylib=True) 

5cov.start() 

6# Register an exist handler that will print coverage 

7def exit_handler(): 

8 cov.stop() 

9 cov.save() 

10atexit.register(exit_handler) 

11####### End of coverage stub 

12#!/usr/bin/python3 

13# Copyright 2023 Google LLC 

14# 

15# Licensed under the Apache License, Version 2.0 (the "License"); 

16# you may not use this file except in compliance with the License. 

17# You may obtain a copy of the License at 

18# 

19# http://www.apache.org/licenses/LICENSE-2.0 

20# 

21# Unless required by applicable law or agreed to in writing, software 

22# distributed under the License is distributed on an "AS IS" BASIS, 

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

24# See the License for the specific language governing permissions and 

25# limitations under the License. 

26import sys 

27import atheris 

28 

29import aniso8601 

30from aniso8601.date import parse_date 

31from aniso8601.decimalfraction import normalize 

32from aniso8601.duration import parse_duration 

33from aniso8601.interval import parse_interval 

34from aniso8601.timezone import parse_timezone 

35 

36 

37def fuzz_date(data): 

38 fdp = atheris.FuzzedDataProvider(data) 

39 try: 

40 parse_date(fdp.ConsumeUnicodeNoSurrogates(sys.maxsize)) 

41 except (aniso8601.exceptions.ISOFormatError, 

42 aniso8601.exceptions.RangeCheckError): 

43 pass 

44 except NotImplementedError: 

45 # https://bitbucket.org/nielsenb/aniso8601/src/8819c46cb9548298da5b59b830782c1cc37ba295/aniso8601/date.py#lines-77 

46 pass 

47 

48 

49def fuzz_decimal_fraction(data): 

50 fdp = atheris.FuzzedDataProvider(data) 

51 normalize(fdp.ConsumeUnicodeNoSurrogates(sys.maxsize)) 

52 

53 

54def fuzz_duration(data): 

55 fdp = atheris.FuzzedDataProvider(data) 

56 try: 

57 parse_duration(fdp.ConsumeUnicodeNoSurrogates(sys.maxsize)) 

58 except (aniso8601.exceptions.ISOFormatError, 

59 aniso8601.exceptions.RangeCheckError): 

60 pass 

61 except NotImplementedError: 

62 # https://bitbucket.org/nielsenb/aniso8601/src/8819c46cb9548298da5b59b830782c1cc37ba295/aniso8601/date.py#lines-77 

63 pass 

64 

65 

66def fuzz_interval(data): 

67 fdp = atheris.FuzzedDataProvider(data) 

68 try: 

69 parse_interval(fdp.ConsumeUnicodeNoSurrogates(sys.maxsize)) 

70 except (aniso8601.exceptions.ISOFormatError, 

71 aniso8601.exceptions.RangeCheckError): 

72 pass 

73 except NotImplementedError: 

74 # https://bitbucket.org/nielsenb/aniso8601/src/8819c46cb9548298da5b59b830782c1cc37ba295/aniso8601/date.py#lines-77 

75 pass 

76 

77 

78def fuzz_time(data): 

79 fdp = atheris.FuzzedDataProvider(data) 

80 try: 

81 parse_timezone(fdp.ConsumeUnicodeNoSurrogates(sys.maxsize)) 

82 except (aniso8601.exceptions.ISOFormatError, 

83 aniso8601.exceptions.RangeCheckError): 

84 pass 

85 except NotImplementedError: 

86 # https://bitbucket.org/nielsenb/aniso8601/src/8819c46cb9548298da5b59b830782c1cc37ba295/aniso8601/date.py#lines-77 

87 pass 

88 

89 

90def TestOneInput(data): 

91 fuzz_date(data) 

92 fuzz_decimal_fraction(data) 

93 fuzz_duration(data) 

94 fuzz_interval(data) 

95 fuzz_time(data) 

96 

97 

98def main(): 

99 atheris.instrument_all() 

100 atheris.Setup(sys.argv, TestOneInput) 

101 atheris.Fuzz() 

102 

103 

104if __name__ == "__main__": 

105 main()