1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #!/usr/bin/env bash
- set -euo pipefail
- declare -r plugins_dir="./.tests/site/pack/deps/start"
- declare -r module="nui"
- declare test_scope="${module}"
- while [[ $# -gt 0 ]]; do
- case "${1}" in
- --clean)
- shift
- echo "[test] cleaning up environment"
- rm -rf "${plugins_dir}"
- echo "[test] envionment cleaned"
- ;;
- *)
- if [[ "${test_scope}" == "${module}" ]] && [[ "${1}" == "${module}/"* ]]; then
- test_scope="${1}"
- fi
- shift
- ;;
- esac
- done
- function setup_environment() {
- echo
- echo "[test] setting up environment"
- echo
- if [[ ! -d "${plugins_dir}" ]]; then
- mkdir -p "${plugins_dir}"
- fi
- if [[ ! -d "${plugins_dir}/plenary.nvim" ]]; then
- echo "[plugins] plenary.nvim: installing..."
- git clone https://github.com/nvim-lua/plenary.nvim "${plugins_dir}/plenary.nvim"
- # commit 9069d14a120cadb4f6825f76821533f2babcab92 broke luacov
- # issue: https://github.com/nvim-lua/plenary.nvim/issues/353
- local -r plenary_353_patch="$(pwd)/scripts/plenary-353.patch"
- git -C "${plugins_dir}/plenary.nvim" apply "${plenary_353_patch}"
- echo "[plugins] plenary.nvim: installed"
- echo
- fi
- echo "[test] environment ready"
- echo
- }
- function luacov_start() {
- luacov_dir="$(dirname "$(luarocks which luacov 2>/dev/null | head -1)")"
- if [[ "${luacov_dir}" == "." ]]; then
- luacov_dir=""
- fi
- if test -n "${luacov_dir}"; then
- rm -f luacov.*.out
- export LUA_PATH=";;${luacov_dir}/?.lua"
- fi
- }
- function luacov_end() {
- if test -n "${luacov_dir}"; then
- if test -f "luacov.stats.out"; then
- luacov
- echo
- tail -n +$(($(grep -n "^Summary$" luacov.report.out | cut -d":" -f1) - 1)) luacov.report.out
- fi
- fi
- }
- setup_environment
- luacov_start
- declare test_logs=""
- if [[ -d "./tests/${test_scope}/" ]]; then
- test_logs=$(nvim --headless --noplugin -u tests/init.lua -c "lua require('plenary.test_harness').test_directory('./tests/${test_scope}/', { minimal_init = 'tests/init.lua', sequential = true })" || true)
- elif [[ -f "./tests/${test_scope}_spec.lua" ]]; then
- test_logs=$(nvim --headless --noplugin -u tests/init.lua -c "lua require('plenary.busted').run('./tests/${test_scope}_spec.lua')" || true)
- fi
- echo "${test_logs}"
- luacov_end
- if echo "${test_logs}" | grep --quiet "stack traceback"; then
- {
- echo ""
- echo "FOUND STACK TRACEBACK IN TEST LOGS"
- echo ""
- } >&2
- exit 1
- fi
|