t-pushed-good () {
local branch=$1
local suite=${2:-sid}
+ t-refs-same \
+ refs/heads/$branch
+ t-pushed-good-core
+}
+
+t-pushed-good-core () {
t-ref-dsc-dgit
t-refs-same \
- refs/heads/$branch \
`t-v-tag` \
refs/remotes/dgit/dgit/$suite
t-refs-notexist \
git verify-tag `t-v-tag`
}
+t-gbp-pushed-good--unpack () {
+ cd $tmp
+ rm -rf t-unpack
+ mkdir t-unpack
+ cd t-unpack
+ ln -s $tmp/mirror/pool/main/*.orig*.tar* .
+ ln -s $incoming_dsc .
+ ln -s ${incoming_dsc/.dsc/.debian.tar}* .
+ dpkg-source "$@" -x *.dsc
+ cd */.
+ git init
+ git fetch ../../$p "refs/tags/*:refs/tags/*"
+}
+
+t-gbp-pushed-good--checkprep () {
+ git add -Af .
+ git rm --cached -r --ignore-unmatch .pc
+}
+
+t-gbp-pushed-good--checkdiff () {
+ local tag=$1
+ t-gbp-pushed-good--checkprep
+ t-output "" git diff --stat --cached $tag
+}
+
+t-gbp-pushed-good () {
+ local suite=${1:-sid}
+ local dep14tag=refs/tags/test-dummy/${v//\~/_}
+ local dgittag=$(t-v-tag)
+ t-output "" git status --porcelain
+ t-ref-head
+ t-refs-same $dep14tag
+ (set -e; cd $dgitrepo; t-refs-same $dep14tag)
+ git merge-base --is-ancestor $dep14tag $dgittag
+
+ t-refs-same-start
+ t-pushed-good-core
+
+ t-incoming-dsc
+
+ t-gbp-pushed-good--unpack
+ t-gbp-pushed-good--checkdiff $dgittag
+
+ # Right, now we want to check that the maintainer tree and
+ # the dgit tree differ in exactly the ways we expect. We
+ # achieve this by trying to reconstruct the maintainer tree
+ # from the dgit tree.
+
+ # So, unpack it withut the patches applied
+ t-gbp-pushed-good--unpack --skip-patches
+
+ # dgit might have added a .gitignore patch, which we need to
+ # drop and remove
+ perl -i -pe '
+ next unless $_ eq "auto-gitignore\n";
+ die if $counter++;
+ chomp;
+ rename "debian/patches/$_", "../t-auto-gitignore" or die $!;
+ $_ = "";
+ ' debian/patches/series
+
+ # Now the result should differ only in non-debian/ .gitignores
+ t-gbp-pushed-good--checkprep
+ git diff --cached --name-only $dep14tag >../changed
+ perl -ne '
+ next if !m#^debian/# && m#(^|/)\.gitignore#;
+ die "$_ mismatch";
+ ' <../changed
+
+ # If we actually apply the gitignore patch by hand, it
+ # should be perfect:
+ if [ -f ../t-auto-gitignore ]; then
+ patch --backup-if-mismatch -p1 -u <../t-auto-gitignore
+ fi
+ t-gbp-pushed-good--checkdiff $dep14tag
+
+ cd $tmp/$p
+}
+
t-commit-build-push-expect-log () {
local msg=$1
local mpat=$2
t-tstunt dpkg-parsechangelog Dpkg/Changelog/Parse.pm
}
-t-ref-dsc-dgit () {
+t-incoming-dsc () {
local dsc=${p}_${v}.dsc
- local val=`t-822-field $tmp/incoming/$dsc Dgit`
- perl -e '$_=shift @ARGV; die "$dsc Dgit $_ ?" unless m/^\w+\b/;' "$val"
- t-ref-same-val $dsc "$val"
+ incoming_dsc=$tmp/incoming/$dsc
+}
+
+t-ref-dsc-dgit () {
+ t-incoming-dsc
+ local val=`t-822-field $incoming_dsc Dgit`
+ perl -e '$_=shift @ARGV; die "Dgit $_ ?" unless m/^\w+\b/;' "$val"
+ t-ref-same-val $incoming_dsc "$val"
}
t-apply-diff () {
}
t-gbp-example-prep () {
+ t-tstunt-parsechangelog
t-archive example 1.0-1
t-git-none
t-worktree 1.0