Skip to main content

Built and signed on GitHub Actions

🌿 Test helper module for denops.vim

This package works with Deno
This package works with Deno
JSR Score
94%
Published
8 months ago (3.0.4)

A Deno module designed for testing denops.vim. This module is intended to be used in the unit tests of denops plugins.

Note

To use the test function, an environment variable DENOPS_TEST_DENOPS_PATH is required. Clone the denops.vim repository and set the path to this environment variable.

Additionally, the following environment variables are available to configure the behavior of the test function:

  • DENOPS_TEST_VIM_EXECUTABLE: Path to the Vim executable (default: "vim")
  • DENOPS_TEST_NVIM_EXECUTABLE: Path to the Neovim executable (default: "nvim")
  • DENOPS_TEST_VERBOSE: 1 or true to print Vim messages (echomsg)

If you want to test denops plugins with a real Vim and/or Neovim process, use the test function to define a test case, as shown below:

import {
  assert,
  assertEquals,
  assertFalse,
} from "jsr:@std/assert";
import { test } from "jsr:@denops/test";

test(
  "vim",
  "Start Vim to test denops features",
  async (denops) => {
    assertFalse(await denops.call("has", "nvim"));
  },
);

test({
  mode: "nvim",
  name: "Start Neovim to test denops features",
  fn: async (denops) => {
    assert(await denops.call("has", "nvim"));
  },
});

test({
  mode: "all",
  name: "Start Vim and Neovim to test denops features",
  fn: async (denops) => {
    assertEquals(await denops.call("abs", -4), 4);
  },
});

test({
  mode: "any",
  name: "Start Vim or Neovim to test denops features",
  fn: async (denops) => {
    assertEquals(await denops.call("abs", -4), 4);
  },
});

If you want to test denops plugins without a real Vim and/or Neovim process, use the DenopsStub class to create a stub instance of the Denops interface, as shown below:

import { assertEquals } from "jsr:@std/assert";
import { DenopsStub } from "jsr:@denops/test";

Deno.test("denops.call", async () => {
  const denops = new DenopsStub({
    call: (fn, ...args) => {
      return Promise.resolve([fn, ...args]);
    },
  });
  assertEquals(await denops.call("foo", "bar"), ["foo", "bar"]);
});
Built and signed on
GitHub Actions
View transparency log

Add Package

deno add jsr:@denops/test

Import symbol

import * as test from "@denops/test";

---- OR ----

Import directly with a jsr specifier

import * as test from "jsr:@denops/test";