weizheheng / ror.nvim

Have FUN builiding Ruby on Rails applications with Neovim!
MIT License
124 stars 14 forks source link

Add support for simplecov-json formatter #13

Closed otavioschwanck closed 1 year ago

otavioschwanck commented 1 year ago

when i try to use:

^I[C]: in function 'pairs' ^I...ite/pack/packer/start/ror.nvim/lua/ror/test/coverage.lua:16: in function 'get_coverage_percentage' ^I...m/site/pack/packer/start/ror.nvim/lua/ror/test/rspec.lua:125: in function <...m/site/pack/packer/start/ror.nvim/lua/ror/test/rspec.lua:122>

weizheheng commented 1 year ago

Can you try updating to the latest main?

otavioschwanck commented 1 year ago

Can you try updating to the latest main?

now im getting:

stack traceback:
^I[C]: in function 'pairs'
^I...ite/pack/packer/start/ror.nvim/lua/ror/test/coverage.lua:16: in function 'get_coverage_percentage'
^I...m/site/pack/packer/start/ror.nvim/lua/ror/test/rspec.lua:123: in function <...m/site/pack/packer/start/ror.nvim/lua/ror/test/rspec.lua:122>
weizheheng commented 1 year ago

Can you do a print(vim.inspect(coverage_table)) below line 13 in ror/test/coverage.lua? See what's the coverage_table value.

otavioschwanck commented 1 year ago

