local stub = require "luassert.stub"
local parsers = require "nvim-treesitter.parsers"

describe("maintained_parsers", function()
  before_each(function()
    stub(vim.fn, "executable")
  end)

  after_each(function()
    vim.fn.executable:clear()
  end)

  it("does not return experimental parsers", function()
    local old_list = parsers.list
    parsers.list = {
      c = {
        install_info = {
          url = "https://github.com/tree-sitter/tree-sitter-c",
          files = { "src/parser.c" },
        },
        maintainers = { "@vigoux" },
      },
      d = {
        install_info = {
          url = "https://github.com/CyberShadow/tree-sitter-d",
          files = { "src/parser.c", "src/scanner.cc" },
          requires_generate_from_grammar = true,
        },
        maintainers = { "@nawordar" },
        experimental = true,
      },
      haskell = {
        install_info = {
          url = "https://github.com/tree-sitter/tree-sitter-haskell",
          files = { "src/parser.c", "src/scanner.cc" },
        },
      },
    }

    local expected = { "c" }

    assert.same(parsers.maintained_parsers(), expected)

    parsers.list = old_list
  end)
end)