From e677c4ae89b7391b60bca6aab582ccd99b4fa68b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 4 Sep 2016 20:47:00 +0100 Subject: [PATCH 1/1] Test suite: quilt-gbp: Provide and use t-gbp-pushed-good Signed-off-by: Ian Jackson --- tests/lib | 78 +++++++++++++++++++++++++++++++++++++++++++ tests/tests/quilt-gbp | 22 ++---------- 2 files changed, 81 insertions(+), 19 deletions(-) diff --git a/tests/lib b/tests/lib index 216ec815..bf3237dc 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 271ea2c7..e528567f 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 -- 2.30.2