diff --git a/README.md b/README.md index 6316299..10ab22d 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,9 @@ flutter_coverage.coverage_report_path = "./coverage/lcov.info" # Print the code coverage message flutter_coverage.code_coverage_message + +# Print the lcov table +flutter_coverage.tests_context_message ``` ## Development diff --git a/lib/flutter_coverage/plugin.rb b/lib/flutter_coverage/plugin.rb index e6b2ea8..b9652d8 100644 --- a/lib/flutter_coverage/plugin.rb +++ b/lib/flutter_coverage/plugin.rb @@ -48,11 +48,53 @@ def code_coverage covered_lines += line.sub('LH:', '').to_f end end - covered_lines / uncovered_lines * 100 + + coverage = covered_lines / uncovered_lines * 100 + + if coverage < 70 + emoji = "🤔" + elsif coverage <= 85 + emoji = "😀" + else + emoji = "🎉" + end + + return "### Code coverage: #{coverage.round(2)}% #{emoji}" + end + + def tests_context + input = File.open(coverage_report_path).read + input_lines = input.split("\n") + + files = input_lines.select do |line| + line.start_with?('SF:') + end + + covered_lines = input_lines.select do |line| + line.start_with?('LH:') + end + + uncovered_lines = input_lines.select do |line| + line.start_with?('LF:') + end + + table = "### Code coverage context: 👁️\n" + table << "| File | Covered |\n" + table << "| ---- | ------- |\n" + + files.each_with_index do | element, index | + table << "| #{element.sub('SF:', '')} | #{(covered_lines[index].sub('LH:', '').to_f / uncovered_lines[index].sub('LF:', '').to_f * 100).round(2)}% |\n" + end + + return table end def code_coverage_message - markdown("## Code coverage: #{code_coverage.round(2)}% ✅") + markdown(code_coverage) + end + + def tests_context_message + markdown(tests_context) end end end