Sha256: f20e212ac7a9c118dad9466f0e07c636b1f5a1e14c07faa8e09b2f5387d80702

Contents?: true

Size: 1.92 KB

Versions: 2

Compression:

Stored size: 1.92 KB

Contents

ENV.delete("VIM")
ENV.delete("VIMRUNTIME")

require "json"
require "net/http"
require "open-uri"
require "tempfile"

RSpec.describe "Acceptance", :timeout => 10 do
  let(:root) { File.expand_path("../acceptance", __FILE__) }
  let(:init) { File.join(root, "runtime/init.vim") }
  let(:manifest) { File.join(root, "runtime/rplugin.vim") }

  around do |spec|
    Dir.chdir(root) { spec.run }
  end

  describe "Vim compatibility" do
    ["ruby", "rubyfile", "rubydo"].each do |feature|
      specify ":#{feature}" do
        run_vader("#{feature}_spec.vim") do |status, output|
          expect(status).to be_success, lambda { output.read }
        end
      end
    end
  end

  describe "Remote plugin DSL" do
    ["command", "function", "autocmd"].each do |feature|
      specify "##{feature}" do
        run_vader("rplugin_#{feature}_spec.vim") do |status, output|
          expect(status).to be_success, lambda { output.read }
        end
      end
    end
  end

  describe "Generated documentation" do
    it "is up to date" do
      begin
        url = "https://api.github.com/repos/neovim/neovim/releases/latest"
        response = open(url) { |json| JSON.load(json) }

        client_file = File.read(
          File.expand_path("../../lib/neovim/client.rb", __FILE__)
        )
        docs_version = client_file[
          /The methods documented here were generated using (.+)$/,
          1
        ]

        expect(docs_version).to eq(response["name"])
      rescue SocketError, OpenURI::HTTPError => e
        skip "Skipping: #{e}"
      end
    end
  end

  def run_nvim(env, *opts)
    nvim = env.fetch("NVIM_EXECUTABLE", "nvim")
    system(env, nvim, "--headless", "-n", "-u", init, *opts)
  end

  def run_vader(test_path)
    Tempfile.open("vader.out") do |out|
      run_nvim(
        {"NVIM_RPLUGIN_MANIFEST" => manifest, "VADER_OUTPUT_FILE" => out.path},
        "-c", "Vader! #{test_path}"
      )

      yield $?, out
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
neovim-0.6.1 spec/acceptance_spec.rb
neovim-0.6.0 spec/acceptance_spec.rb