summaryrefslogtreecommitdiffstats
path: root/t/recipes/checks/upstream-signature
diff options
context:
space:
mode:
Diffstat (limited to 't/recipes/checks/upstream-signature')
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/build-spec/debian/upstream/signing-key.asc1
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/build-spec/fill-values4
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/eval/desc3
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/eval/hints1
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/build-spec/debian/upstream/signing-key.asc1
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/build-spec/fill-values6
-rwxr-xr-xt/recipes/checks/upstream-signature/control-file-upstream-signature-missing/build-spec/pre-build18
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/eval/desc3
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/eval/hints2
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/debian/upstream/signing-key.asc51
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/fill-values4
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/orig/some-file1
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/upstream/private-key.asc105
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/eval/desc4
-rw-r--r--t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/eval/hints1
-rw-r--r--t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/debian/upstream/signing-key.asc51
-rw-r--r--t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/fill-values3
-rw-r--r--t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/orig/some-file1
-rwxr-xr-xt/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/pre-build.in21
-rw-r--r--t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/upstream/private-key.asc105
-rw-r--r--t/recipes/checks/upstream-signature/doubly-armored-signature/eval/desc3
-rw-r--r--t/recipes/checks/upstream-signature/doubly-armored-signature/eval/hints2
-rw-r--r--t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/debian/upstream/signing-key.asc51
-rw-r--r--t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/fill-values3
-rw-r--r--t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/orig/some-file1
-rwxr-xr-xt/recipes/checks/upstream-signature/explicit-armor-header/build-spec/pre-build.in21
-rw-r--r--t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/upstream/private-key.asc105
-rw-r--r--t/recipes/checks/upstream-signature/explicit-armor-header/eval/desc3
-rw-r--r--t/recipes/checks/upstream-signature/explicit-armor-header/eval/hints2
-rw-r--r--t/recipes/checks/upstream-signature/repeated-signature/build-spec/debian/upstream/signing-key.asc51
-rw-r--r--t/recipes/checks/upstream-signature/repeated-signature/build-spec/fill-values3
-rw-r--r--t/recipes/checks/upstream-signature/repeated-signature/build-spec/orig/some-file1
-rwxr-xr-xt/recipes/checks/upstream-signature/repeated-signature/build-spec/pre-build.in21
-rw-r--r--t/recipes/checks/upstream-signature/repeated-signature/build-spec/upstream/private-key.asc105
-rw-r--r--t/recipes/checks/upstream-signature/repeated-signature/eval/desc3
-rw-r--r--t/recipes/checks/upstream-signature/repeated-signature/eval/hints1
36 files changed, 762 insertions, 0 deletions
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..bd03c4e
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1 @@
+Too lazy to fake this file
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/build-spec/fill-values b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/build-spec/fill-values
new file mode 100644
index 0000000..4329a2f
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: control-file-upstream-signature-missing-dfsg
+Skeleton: upload-non-native
+Version: 1.0+dfsg1-1
+Description: No upstream signature included in DFSG package
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/eval/desc b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/eval/desc
new file mode 100644
index 0000000..f6d2cb0
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/eval/desc
@@ -0,0 +1,3 @@
+Testname: control-file-upstream-signature-missing-dfsg
+Test-Against: orig-tarball-missing-upstream-signature
+Check: upstream-signature
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/eval/hints b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing-dfsg/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..bd03c4e
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1 @@
+Too lazy to fake this file
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/build-spec/fill-values b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/build-spec/fill-values
new file mode 100644
index 0000000..05147bb
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/build-spec/fill-values
@@ -0,0 +1,6 @@
+Testname: control-file-upstream-signature-missing
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: No upstream signature included but package contains a signing key
+Extra-Build-Depends: dpkg (>= 1.18.5)
+# dpkg 1.18.5 required in order to create multiple tarballs with detached signatures
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/build-spec/pre-build b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/build-spec/pre-build
new file mode 100755
index 0000000..93d6006
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/build-spec/pre-build
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -e
+
+DIR="$1"
+NAME="control-file-upstream-signature-missing"
+VERSION="1.0"
+
+# Check all components
+cp ${DIR}/../${NAME}_${VERSION}.orig.tar.gz ${DIR}/../${NAME}_${VERSION}.orig-component.tar.gz
+
+# Don't emit if we have a signature
+cp ${DIR}/../${NAME}_${VERSION}.orig.tar.gz ${DIR}/../${NAME}_${VERSION}.orig-signed.tar.gz
+touch ${DIR}/../${NAME}_${VERSION}.orig-signed.tar.gz.asc
+
+# Don't emit if we have .tar.asc (NB. not a .tar.gz.asc)
+cp ${DIR}/../${NAME}_${VERSION}.orig.tar.gz ${DIR}/../${NAME}_${VERSION}.orig-noext.tar.gz
+touch ${DIR}/../${NAME}_${VERSION}.orig-noext.tar.gz.asc
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/eval/desc b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/eval/desc
new file mode 100644
index 0000000..33a476d
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/eval/desc
@@ -0,0 +1,3 @@
+Testname: control-file-upstream-signature-missing
+Check: upstream-signature
+# dpkg 1.18.5 required in order to create multiple tarballs with detached signatures
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/eval/hints b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/eval/hints
new file mode 100644
index 0000000..c73c5df
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-missing/eval/hints
@@ -0,0 +1,2 @@
+control-file-upstream-signature-missing (source): orig-tarball-missing-upstream-signature control-file-upstream-signature-missing_1.0.orig.tar.gz
+control-file-upstream-signature-missing (source): orig-tarball-missing-upstream-signature control-file-upstream-signature-missing_1.0.orig-component.tar.gz
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..2fb92fa
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1,51 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=8yzS
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/fill-values b/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/fill-values
new file mode 100644
index 0000000..a3cc051
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: control-file-upstream-signature-not-missing
+Skeleton: upload-non-native
+Source-Format: 3.0 (quilt)
+Description: Upstream signature included
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/orig/some-file b/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/orig/some-file
new file mode 100644
index 0000000..6754779
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/orig/some-file
@@ -0,0 +1 @@
+This file is only here to make sure the generated orig.tar.gz is not empty.
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/upstream/private-key.asc b/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/upstream/private-key.asc
new file mode 100644
index 0000000..47cca2a
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/build-spec/upstream/private-key.asc
@@ -0,0 +1,105 @@
+-----BEGIN PGP PRIVATE KEY BLOCK-----
+
+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
+=k21H
+-----END PGP PRIVATE KEY BLOCK-----
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/eval/desc b/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/eval/desc
new file mode 100644
index 0000000..34bced8
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/eval/desc
@@ -0,0 +1,4 @@
+Testname: control-file-upstream-signature-not-missing
+Test-Against:
+ orig-tarball-missing-upstream-signature
+Check: upstream-signature
diff --git a/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/eval/hints b/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/eval/hints
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/control-file-upstream-signature-not-missing/eval/hints
@@ -0,0 +1 @@
+
diff --git a/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..2fb92fa
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1,51 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=8yzS
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/fill-values b/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/fill-values
new file mode 100644
index 0000000..bf681dd
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: doubly-armored-signature
+Skeleton: upload-non-native
+Description: Signature armored twice by accident
diff --git a/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/orig/some-file b/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/orig/some-file
new file mode 100644
index 0000000..6754779
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/orig/some-file
@@ -0,0 +1 @@
+This file is only here to make sure the generated orig.tar.gz is not empty.
diff --git a/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/pre-build.in b/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/pre-build.in
new file mode 100755
index 0000000..15f33dc
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/pre-build.in
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+package=[% $source %]
+upstream_version=[% $upstream_version %]
+origtargz=${package}_${upstream_version}.orig.tar.gz
+
+SIGNATURE="${origtargz}.asc"
+
+# create a temporary file
+TEMPFILE=`mktemp`
+
+# make a copy of signature
+cp "$SIGNATURE" "$TEMPFILE"
+
+# append it again to the existing signature
+cat "$TEMPFILE" | gpg --enarmor > "$SIGNATURE"
+
+# remove temporary file
+rm -f "$TEMPFILE"
diff --git a/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/upstream/private-key.asc b/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/upstream/private-key.asc
new file mode 100644
index 0000000..47cca2a
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/doubly-armored-signature/build-spec/upstream/private-key.asc
@@ -0,0 +1,105 @@
+-----BEGIN PGP PRIVATE KEY BLOCK-----
+
+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
+=k21H
+-----END PGP PRIVATE KEY BLOCK-----
diff --git a/t/recipes/checks/upstream-signature/doubly-armored-signature/eval/desc b/t/recipes/checks/upstream-signature/doubly-armored-signature/eval/desc
new file mode 100644
index 0000000..b51055c
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/doubly-armored-signature/eval/desc
@@ -0,0 +1,3 @@
+Testname: doubly-armored-signature
+Check: upstream-signature
+See-Also: Debian #929436, https://lists.debian.org/debian-devel/2019/04/msg00459.html
diff --git a/t/recipes/checks/upstream-signature/doubly-armored-signature/eval/hints b/t/recipes/checks/upstream-signature/doubly-armored-signature/eval/hints
new file mode 100644
index 0000000..b245133
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/doubly-armored-signature/eval/hints
@@ -0,0 +1,2 @@
+doubly-armored-signature (source): spurious-fields-in-upstream-signature doubly-armored-signature_1.0.orig.tar.gz.asc Comment
+doubly-armored-signature (source): doubly-armored-upstream-signature doubly-armored-signature_1.0.orig.tar.gz.asc
diff --git a/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..2fb92fa
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1,51 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=8yzS
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/fill-values b/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/fill-values
new file mode 100644
index 0000000..3dc755a
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: explicit-armor-header
+Skeleton: upload-non-native
+Description: Signature armored using gpg --enarmor
diff --git a/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/orig/some-file b/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/orig/some-file
new file mode 100644
index 0000000..6754779
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/orig/some-file
@@ -0,0 +1 @@
+This file is only here to make sure the generated orig.tar.gz is not empty.
diff --git a/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/pre-build.in b/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/pre-build.in
new file mode 100755
index 0000000..cbb2ea7
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/pre-build.in
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+package=[% $source %]
+upstream_version=[% $upstream_version %]
+origtargz=${package}_${upstream_version}.orig.tar.gz
+
+SIGNATURE="${origtargz}.asc"
+
+# create a temporary file
+TEMPFILE=`mktemp`
+
+# make a copy of signature
+gpg --dearmor "$SIGNATURE" > "$TEMPFILE"
+
+# append it again to the existing signature
+cat "$TEMPFILE" | gpg --enarmor > "$SIGNATURE"
+
+# remove temporary file
+rm -f "$TEMPFILE"
diff --git a/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/upstream/private-key.asc b/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/upstream/private-key.asc
new file mode 100644
index 0000000..47cca2a
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/explicit-armor-header/build-spec/upstream/private-key.asc
@@ -0,0 +1,105 @@
+-----BEGIN PGP PRIVATE KEY BLOCK-----
+
+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
+=k21H
+-----END PGP PRIVATE KEY BLOCK-----
diff --git a/t/recipes/checks/upstream-signature/explicit-armor-header/eval/desc b/t/recipes/checks/upstream-signature/explicit-armor-header/eval/desc
new file mode 100644
index 0000000..bf2bac8
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/explicit-armor-header/eval/desc
@@ -0,0 +1,3 @@
+Testname: explicit-armor-header
+Check: upstream-signature
+See-Also: Debian #929436, https://lists.debian.org/debian-devel/2019/04/msg00459.html
diff --git a/t/recipes/checks/upstream-signature/explicit-armor-header/eval/hints b/t/recipes/checks/upstream-signature/explicit-armor-header/eval/hints
new file mode 100644
index 0000000..3df021a
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/explicit-armor-header/eval/hints
@@ -0,0 +1,2 @@
+explicit-armor-header (source): spurious-fields-in-upstream-signature explicit-armor-header_1.0.orig.tar.gz.asc Comment
+explicit-armor-header (source): explicitly-armored-upstream-signature explicit-armor-header_1.0.orig.tar.gz.asc
diff --git a/t/recipes/checks/upstream-signature/repeated-signature/build-spec/debian/upstream/signing-key.asc b/t/recipes/checks/upstream-signature/repeated-signature/build-spec/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..2fb92fa
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/repeated-signature/build-spec/debian/upstream/signing-key.asc
@@ -0,0 +1,51 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=8yzS
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/t/recipes/checks/upstream-signature/repeated-signature/build-spec/fill-values b/t/recipes/checks/upstream-signature/repeated-signature/build-spec/fill-values
new file mode 100644
index 0000000..2b5ce1b
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/repeated-signature/build-spec/fill-values
@@ -0,0 +1,3 @@
+Testname: repeated-signature
+Skeleton: upload-non-native
+Description: Upstream signature included
diff --git a/t/recipes/checks/upstream-signature/repeated-signature/build-spec/orig/some-file b/t/recipes/checks/upstream-signature/repeated-signature/build-spec/orig/some-file
new file mode 100644
index 0000000..6754779
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/repeated-signature/build-spec/orig/some-file
@@ -0,0 +1 @@
+This file is only here to make sure the generated orig.tar.gz is not empty.
diff --git a/t/recipes/checks/upstream-signature/repeated-signature/build-spec/pre-build.in b/t/recipes/checks/upstream-signature/repeated-signature/build-spec/pre-build.in
new file mode 100755
index 0000000..61c331a
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/repeated-signature/build-spec/pre-build.in
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+package=[% $source %]
+upstream_version=[% $upstream_version %]
+origtargz=${package}_${upstream_version}.orig.tar.gz
+
+SIGNATURE="${origtargz}.asc"
+
+# create a temporary file
+TEMPFILE=`mktemp`
+
+# make a copy of signature
+cp "$SIGNATURE" "$TEMPFILE"
+
+# append it again to the existing signature
+cat "$TEMPFILE" >> "$SIGNATURE"
+
+# remove temporary file
+rm -f "$TEMPFILE"
diff --git a/t/recipes/checks/upstream-signature/repeated-signature/build-spec/upstream/private-key.asc b/t/recipes/checks/upstream-signature/repeated-signature/build-spec/upstream/private-key.asc
new file mode 100644
index 0000000..47cca2a
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/repeated-signature/build-spec/upstream/private-key.asc
@@ -0,0 +1,105 @@
+-----BEGIN PGP PRIVATE KEY BLOCK-----
+
+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
+=k21H
+-----END PGP PRIVATE KEY BLOCK-----
diff --git a/t/recipes/checks/upstream-signature/repeated-signature/eval/desc b/t/recipes/checks/upstream-signature/repeated-signature/eval/desc
new file mode 100644
index 0000000..16c7066
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/repeated-signature/eval/desc
@@ -0,0 +1,3 @@
+Testname: repeated-signature
+Check: upstream-signature
+See-Also: Debian #929436, https://lists.debian.org/debian-devel/2019/04/msg00459.html
diff --git a/t/recipes/checks/upstream-signature/repeated-signature/eval/hints b/t/recipes/checks/upstream-signature/repeated-signature/eval/hints
new file mode 100644
index 0000000..f690bfc
--- /dev/null
+++ b/t/recipes/checks/upstream-signature/repeated-signature/eval/hints
@@ -0,0 +1 @@
+repeated-signature (source): concatenated-upstream-signatures repeated-signature_1.0.orig.tar.gz.asc