Coverage for /pythoncovmergedfiles/medio/medio/src/fuzz_to_latex.py: 69%

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

49 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. 

26"""Targets the to_latex function.""" 

27 

28import sys 

29import atheris 

30import pandas as pd 

31 

32 

33def TestOneInput(data): 

34 fdp = atheris.FuzzedDataProvider(data) 

35 

36 try: 

37 num_rows = fdp.ConsumeIntInRange(3, 100) 

38 num_columns = fdp.ConsumeIntInRange(3, 100) 

39 col_names = [fdp.ConsumeString(fdp.ConsumeIntInRange(1, 100)) for _ in range(num_columns)] 

40 

41 data = {} 

42 for col_name in col_names: 

43 if fdp.ConsumeBool(): 

44 data[col_name] = [fdp.ConsumeInt(10) for _ in range(num_rows)] 

45 elif fdp.ConsumeBool(): 

46 data[col_name] = [fdp.ConsumeString(100) for _ in range(num_rows)] 

47 elif fdp.ConsumeBool(): 

48 data[col_name] = [fdp.ConsumeIntInRange(0, 2100) for _ in range(num_rows)] 

49 elif fdp.ConsumeBool(): 

50 data[col_name] = [fdp.ConsumeFloat() for _ in range(num_rows)] 

51 else: 

52 data[col_name] = [fdp.ConsumeBool() for _ in range(num_rows)] 

53 

54 df = pd.DataFrame(data) 

55 columns = None if fdp.ConsumeBool() else list(df.columns) 

56 header = fdp.ConsumeBool() 

57 index = fdp.ConsumeBool() 

58 na_rep = fdp.ConsumeUnicodeNoSurrogates(5) 

59 float_format = "fixed" if fdp.ConsumeBool() else None 

60 sparsify = fdp.ConsumeBool() 

61 index_names = fdp.ConsumeBool() 

62 bold_rows = fdp.ConsumeBool() 

63 columns_format = None if fdp.ConsumeBool() else fdp.ConsumeUnicodeNoSurrogates(5) 

64 longtable = fdp.ConsumeBool() 

65 

66 df.to_latex( 

67 columns=columns, 

68 header=header, 

69 index=index, 

70 na_rep=na_rep, 

71 formatters=None, 

72 float_format=float_format, 

73 sparsify=sparsify, 

74 index_names=index_names, 

75 bold_rows=bold_rows, 

76 column_format=columns_format, 

77 longtable=longtable 

78 ) 

79 

80 

81 

82 except( 

83 ValueError, # If column_format is not a valid string 

84 ImportError # If Jinja2 is imported for latex 

85 ): 

86 pass 

87 

88 

89def main(): 

90 atheris.Setup(sys.argv, TestOneInput) 

91 atheris.instrument_all() 

92 atheris.Fuzz() 

93 

94 

95if __name__ == "__main__": 

96 main()