From 33d25b1669930f0ac6b3f402bd760685552af48f Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Mon, 2 Sep 2019 15:17:48 -0300 Subject: add regression test utility --- test_regression.sh | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100755 test_regression.sh diff --git a/test_regression.sh b/test_regression.sh new file mode 100755 index 00000000..4780893f --- /dev/null +++ b/test_regression.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +# ## Usage examples: +# +# Test current branch against master: +# test_regression.sh +# Test current branch against another branch: +# test_regression.sh another-branch +# Test current branch against master passing arguments to busted: +# test_regression.sh -- --exclude-tags=flaky +# Test current branch against next passing arguments to busted: +# test_regression.sh next -- --exclude-tags=flaky + +if [ $(git status --untracked-files=no --porcelain | wc -l) != "0" ] +then + echo "==============================" + echo "Local tree is not clean, please commit or stash before running this." + echo "==============================" + exit 1 +fi + +newbranch=$(git rev-parse --abbrev-ref HEAD) +if [ "$newbranch" = "master" ] || [ "$newbranch" = "next" ] +then + echo "==============================" + echo "Please run this from a topic branch, and not from 'next' or 'master'." + echo "==============================" + exit 1 +fi + +basebranch="$1" +if [ "$1" == "" ] || [ "$1" == "--" ] +then + basebranch=master +else + basebranch="$1" + shift +fi +if [ "$1" == "--" ] +then + shift +fi + +git checkout "$newbranch" +rm -rf .spec-new +rm -rf .spec-old +cp -a spec .spec-new +git checkout "$basebranch" + +echo "----------------------------------------" +echo "Tests changed between $basebranch and $newbranch:" +echo "----------------------------------------" +specfiles=($(git diff-tree --no-commit-id --name-only -r "..$newbranch" | grep "^spec/")) +echo "${specfiles[@]}" +echo "----------------------------------------" + +mv spec .spec-old +mv .spec-new spec +./luarocks test -- "${specfiles[@]}" "$@" +if [ $? = 0 ] +then + git checkout . + git checkout $newbranch + echo "==============================" + echo "Regression test does not trigger the issue in base branch" + echo "==============================" + exit 1 +fi +mv spec .spec-new +mv .spec-old spec +git checkout $newbranch +./luarocks test -- "${specfiles[@]}" "$@" +ret=$? +if [ "$ret" != "0" ] +then + echo "==============================" + echo "New branch does not fix issue (returned $ret)" + echo "==============================" + exit 1 +fi + +echo "==============================" +echo "All good! New branch fixes regression!" +echo "==============================" +exit 0 + -- cgit v1.2.3-55-g6feb