diff --git a/.github/workflows/lua.yaml b/.github/workflows/lua.yaml index 6bf35301..9ecfa484 100644 --- a/.github/workflows/lua.yaml +++ b/.github/workflows/lua.yaml @@ -45,14 +45,15 @@ jobs: with: neovim: true version: ${{ matrix.nvim_version }} - - name: Install luajit - uses: leafo/gh-actions-lua@v11 + - uses: leafo/gh-actions-lua@v11 with: luaVersion: "luajit-openresty" - - name: Install luarocks - uses: leafo/gh-actions-luarocks@v5 + - uses: hishamhm/gh-actions-luarocks@master with: - luarocksVersion: "3.8.0" + luaRocksVersion: "3.12.0" + - name: build + run: | + luarocks install busted - name: Run tests shell: bash run: | diff --git a/lua-test.sh b/lua-test.sh index 63513751..6cf83dc9 100755 --- a/lua-test.sh +++ b/lua-test.sh @@ -1,59 +1,44 @@ #!/usr/bin/env bash # # Setup and run tests for lua part of gitlab.nvim. -# -# In order to run tests you need to have `luarocks` and `git` installed. This script will check if -# environment is already setup, if not it will initialize current directory with `luarocks`, -# install `busted` framework and download plugin dependencies. -# +# Requires `luarocks`, `git`, and `nvim` installed. # -set -e -LUA_VERSION="5.1" +set -euo pipefail + PLUGINS_FOLDER="tests/plugins" PLUGINS=( - "https://github.com/MunifTanjim/nui.nvim" - "https://github.com/nvim-lua/plenary.nvim" - "https://github.com/sindrets/diffview.nvim" + "https://github.com/MunifTanjim/nui.nvim" + "https://github.com/nvim-lua/plenary.nvim" + "https://github.com/sindrets/diffview.nvim" ) -if ! command -v luarocks > /dev/null 2>&1; then - echo "You need to have luarocks installed in order to run tests." - exit 1 -fi - -if ! command -v git > /dev/null 2>&1; then - echo "You need to have git installed in order to run tests." - exit 1 +if ! command -v luarocks >/dev/null 2>&1; then + echo "Error: luarocks not found. Please install LuaRocks." >&2 + exit 1 fi -if ! luarocks --lua-version=$LUA_VERSION which busted > /dev/null 2>&1; then - echo "Installing busted." - luarocks init - luarocks config --scope project lua_version "$LUA_VERSION" - luarocks install --lua-version="$LUA_VERSION" busted +if ! command -v git >/dev/null 2>&1; then + echo "Error: git not found. Please install Git." >&2 + exit 1 fi -for arg in "$@"; do -if [[ $arg =~ "--coverage" ]] && ! luarocks --lua-version=$LUA_VERSION which luacov > /dev/null 2>&1; then - luarocks install --lua-version="$LUA_VERSION" luacov - # lcov reporter for luacov - lcov format is supported by `nvim-coverage` - luarocks install --lua-version="$LUA_VERSION" luacov-reporter-lcov +if ! command -v nvim >/dev/null 2>&1; then + echo "Error: nvim not found. Please install Neovim." >&2 + exit 1 fi -done +# Clone test plugin dependencies +mkdir -p "$PLUGINS_FOLDER" for plugin in "${PLUGINS[@]}"; do - plugin_name=${plugin##*/} - plugin_folder="$PLUGINS_FOLDER/$plugin_name" - - # Check if plugin was already downloaded - if [[ -d "$plugin_folder/.git" ]]; then - # We could also try to pull here but I am not sure if that wouldn't slow down tests too much. - continue - fi - + plugin_name="${plugin##*/}" + plugin_folder="$PLUGINS_FOLDER/$plugin_name" + if [[ ! -d "$plugin_folder/.git" ]]; then + echo "Cloning $plugin..." git clone --depth 1 "$plugin" "$plugin_folder" - + fi done -nvim -u NONE -U NONE -N -i NONE -l tests/init.lua "$@" +# Run tests +echo "Running tests with Neovim..." +nvim -u NONE -U NONE -N -i NONE -l tests/init.lua "$@" diff --git a/lua/gitlab/job.lua b/lua/gitlab/job.lua index 33308210..bccd8062 100644 --- a/lua/gitlab/job.lua +++ b/lua/gitlab/job.lua @@ -19,6 +19,7 @@ M.run_job = function(endpoint, method, body, callback, on_error_callback) -- success message or error message and details from the Go server and run the on_error_callback -- (if supplied for the job). local stderr = {} + Job:new({ command = "curl", args = args,