From 506e36a810db5c0b5ea8283e34349a1d61e716b5 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Fri, 19 Jan 2024 11:05:09 +0000 Subject: [PATCH] test/test-release.sh: add `-I` (install package) opt --- test/test-release.sh | 50 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/test/test-release.sh b/test/test-release.sh index 2c2668bf..0ec1e41b 100755 --- a/test/test-release.sh +++ b/test/test-release.sh @@ -112,6 +112,50 @@ list_group_symbols() { echo -e "'qskip' test group:\n $qskip_tests" } +print_ver_hash() { + python3 -m pip freeze | grep "^$repo\>" | sed 's/.*sha256=//' | cut -c 1-12 +} + +install_package() { + echo -e "${BLUE}Installing package$YELLOW $repo$RESET" + rm -rf build dist *.egg-info + + ver=$(print_ver_hash) + echo -e "${BLUE}Currently installed version is$MAGENTA $ver$RESET" + + cmd="python3 -m build --no-isolation --wheel --config-setting=quiet $STDOUT_DEVNULL" + echo -e "${BLUE}Executing:$CYAN $cmd$RESET" + eval $cmd + + cmd="python3 -m pip $QUIET install --break-system-packages dist/*.whl" + echo -e "${BLUE}Executing:$CYAN $cmd$RESET" + eval $cmd + + new_ver=$(print_ver_hash) + if [ "$ver" == "$new_ver" ]; then + echo -ne "${YELLOW}Version hash is unchanged. Force install? (y/N):$RESET " + read -n1 + if [ "$REPLY" == 'y' ]; then + echo + cmd="python3 -m pip $QUIET install --break-system-packages --force --no-deps dist/*.whl" + echo -e "${BLUE}Executing:$CYAN $cmd$RESET" + eval $cmd + elif [ "$REPLY" ]; then + echo; return + else + return + fi + fi + + new_ver=$(print_ver_hash) + if [ "$ver" == "$new_ver" ]; then + echo -e "${RED}ERROR: version hash is unchanged$RESET" + exit 1 + else + echo -e "${GREEN}OK$RESET" + fi +} + # start execution trap 'echo -e "${GREEN}Exiting at user request$RESET"; exit' INT @@ -152,7 +196,7 @@ PROGNAME=$(basename $0) init_groups -while getopts hAbcdDfFLlNOps:StvV OPT +while getopts hAbcdDfFILlNOps:StvV OPT do case "$OPT" in h) printf " %-16s Test MMGen release\n" "${PROGNAME}:" @@ -165,6 +209,7 @@ do echo " -D Run tests in deterministic mode" echo " -f Speed up the tests by using fewer rounds" echo " -F Reduce rounds even further" + echo " -I Install the package" echo " -L List available tests and test groups with description" echo " -l List the test name symbols" echo " -N Pass the --no-timings switch to test/cmdtest.py" @@ -204,6 +249,7 @@ do export MMGEN_DISABLE_COLOR=1 ;; f) rounds=6 FAST=1 fast_opt='--fast' unit_tests_py+=" --fast" ;; F) rounds=3 FAST=1 fast_opt='--fast' unit_tests_py+=" --fast" ;; + I) INSTALL_PACKAGE=1 ;; L) list_avail_tests; exit ;; l) list_group_symbols; exit ;; N) cmdtest_py+=" --no-timings" ;; @@ -233,6 +279,8 @@ done RESET="\e[0m" } +[ "$INSTALL_PACKAGE" ] && { install_package; exit; } + [ "$MSYS2" -a ! "$FAST" ] && tooltest2_py+=' --fork' [ "$EXACT_OUTPUT" -o "$VERBOSE" ] || objtest_py+=" -S"