summaryrefslogtreecommitdiff
path: root/tests/lib
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2016-09-04 20:47:00 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2016-09-11 18:53:45 +0100
commite677c4ae89b7391b60bca6aab582ccd99b4fa68b (patch)
tree3cc0d0de4fbd315f96d70a67f532473327aa3793 /tests/lib
parent90905e9db641a5843f50c8aa02891ca198d1853a (diff)
Test suite: quilt-gbp: Provide and use t-gbp-pushed-good
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'tests/lib')
-rw-r--r--tests/lib78
1 files changed, 78 insertions, 0 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