summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkylo252 <[email protected]>2021-09-09 18:53:21 +0200
committerGitHub <[email protected]>2021-09-09 18:53:21 +0200
commit38f53bf08c974791f3d51e8a9c7efe9373c8ce3a (patch)
tree3f2d5ff1f55bc6fbddc0259fc59cf64155c29edf
parentac32f2e64d61291ba4969599827eef515712d5d8 (diff)
[Feature]: Add some very basic unit-tests (#1369)
-rw-r--r--.github/workflows/format.yaml27
-rw-r--r--.github/workflows/install.yaml5
-rw-r--r--.github/workflows/lint.yaml24
-rw-r--r--.luacheckrc2
-rw-r--r--.pre-commit-config.yaml7
-rw-r--r--Makefile33
-rw-r--r--tests/bootstrap_spec.lua37
-rw-r--r--utils/bin/test_runner.sh9
8 files changed, 113 insertions, 31 deletions
diff --git a/.github/workflows/format.yaml b/.github/workflows/format.yaml
index 142ba7f1..7f5f57d6 100644
--- a/.github/workflows/format.yaml
+++ b/.github/workflows/format.yaml
@@ -1,11 +1,11 @@
name: format
on:
push:
- branches: '**'
+ branches: "**"
pull_request:
branches:
- - 'master'
- - 'rolling'
+ - "master"
+ - "rolling"
jobs:
stylua-check:
@@ -14,14 +14,13 @@ jobs:
steps:
- uses: actions/checkout@v2
- - name: Prepare dependencies
- run: |
- sudo apt install -y curl unzip --no-install-recommends
- bash ./utils/installer/install_stylua.sh
+ - name: Lint with stylua
+ uses: JohnnyMorganz/[email protected]
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ # CLI arguments
+ args: --check .
- - name: Check formatting
- run: |
- ./utils/stylua --config-path .stylua.toml -c .
shfmt-check:
name: "Formatting check with shfmt"
runs-on: ubuntu-20.04
@@ -31,14 +30,12 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v2
with:
- go-version: '1.16'
-
+ go-version: "1.16"
+
- name: Use shfmt
run: |
GO111MODULE=on go get mvdan.cc/sh/v3/cmd/shfmt
# https://google.github.io/styleguide/shellguide.html
- name: Check formatting
- run: |
- shfmt -f . | grep -v jdtls | xargs shfmt -i 2 -ci -l -d
-
+ run: make style-sh
diff --git a/.github/workflows/install.yaml b/.github/workflows/install.yaml
index fa8bf0e3..3e529dc6 100644
--- a/.github/workflows/install.yaml
+++ b/.github/workflows/install.yaml
@@ -43,6 +43,11 @@ jobs:
ln -s "$PWD"/* "$HOME"/.local/share/lunarvim/lvim/.
bash ./utils/installer/install.sh
+ - name: Run unit-tests
+ # NOTE: make sure to adjust the timeout if you start adding a lot of tests
+ timeout-minutes: 4
+ run: make test
+
- name: Test LunarVim PackerCompile
run: if "$HOME"/.local/bin/lvim --headless +PackerCompile -c ':qall' 2>&1|grep -q 'Error'; then false; fi
diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml
index d187f497..93050bba 100644
--- a/.github/workflows/lint.yaml
+++ b/.github/workflows/lint.yaml
@@ -1,11 +1,11 @@
name: lint
on:
push:
- branches: '**'
+ branches: "**"
pull_request:
branches:
- - 'master'
- - 'rolling'
+ - "master"
+ - "rolling"
jobs:
lua-linter:
@@ -13,23 +13,23 @@ jobs:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
-
+
- uses: leafo/gh-actions-lua@v8
- uses: leafo/gh-actions-luarocks@v4
- name: Use luacheck
run: luarocks install luacheck
-
+
- name: Run luacheck
- run: luacheck *.lua lua/
+ run: make lint-lua
shellcheck:
name: Shellcheck
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
- - name: Run ShellCheck
- uses: ludeeus/action-shellcheck@master
- with:
- scandir: './utils'
- ignore: 'bin'
+ - uses: actions/checkout@v2
+ - name: Run ShellCheck
+ uses: ludeeus/action-shellcheck@master
+ with:
+ scandir: "./utils"
+ ignore: "bin"
diff --git a/.luacheckrc b/.luacheckrc
index a3875f91..f20fbf36 100644
--- a/.luacheckrc
+++ b/.luacheckrc
@@ -26,6 +26,8 @@ stds.nvim = {
}
std = "lua51+nvim"
+files["tests/*_spec.lua"].std = "lua51+nvim+busted"
+
-- Don't report unused self arguments of methods.
self = false
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 8ecda3bd..38ce72dc 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -7,20 +7,19 @@ repos:
language: system
types: [shell]
entry: bash
- args: [-c, "shfmt -f $(git rev-parse --show-toplevel) | grep -v jdtls | xargs shfmt -i=2 -ci -w"]
+ args: [-c, make lint-sh]
- id: shellcheck
name: shellcheck
language: system
types: [shell]
entry: bash
- args:
- [-c, "shfmt -f $(git rev-parse --show-toplevel) | grep -v jdtls | xargs shellcheck"]
+ args: [-c, make style-sh]
- id: stylua
name: StyLua
language: rust
entry: stylua
types: [lua]
- args: ['-']
+ args: ["-"]
- id: luacheck
name: luacheck
language: system
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..8efa4f4d
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,33 @@
+SHELL := /bin/bash
+
+install:
+ @echo Starting LunarVim Installer
+ bash ./utils/installer/install.sh
+
+install-neovim-binary:
+ @echo Installing Neovim from github releases
+ bash ./utils/installer/install-neovim-from-release
+
+uninstall:
+ @echo TODO: this is currently not supported
+
+lint: lint-lua lint-sh
+
+lint-lua:
+ luacheck *.lua lua/* tests/*
+
+lint-sh:
+ shfmt -f . | grep -v jdtls | xargs shellcheck
+
+style: style-lua style-sh
+
+style-lua:
+ stylua --config-path .stylua.toml --check .
+
+style-sh:
+ shfmt -f . | grep -v jdtls | xargs shfmt -i 2 -ci -l -d
+
+test:
+ bash ./utils/bin/test_runner.sh "$(TEST)"
+
+.PHONY: install install-neovim-binary uninstall lint style test
diff --git a/tests/bootstrap_spec.lua b/tests/bootstrap_spec.lua
new file mode 100644
index 00000000..0fa35fe0
--- /dev/null
+++ b/tests/bootstrap_spec.lua
@@ -0,0 +1,37 @@
+local a = require "plenary.async_lib.tests"
+
+a.describe("initial start", function()
+ local uv = vim.loop
+ local home_dir = uv.os_homedir()
+ -- TODO: update once #1381 is merged
+ local lvim_config_path = home_dir .. "/.config/lvim"
+ local lvim_runtime_path = home_dir .. "/.local/share/lunarvim/lvim"
+
+ a.it("should not be reading default neovim directories in the home directoies", function()
+ local rtp_list = vim.opt.rtp:get()
+ assert.falsy(vim.tbl_contains(rtp_list, vim.fn.stdpath "config"))
+ end)
+
+ a.it("should be able to read lunarvim directories", function()
+ local rtp_list = vim.opt.rtp:get()
+ assert.truthy(vim.tbl_contains(rtp_list, lvim_runtime_path))
+ assert.truthy(vim.tbl_contains(rtp_list, lvim_config_path))
+ end)
+
+ a.it("should be able to run treesitter without errors", function()
+ assert.truthy(vim.treesitter.highlighter.active)
+ end)
+
+ a.it("should be able to load default packages without errors", function()
+ -- TODO: maybe there's a way to avoid hard-coding the names of the modules?
+ local startup_plugins = {
+ "packer",
+ "lspconfig",
+ "nlspsettings",
+ "null-ls",
+ }
+ for _, plugin in pairs(startup_plugins) do
+ assert.truthy(package.loaded[tostring(plugin)])
+ end
+ end)
+end)
diff --git a/utils/bin/test_runner.sh b/utils/bin/test_runner.sh
new file mode 100644
index 00000000..5b46e578
--- /dev/null
+++ b/utils/bin/test_runner.sh
@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+set -e
+
+# TODO: allow running with a minimal_init.lua
+if [ -n "$1" ]; then
+ nvim --headless -u ./init.lua -c "lua require('plenary.busted').run('$1')"
+else
+ nvim --headless -u ./init.lua -c "PlenaryBustedDirectory tests/ { minimal_init = './init.lua' }"
+fi