Can you do a print(vim.inspect(coverage_table)) below line 13 in ror/test/coverage.lua? See what's the coverage_table value.

      coverage = {
        branches = vim.empty_dict(),
        lines = { vim.NIL, vim.NIL, 1, 1, vim.NIL, 1, vim.NIL, 1, 1, 1, 1, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL }
      },
      covered_lines = 13,
      covered_percent = 100,
      covered_strength = 1,
      filename = "/Users/otavio/Projetos/api/app/models/loan.rb",
      lines_of_code = 13
    }, {
      coverage = {
        branches = vim.empty_dict(),
        lines = { vim.NIL, vim.NIL, 1, 1, 1, vim.NIL, 1, 1, vim.NIL, 1, vim.NIL, 1, 1, vim.NIL, 1, vim.NIL, 1, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, vim.NIL, 1, 0, vim.NIL, vim.NIL, 1, 0, vim.NIL, vim.NIL, vim.NIL, 1, 0, vim.NIL, 0, vim.NIL, vim.NIL, vim.NIL, 1, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL }
      },
      covered_lines = 41,
      covered_percent = 91.111111111111,
      covered_strength = 0.91111111111111,
      filename = "/Users/otavio/Projetos/api/app/models/loan_request.rb",
      lines_of_code = 45
    }, {
      coverage = {
        branches = vim.empty_dict(),
        lines = { vim.NIL, vim.NIL, 1, 1, 1, 1, 1, 1, vim.NIL, 1, vim.NIL, 1, vim.NIL, 1, vim.NIL, 1, 0, vim.NIL, vim.NIL, 1, 0, vim.NIL, vim.NIL, 1, 0, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL }
      },
      covered_lines = 12,
      covered_percent = 80,
      covered_strength = 0.8,
      filename = "/Users/otavio/Projetos/api/app/models/partner_account.rb",
      lines_of_code = 15
    }, {
      coverage = {
        branches = vim.empty_dict(),
        lines = { vim.NIL, vim.NIL, 1, 1, 1, vim.NIL, 1, vim.NIL, vim.NIL, vim.NIL, 1, vim.NIL, 1, 1, 1, 1, 1, 1, 1, 1, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL }
      },
      covered_lines = 25,
      covered_percent = 100,
      covered_strength = 1,
      filename = "/Users/otavio/Projetos/api/app/models/payment_request.rb",
      lines_of_code = 25
    }, {
      coverage = {
        branches = vim.empty_dict(),
        lines = { vim.NIL, vim.NIL, 1, 1, vim.NIL, 1, 1, vim.NIL, 1, vim.NIL, 1, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL }
      },
      covered_lines = 6,
      covered_percent = 100,
      covered_strength = 1,
      filename = "/Users/otavio/Projetos/api/app/models/person.rb",
      lines_of_code = 6
    }, {
      coverage = {
        branches = vim.empty_dict(),
        lines = { vim.NIL, vim.NIL, 1, vim.NIL }
      },
      covered_lines = 1,
      covered_percent = 100,
      covered_strength = 1,
      filename = "/Users/otavio/Projetos/api/app/models/person/signer.rb",
      lines_of_code = 1
    }, {
      coverage = {
        branches = vim.empty_dict(),
        lines = { vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, 1, 1, 1, 1, vim.NIL, 1, vim.NIL, 1, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL }
      },
      covered_lines = 8,
      covered_percent = 100,
      covered_strength = 1,
      filename = "/Users/otavio/Projetos/api/app/models/pool_statement.rb",
      lines_of_code = 8
    }, {
      coverage = {
        branches = vim.empty_dict(),
        lines = { vim.NIL, vim.NIL, 1, 1, 1, vim.NIL, 1, 1, 1, 1, 1, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, 1, 1, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL }
      },
      covered_lines = 16,
      covered_percent = 100,
      covered_strength = 1,
      filename = "/Users/otavio/Projetos/api/app/models/request_exit.rb",
      lines_of_code = 16
    }, {
      coverage = {
        branches = vim.empty_dict(),
        lines = { vim.NIL, vim.NIL, 1, 1, vim.NIL, 1, vim.NIL, 1, vim.NIL, 1, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL }
      },
      covered_lines = 5,
      covered_percent = 100,
      covered_strength = 1,
      filename = "/Users/otavio/Projetos/api/app/models/securitizer.rb",
      lines_of_code = 5
    }, {
      coverage = {
        branches = {
          ['[:"&.", 0, 20, 23, 20, 74]'] = {
            ["[:else, 2, 20, 23, 20, 74]"] = 0,
            ["[:then, 1, 20, 23, 20, 74]"] = 0
          },
          ['[:"&.", 10, 29, 30, 29, 81]'] = {
            ["[:else, 12, 29, 30, 29, 81]"] = 0,
            ["[:then, 11, 29, 30, 29, 81]"] = 0
          },
          ['[:"&.", 13, 35, 4, 35, 55]'] = {
            ["[:else, 15, 35, 4, 35, 55]"] = 0,
            ["[:then, 14, 35, 4, 35, 55]"] = 0
          },
          ['[:"&.", 16, 35, 59, 35, 123]'] = {
            ["[:else, 18, 35, 59, 35, 123]"] = 0,
            ["[:then, 17, 35, 59, 35, 123]"] = 0
          },
          ["[:case, 6, 22, 4, 25, 7]"] = {
            ["[:else, 9, 22, 4, 25, 7]"] = 0,
            ["[:when, 7, 23, 17, 23, 78]"] = 0,
            ["[:when, 8, 24, 17, 24, 94]"] = 0
          },
          ["[:if, 3, 20, 4, 20, 82]"] = {
            ["[:else, 5, 20, 4, 20, 82]"] = 0,
            ["[:then, 4, 20, 4, 20, 10]"] = 0
          }
        },
        lines = { vim.NIL, vim.NIL, 1, 1, 1, 1, vim.NIL, 1, vim.NIL, 1, vim.NIL, 1, vim.NIL, 1, vim.NIL, 1, 1, vim.NIL, 1, 0, vim.NIL, 0, 0, 0, vim.NIL, vim.NIL, vim.NIL, 1, 0, vim.NIL, vim.NIL, 1, 0, vim.NIL, 0, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL }
      },
      covered_lines = 13,
      covered_percent = 65,
      covered_strength = 0.65,
      filename = "/Users/otavio/Projetos/api/app/models/statement_entry.rb",
      lines_of_code = 20
    }, {
      coverage = {
        branches = vim.empty_dict(),
        lines = { vim.NIL, vim.NIL, 1, vim.NIL, vim.NIL, vim.NIL, 1, vim.NIL, vim.NIL, vim.NIL, 1, 1, vim.NIL, 1, 1, 3, 0, vim.NIL, vim.NIL, vim.NIL, 1, 0, 0, vim.NIL, vim.NIL, 1, 0, 0, vim.NIL, vim.NIL, 1, 0, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL }
      },
      covered_lines = 10,
      covered_percent = 62.5,
      covered_strength = 0.75,
      filename = "/Users/otavio/Projetos/api/app/models/user.rb",
      lines_of_code = 16
    }, {
      coverage = {
        branches = {
          ["[:if, 0, 21, 4, 25, 7]"] = {
            ["[:else, 2, 24, 6, 24, 33]"] = 0,
            ["[:then, 1, 22, 6, 22, 11]"] = 0
          }
        },
        lines = { vim.NIL, vim.NIL, 1, 1, 1, 1, vim.NIL, 1, vim.NIL, 1, vim.NIL, 1, 0, vim.NIL, vim.NIL, 1, 0, vim.NIL, vim.NIL, 1, 0, 0, vim.NIL, 0, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL, vim.NIL }
      },
      covered_lines = 9,
      covered_percent = 64.285714285714,
      covered_strength = 0.64285714285714,
      filename = "/Users/otavio/Projetos/api/app/models/wallet.rb",
      lines_of_code = 14
    }, {
      coverage = {
        branches = vim.empty_dict(),
        lines = { vim.NIL, vim.NIL, 1, 1, vim.NIL, 1, 0, vim.NIL, vim.NIL }
      },
      covered_lines = 3,
      covered_percent = 75,
      covered_strength = 0.75,
      filename = "/Users/otavio/Projetos/api/app/validators/cnpj_validator.rb",
      lines_of_code = 4
    }, {
      coverage = {
        branches = {
          ["[:unless, 0, 5, 4, 5, 56]"] = {
            ["[:else, 1, 5, 4, 5, 56]"] = 0,
            ["[:then, 2, 5, 4, 5, 32]"] = 0
          }
        },
        lines = { vim.NIL, vim.NIL, 1, 1, 0, vim.NIL, vim.NIL, 1, vim.NIL, 1, 0, vim.NIL, vim.NIL }
      },
      covered_lines = 4,
      covered_percent = 66.666666666667,
      covered_strength = 0.66666666666667,
      filename = "/Users/otavio/Projetos/api/app/validators/cpf_or_cnpj_validator.rb",
      lines_of_code = 6
    }, {
      coverage = {
        branches = vim.empty_dict(),
        lines = { vim.NIL, vim.NIL, 1, 1, vim.NIL, 1, 0, vim.NIL, vim.NIL }
      },
      covered_lines = 3,
      covered_percent = 75,
      covered_strength = 0.75,
      filename = "/Users/otavio/Projetos/api/app/validators/cpf_validator.rb",
      lines_of_code = 4
    } },
  metrics = {
    covered_lines = 1026,
    covered_percent = 78.680981595092,
    covered_strength = 1.0245398773006,
    total_lines = 1304
  },
  timestamp = 1668562625
}
...ite/pack/packer/start/ror.nvim/lua/ror/test/coverage.lua:17: bad argument #1 to 'pairs' (table expected, got nil)
stack traceback:
^I[C]: in function 'pairs'
^I...ite/pack/packer/start/ror.nvim/lua/ror/test/coverage.lua:17: in function 'get_coverage_percentage'
^I...m/site/pack/packer/start/ror.nvim/lua/ror/test/rspec.lua:123: in function <...m/site/pack/packer/start/ror.nvim/lua/ror/test/rspec.lua:122>

196 lines yanked
weizheheng commented 1 year ago

Ohh interesting, what's your setup for simplecov? My coverage.json looks different than yours. I am thinking you are using branch coverage?

weizheheng commented 1 year ago

Or are you using some custom JSON formatter?

otavioschwanck commented 1 year ago

Or are you using some custom JSON formatter?

Im using a custom, from a gem:

https://github.com/vicentllongo/simplecov-json

weizheheng commented 1 year ago

I see, will convert this issue to adding support for simplecov-json formatter.

weizheheng commented 1 year ago

@otavioschwanck Done adding support for simplecov-json, can you check if it works on your end?

otavioschwanck commented 1 year ago

@otavioschwanck Done adding support for simplecov-json, can you check if it works on your end?

i will. What json formatter do you use? i just tested that, i really dont anything on my project yet.

otavioschwanck commented 1 year ago

@otavioschwanck Done adding support for simplecov-json, can you check if it works on your end?

it worked!

weizheheng commented 1 year ago

I am using the default one, this one also works for code climate if you are using that.

But I have tried installing simplecov-json, and it works so I think it should work too

otavioschwanck commented 1 year ago

Fixed