set -o pipefail
. tests/lib-core
+. tests/lib-restricts
+
+t-report-failure () {
+ set +x
+ rc=$1
+ cat <<END >&2
+TEST FAILED
+funcs: ${FUNCNAME[*]}
+lines: ${BASH_LINENO[*]}
+files: ${BASH_SOURCE[*]}
+END
+ exit 16
+}
+
+trap 'test $? = 0 || t-report-failure' EXIT
t-set-intree
-: ${DGIT_TEST_DEBUG:=-D}
+: ${DGIT_TEST_DEBUG=-D}
export DGIT_TEST_DEBUG
+export GIT_COMMITTER_DATE='1440253867 +0100'
+export GIT_AUTHOR_DATE='1440253867 +0100'
+
root=`pwd`
troot=$root/tests
testname="${DGIT_TEST_TESTNAME-${0##*/}}"
run_dinstall = 0
END
+: ${tagpfx:=test-dummy}
+: ${suitespecs:=sid:unstable}
+
+t-git-next-date () {
+ GIT_COMMITTER_DATE="$(( ${GIT_COMMITTER_DATE%% *} + 1 )) ${GIT_COMMITTER_DATE#* }"
+ GIT_AUTHOR_DATE="$GIT_COMMITTER_DATE"
+}
+
t-expect-fail () {
local mpat="$1"; shift
t-reporefs () {
local whichoutput=$1; shift
+ local whichrepo=${1-$dgitrepo}
local outputfile="$tmp/show-refs.$whichoutput"
(set -e
exec >"$outputfile"
- if test -d $dgitrepo; then
- cd $dgitrepo
+ if test -d $whichrepo; then
+ cd $whichrepo
git show-ref |sort
fi)
}
local tarfile=$1.tar
local edittree=$1.edit
if test -d "$edittree"; then
- cp -al "$edittree"/* .
+ cp -a "$edittree"/* .
else
tar xf "$tarfile"
fi
t-archive-none () {
t-select-package $1
- mkdir -p $tmp/aq $tmp/mirror/pool/main
+ mkdir -p $tmp/aq/dsc_in_suite $tmp/mirror/pool/main
- local suite=sid
+ : >$tmp/aq/suites
+ local jsondelim="["
- >$tmp/aq/package.$suite.$p
- t-archive-updated $suite $p
+ local suitespec
+ for suitespec in $suitespecs; do
+ local suite=${suitespec%%:*}
+ local sname=${suitespec#*:}
+
+ >$tmp/aq/package.$suite.$p
+ t-archive-updated $suite $p
- >$tmp/aq/package.new.$p
- t-archive-updated new $p
+ >$tmp/aq/package.new.$p
+ t-archive-updated new $p
- ln -s sid $tmp/aq/dsc_in_suite/unstable
- cat <<'END' >$tmp/aq/suites
-[
+ ln -s $suite $tmp/aq/dsc_in_suite/$sname
+
+ cat <<END >>$tmp/aq/suites
+$jsondelim
{
"archive" : "ftp-master",
- "codename" : "sid",
+ "codename" : "$suite",
"components" : [
"main",
"contrib",
"non-free"
],
- "name" : "unstable",
- "dakname" : "unstable"
- }
+ "name" : "$sname",
+ "dakname" : "$sname"
+END
+
+ jsondelim=" },"
+
+ done
+ cat <<END >>$tmp/aq/suites
+ }
]
END
}
"filename" => "$4",
};
END {
- print to_json \@v or die $!;
+ my $json = JSON->new->canonical();
+ print $json->encode(\@v) or die $!;
}
'
}
diff --exclude=.git --exclude=.pc -ruN $*
}
+t-files-notexist () {
+ local f
+ for f in "$@"; do
+ if [ -e $f ]; then
+ fail "$f exists!"
+ fi
+ done
+}
+
t-cloned-fetched-good () {
t-diff-nogit ../extract/$p-${v%-*} .
t-clean-on-branch dgit/sid
case "$t_ref_val" in
'') ;;
"$val") ;;
- *) fail "ref varies: $name: $val != $t_ref_val" ;;
+ *) fail "ref varies: $name:\
+ ${val:-nothing} != ${t_ref_val:-nothing}" ;;
esac
t_ref_val="$val"
}
}
t-v-tag () {
- echo refs/tags/test-dummy/${v//\~/_}
+ echo refs/tags/$tagpfx/${v//\~/_}
}
t-check-pushed-master () {
t-pushed-good () {
local branch=$1
+ local suite=${2:-sid}
t-ref-dsc-dgit
t-refs-same \
refs/heads/$branch \
`t-v-tag` \
- refs/remotes/dgit/dgit/sid
+ refs/remotes/dgit/dgit/$suite
t-refs-notexist \
refs/heads/dgit/unstable \
refs/remotes/dgit/dgit/unstable
(set -e; cd $dgitrepo
t-refs-same \
- refs/dgit/sid \
+ refs/dgit/$suite \
`t-v-tag`
${t_check_pushed_master:- : NOT-DRS-NO-CHECK-PUSHED-MASTER}
t-refs-notexist \
git verify-tag `t-v-tag`
}
+t-commit-build-push-expect-log () {
+ local msg=$1
+ local mpat=$2
+ t-commit "$msg"
+ t-dgit build
+ LC_MESSAGES=C \
+ t-dgit push --new 2>&1 |tee $tmp/push.log
+ t-grep-mpat "$mpat" $tmp/push.log
+}
+
t-822-field () {
local file=$1
local field=$2
| patch -p1 -u
}
+t-gbp-unapplied-pq2qc () {
+ # does `gbp pq export'
+ # commits the resulting debian/patches on qc/BRANCH
+ # leaves us on qc/BRANCH (eg "qc/quilt-tip"))
+ # qc/BRANCH is not fast-forwarding
+
+ gbp pq export
+
+ branch=`git symbolic-ref HEAD`
+ branch=${branch#refs/heads/}
+
+ case "$branch" in
+ */*) fail "unexpected branch $branch" ;;
+ esac
+
+ git branch -f qc/$branch
+ git checkout qc/$branch
+ git add debian/patches
+ git commit -m 'Commit patch queue'
+}
+
+t-gbp-example-prep () {
+ t-archive example 1.0-1
+ t-git-none
+ t-worktree 1.0
+
+ cd example
+
+ t-dgit fetch
+
+ git-checkout -b patch-queue/quilt-tip-2 patch-queue/quilt-tip
+ gbp pq rebase
+
+ echo '/* some comment */' >>src.c
+ git add src.c
+ git commit -m 'Add a comment to an upstream file'
+
+ t-gbp-unapplied-pq2qc
+
+ t-commit 'some updates' 1.0-2
+
+ git merge -s ours \
+ -m 'Pseudo-merge to make descendant of archive' \
+ remotes/dgit/dgit/sid
+}
+
t-commit () {
local msg=$1
- v=${2-1.$revision}
- dch -v$v --distribution unstable "$1"
+ v=${2:-1.$revision}
+ dch -v$v --distribution ${3:-unstable} "$1"
git add debian/changelog
debcommit
revision=$(( ${revision-0} + 1 ))
t-git-config dgit-distro.test-dummy.git-url "ext::$troot/drs-git-ext %S "
t-git-config dgit-distro.test-dummy.git-check true
t-git-config dgit-distro.test-dummy.git-create true
+ t-git-config dgit-distro.test-dummy.dgit-tag-format old,new
cp $troot/gnupg/{dd.gpg,dm.gpg,dm.txt} $tmp/.
cp $troot/suites $tmp/.
cp $troot/suites $tmp/suites-master
ln -sf /bin/true $drs_dispatch/policy-hook
}
+t-newtag () {
+ export tagpfx=archive/test-dummy
+ t-git-config dgit-distro.test-dummy.dgit-tag-format new
+}
+t-oldtag () {
+ t-git-config dgit-distro.test-dummy.dgit-tag-format old
+}
+
t-dsd () {
t-drs
t-git-config dgit-distro.test-dummy.ssh "$troot/dsd-ssh"
ln -sf no-such-file-or-directory $drs_dispatch/policy-hook
}
-t-policy () {
- local policyhook=$1
- policyhook=${DGIT_INFRA_PFX}$policyhook
- case $policyhook in
+t-make-hook-link () {
+ local hook=$1 # in infra/
+ local linkpath=$2
+ hook=${DGIT_INFRA_PFX}$hook
+ case $hook in
*/*) ;;
- *) policyhook=`type -P $policyhook` ;;
+ *) hook=`type -P $hook` ;;
esac
- ln -sf "$policyhook" $drs_dispatch/policy-hook
+ ln -sf "$hook" $linkpath
+}
+
+t-policy () {
+ local policyhook=$1
+ t-make-hook-link $policyhook $drs_dispatch/policy-hook
}
t-debpolicy () {
test-dummy $drs_dispatch '' --cron
}
+t-restrict () {
+ local restriction=$1
+ (cd $root; t-restriction-$restriction >&2)
+}
+
+t-dependencies () {
+ : "Hopefully installed: $*"
+}
+
t-chain-test () {
local ct=$1
local d=${0%/*}