log2txt.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/usr/bin/python3
  2. import sys
  3. import os
  4. error = 1
  5. def parseLog(filename):
  6. inFileName = filename
  7. outFileName = os.path.splitext(inFileName)[0] + '_parsed' + os.path.splitext(inFileName)[1]
  8. infile = open(inFileName).read()
  9. infile = infile.split('\n')
  10. outfile = open(outFileName, 'w')
  11. count = 0
  12. strName = ""
  13. strNr = -1
  14. strFUT = ""
  15. coverageInfo = 0
  16. for line in infile:
  17. if line.find("==================================================") != -1:
  18. continue
  19. if line.find("--------------------------------------------------") != -1:
  20. continue
  21. if line.find("Start: Group") != -1:
  22. outfile.write("\n")
  23. continue
  24. if line.find("End: Group") != -1:
  25. outfile.write("\n")
  26. continue
  27. if line.find("Start: Test") != -1:
  28. outfile.write("\n")
  29. continue
  30. if line.find("End: Test") != -1:
  31. outfile.write("\n")
  32. continue
  33. if line.find("Start Dump: String") != -1:
  34. continue
  35. if line.find("End Dump: String") != -1:
  36. strName = strName.rstrip("\n")
  37. outfile.write(strName)
  38. if strNr == 3:
  39. strFUT = strName
  40. # else:
  41. # strFUT == ""
  42. if strName == "Group Name:":
  43. strNr = 1
  44. outfile.write(" ")
  45. elif strName == "Test Name:":
  46. strNr = 2
  47. outfile.write(" ")
  48. elif strName == "Function Under Test:":
  49. strNr = 3
  50. outfile.write(" ")
  51. else:
  52. strNr = 4
  53. if len(strName) < 128:
  54. outfile.write("\n")
  55. strName = ""
  56. continue
  57. if line.find("Start: Coverage Information") != -1:
  58. coverageInfo = 1
  59. outfile.write(line)
  60. outfile.write("\n")
  61. if line.find("End: Coverage Information") != -1:
  62. strFUT == ""
  63. coverageInfo = 0
  64. if coverageInfo == 1:
  65. # if line.find(strFUT) == -1: #this line contains no relevant coverage info
  66. # continue
  67. if line.find("- 0%") == -1 and line.find("src") == -1 and line.find("Functions") != -1:
  68. outfile.write(line + "\n")
  69. continue
  70. if line.find("0x") == 0: #this is a line to translate
  71. line = line[12:35] + line[37:61]
  72. nums = line.split(' ')
  73. for num in nums:
  74. intNum = int(num, base=16)
  75. # if intNum == 10:
  76. # continue
  77. if intNum == 0:
  78. continue
  79. strName += str(chr(intNum))
  80. continue
  81. outfile.write(line)
  82. outfile.write("\n")
  83. def print_usage(sys_argv):
  84. script_name = sys_argv[0]
  85. usage_str = "Syntax: {0} filename\n"
  86. print (usage_str)
  87. def exit_on_error(sys_argv):
  88. print_usage(sys_argv)
  89. exit(1)
  90. if __name__ == '__main__':
  91. arg_len = len(sys.argv)
  92. if arg_len != 2:
  93. exit_on_error(sys.argv)
  94. if error == parseLog(sys.argv[1]):
  95. exit_on_error(sys.argv)