chiark / gitweb /
Test suite: Make t-ref-same* errors better by tracking and printing names
[dgit.git] / tests / lib
index ee4bfd07bfdc145e31b60a9dc1af312c2f3e01fa..039484d0cb7711e9dd54c3cb3cfc662eeea21d20 100644 (file)
--- a/tests/lib
+++ b/tests/lib
@@ -188,6 +188,8 @@ t-git-merge-base () {
 }
 
 t-has-ancestor () {
+       # t-has-ancestor ANCESTOR
+       # (CHILD is implicit, HEAD)
        local now=`git rev-parse HEAD`
        local ancestor=`git rev-parse $1^{}`
        local mbase=`t-git-merge-base $ancestor $now`
@@ -196,6 +198,18 @@ t-has-ancestor () {
        fi
 }
 
+t-has-parent () {
+       # t-has-parent CHILD PARENT
+       local child=$1
+       local parent=$2
+       local parents=$(git show --pretty=format:' %P ' "$child")
+       parent=$(git rev-parse "$parent~0")
+       case "$parents" in
+       *" $parent "*)  ;;
+       *)      fail "child $child lacks parent $parent" ;;
+       esac
+}
+
 t-prep-newpackage () {
        t-select-package $1
        v=$2
@@ -475,17 +489,19 @@ t-ref-head () {
 t-ref-same-val () {
        local name="$1"
        local val=$2
-       case "$t_ref_val" in
-       '')             ;;
+       case "${t_ref_val-unset}" in
+       unset)          ;;
        "$val")         ;;
-       *)              fail "ref varies: $name:\
- ${val:-nothing} != ${t_ref_val:-nothing}" ;;
+       *)              fail "ref varies: ($name)\
+ ${val:-nothing} != ${t_ref_val:-nothing} (${t_ref_names[*]})" ;;
        esac
        t_ref_val="$val"
+       t_ref_names+=("$name")
 }
 
 t-refs-same-start () {
-       t_ref_val=''
+       unset t_ref_val
+       t_ref_names=()
 }
 
 t-refs-same () {