class SolargraphTestCoverage::TestCoverageReporter

Public Instance Methods

diagnose(source, _api_map) click to toggle source
# File lib/solargraph_test_coverage/test_coverage_reporter.rb, line 8
def diagnose(source, _api_map)
  return [] if source.code.empty? || using_debugger?(source) || exclude_file?(source.location.filename)
  return [test_missing_error(source)] unless File.file?(test_file(source))

  results = run_test(source)
  messages(source, results)
rescue ChildFailedError
  []
end

Private Instance Methods

branch_coverage_warning(source, report) click to toggle source
# File lib/solargraph_test_coverage/test_coverage_reporter.rb, line 31
def branch_coverage_warning(source, report)
  return unless Config.branch_coverage?

  {
    range: range(report[:line] - 1, 0, report[:line] - 1, source.code.lines[report[:line] - 1].length),
    severity: Solargraph::Diagnostics::Severities::WARNING,
    source: 'TestCoverage',
    message: "'#{report[:type].upcase}' branch is missing test coverage"
  }
end
line_coverage_warning(source, line) click to toggle source
# File lib/solargraph_test_coverage/test_coverage_reporter.rb, line 20
def line_coverage_warning(source, line)
  return unless Config.line_coverage?

  {
    range: range(line, 0, line, source.code.lines[line].length),
    severity: Solargraph::Diagnostics::Severities::WARNING,
    source: 'TestCoverage',
    message: 'Line is missing test coverage'
  }
end
test_failing_error(source) click to toggle source
# File lib/solargraph_test_coverage/test_coverage_reporter.rb, line 42
def test_failing_error(source)
  return unless Config.test_failing_coverage?

  {
    range: range(0, 0, 0, source.code.lines[0].length),
    severity: Solargraph::Diagnostics::Severities::ERROR,
    source: 'TestCoverage',
    message: 'Unit Test is currently failing.'
  }
end
test_missing_error(source) click to toggle source
# File lib/solargraph_test_coverage/test_coverage_reporter.rb, line 53
def test_missing_error(source)
  return unless Config.test_missing_coverage?

  {
    range: range(0, 0, 0, source.code.lines[0].length),
    severity: Solargraph::Diagnostics::Severities::HINT,
    source: 'TestCoverage',
    message: "No test file found at '#{test_file(source).sub("#{Dir.pwd}/", '')}'"
  }
end