From: Ian Jackson Date: Wed, 12 Feb 2014 18:35:44 +0000 (+0000) Subject: tests: git-repo-edit: wip X-Git-Tag: debian/0.22~68 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=commitdiff_plain;h=62c2e5bde449901e1963adb288b4c31b46db3776;hp=b19d59fb104f8f260a139c838fc08a0158431415 tests: git-repo-edit: wip --- diff --git a/tests/gitrepo-edit b/tests/gitrepo-edit new file mode 100755 index 00000000..97bbd2c4 --- /dev/null +++ b/tests/gitrepo-edit @@ -0,0 +1,85 @@ +#!/bin/sh +set -e +fail () { echo >&2 "$0: $*"; exit 1; } + +case "$1" in +edit|done) mode=$1 +fi + +case "$*.$1" in +1.-*) fail "no options understood" ;; +1.*) arg="$1"; shift ;; +*) fail "need one arg" ;; +esac + +case "$arg" in +*.git.tar) base=${arg%.tar} ;; +*.git) base=${arg} ;; +*) fail "arg must end in .git[.tar]" ;; +esac + +tryat_pre () { + local b="$1" + rm -rf "$b.tmp" + if test -f "$b.tar" && test -f "$b.edit"; then + echo "$b.edit exists, deleting possibly-obsolete $b.tar" + rm "$b.tar" + fi +} + +tryat_edit () { + local b="$1" + if test -d "$b.edit"; then + echo "$b.edit already exists" + exit 0 + fi + if test -f "$b.tar"; then + mkdir "$b.tmp" + (set -e; cd "$b.tmp"; tar xf "$b.tar") + mv "$b.tmp/$b" "$b.edit" + rm "$b.tar" + rm -rf "$b.tmp" + echo "$b.edit ready" + exit 0 + fi +} + +tryat_done () { + local b="$1" + if test -d "$b.edit"; then + mkdir "$b.tmp" + cp -al "$b.edit" "$b.tmp/$b" + (set -e; cd "$b.tmp"; tar cf "$b.tmp/tar") + mv "$b.tmp/tar" "$b.tar" + rm -rf "$b.tmp" + mv "$b.edit" "$b.tmp" + rm -rf "$b.tmp" + echo "$b.tar regenerated" + exit 0 + fi + if test -f "$b.tar"; then + echo "$b.tar already exists and $b.edit doesn't" + exit 0 + fi +} + +tryat () { + local b="$1" + if ! test -f "$b.tar" && ! test -f "$b.edit"; then + return + fi + tryat_pre "$b" + tryat_$mode "$b" + fail "unexpected situation in $b.*" +} + +case "$arg" in +/*) tryat "$base" + ;; +*) + pwd=`pwd` + tryat "$pwd/$base" + tryat "$pwd/git-srcs/$base" + tryat "$pwd/tests/git-srcs/$base" + ;; +esac diff --git a/tests/lib b/tests/lib index 0630f1d1..fb6b2fc0 100644 --- a/tests/lib +++ b/tests/lib @@ -48,7 +48,12 @@ t-git () { p=$1 v=$2 mkdir -p $tmp/git - (set -e; cd $tmp/git; tar xf $troot/git-srcs/${p}_$v.git.tar) + local gs=$troot/git-srcs/${p}_$v.git + if test -f $gs.edit; then + cp -al $gs.edit $tmp/git/${p}.git + else + (set -e; cd $tmp/git; tar xf $gs.tar) + fi } t-git-none () {