Есть у меня такой pre-push
хук – автоматом прогоняет тесты локально, через maven
. Подключается по необходимости через отдельные git конфиги для проектов.
#!/bin/env bash
set -eu
# https://gist.github.com/arnobroekhof/9454645
# save the file as <git_directory>/.git/hooks/pre-<commit|push> and chmod +x
# modified: dimio, 2022-09-21
echo "Running mvn clean test for errors"
# retrieving current working directory
CWD=$(pwd)
# find dir with parent pom.xml (a top-level depth) - run tests for all modules
PROJ_DIR="$(git rev-parse --show-toplevel)$(dirname $(find -type f -name 'pom.xml' -printf '%d %p\n' | sort | tr -d '[:digit:]') | tr -d . | head -n 1)"
cd "${PROJ_DIR}"
MVN_RESULT=$(mvn clean test 2>&1)
if [ $? -ne 0 ]; then
echo
echo "${MVN_RESULT}" | ((tee /dev/fd/5 | grep -A 10 -B 2 "Summary:" > /dev/fd/4) 5>&1 | sed -n -e '/^Failed tests:/,/Tests run:.*$/ p' ) 4>&1
echo
echo "Error while testing the code"
cd "${CWD}"
exit 1
fi
cd "${CWD}"
Стащил его, судя по всему, отсюда: https://gist.github.com/arnobroekhof/9454645
. Потом допиливал немного – чтобы он с многомодульными проектами работал корректно. Может, ещё что-то по мелочи причёсывал.
И он отлично работает (разве что можно через sed
попробовать результаты по всем модулям агрегировать).
Но вот проблема – на текущем проекте везде gradle
, а под него я что-то не могу найти похожего простого решения 🙁
Есть ли оно?