This PR significantly improves the test coverage of the language server, providing at least a single basic test for every request that is used by the client. It also implements infrastructure for testing all of these requests, e.g. the ability to run interactive tests in a project context and refactors the interactive test runner to be more maintainable. Finally, it also fixes a small bug with the recently implemented unknown identifier code actions for auto-implicits (#10442) that was discovered in testing, where the "import all unambiguous unknown identifiers" code action didn't work correctly on auto-implicit identifiers.
36 lines
756 B
Bash
Executable file
36 lines
756 B
Bash
Executable file
#!/usr/bin/env bash
|
|
source ../../../common.sh
|
|
|
|
find_parent_with_file() {
|
|
local dir="$1"
|
|
local target_file="$2"
|
|
|
|
while [[ "$dir" != "/" ]]; do
|
|
if [[ -e "$dir/$target_file" ]]; then
|
|
echo "$dir"
|
|
return 0
|
|
fi
|
|
dir="$(dirname "$dir")"
|
|
done
|
|
|
|
if [[ -e "/$target_file" ]]; then
|
|
echo "/"
|
|
return 0
|
|
fi
|
|
|
|
return 1
|
|
}
|
|
|
|
run_path="$(pwd)/run.lean"
|
|
|
|
cd "$(find_parent_with_file "$f" "lean-toolchain")"
|
|
|
|
lake build
|
|
|
|
# IO.Process.exit (used by the file worker) seems to be incompatible with LSAN
|
|
# TODO: investigate or work around
|
|
export ASAN_OPTIONS=detect_leaks=0
|
|
|
|
# these tests don't have to succeed
|
|
exec_capture lean -Dlinter.all=false --run $run_path -p "$f" || true
|
|
diff_produced
|