summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/lib78
-rwxr-xr-xtests/tests/quilt-gbp22
2 files changed, 81 insertions, 19 deletions
diff --git a/tests/lib b/tests/lib
index 216ec81..bf3237d 100644
--- a/tests/lib
+++ b/tests/lib
@@ -566,6 +566,84 @@ t-pushed-good-core () {
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
+ 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
diff --git a/tests/tests/quilt-gbp b/tests/tests/quilt-gbp
index 271ea2c..e528567 100755
--- a/tests/tests/quilt-gbp
+++ b/tests/tests/quilt-gbp
@@ -4,6 +4,8 @@ set -e
t-tstunt-parsechangelog
+t-newtag
+
t-gbp-example-prep
t-expect-fail 'quilt fixup cannot be linear' \
@@ -30,7 +32,7 @@ t-ref-head
t-dgit --quilt=gbp push
-t-ref-head
+t-gbp-pushed-good
exit 0
@@ -38,24 +40,6 @@ exit 0
want to
- t-pushed-good XXX need to do something more subtle than check our branch is in repo now:
-
- # check that:
- # working tree is still clean
- # DEP-14 tag refers to our HEAD, unchanged
- # New dgit tag refers to a descendant
- # New dgit tag and archive tag and .dsc hash are same
- # dgit tree can be made by
- # - dpkg-source -x on the pushed .dsc
- # - modulo .pc
- # Maintainer tree can be made by
- # - dpkg-source -x --skip-patches on the pushed .dsc
- # - deleting any auto-gitignore patch and removing it from series
- # - modulo .pc
- # dgit tree can be made by
- # - as above, and then dpkg-source --before-build
- # - modulo .pc and non-debian/ .gitignores
-
make a new change
push it