Files
avante.nvim/scripts/run-luatest.sh
Dmitry Torokhov 61c1bf8bfe feat(luatest): create a self-contained test runner
Adds a new scripts/run-luatest.sh script to provide a consistent,
self-contained way to run project unit tests, including locally.

The script handles:

 - Checking for necessary tools (rg, ag)
 - Cloning or updating plenary.nvim into the target/tests/deps directory

The Makefile is updated to use this new script, making make luatest the
single entry point for running unit tests.

The lua.yaml workflow is simplified to use this new make target,
ensuring the CI environment uses the exact same testing logic.
2025-08-02 17:43:55 +08:00

60 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
DEST_DIR="$PWD/target/tests"
DEPS_DIR="$DEST_DIR/deps"
log() {
echo "$1" >&2
}
check_tools() {
command -v rg &>/dev/null || {
log "Error: ripgrep (rg) is not installed. Please install it."
exit 1
}
command -v ag &>/dev/null || {
log "Error: silversearcher-ag (ag) is not installed. Please install it."
exit 1
}
}
setup_deps() {
local plenary_path="$DEPS_DIR/plenary.nvim"
if [ -d "$plenary_path/.git" ]; then
log "plenary.nvim already exists. Updating..."
(
cd "$plenary_path"
git fetch -q
if git show-ref --verify --quiet refs/remotes/origin/main; then
git reset -q --hard origin/main
elif git show-ref --verify --quiet refs/remotes/origin/master; then
git reset -q --hard origin/master
fi
)
else
if [ -d "$plenary_path" ]; then
log "Removing non-git plenary.nvim directory and re-cloning."
rm -rf "$plenary_path"
fi
log "Cloning plenary.nvim..."
mkdir -p "$DEPS_DIR"
git clone --depth 1 "https://github.com/nvim-lua/plenary.nvim.git" "$plenary_path"
fi
}
run_tests() {
log "Running tests..."
nvim --headless --clean \
-c "set runtimepath+=$DEPS_DIR/plenary.nvim" \
-c "lua require('plenary.test_harness').test_directory('tests/', { minimal_init = 'NONE' })"
}
main() {
check_tools
setup_deps
run_tests
}
main "$@"